From cf489bf1184355bb6b2d0ee2e6a1dcc505e008b9 Mon Sep 17 00:00:00 2001 From: Vignesh Radhakrishnan Date: Thu, 25 May 2017 10:31:42 -0700 Subject: [PATCH] Revert "Tegra: Add support for fake system suspend" This reverts commit c41df8fda84b9bc56bbb2347fb902f64b1bb557e Fake system suspend relies on software running on EL3 to trigger a warm reset. Revert enabling fake system suspend, as the software running on El3 is not allowed to trigger a warm reset. Change-Id: I6035f2a7bcb0a4ad50a62c5bc5239226c625ee5e Signed-off-by: Vignesh Radhakrishnan --- plat/nvidia/tegra/common/tegra_pm.c | 31 +--------------------- plat/nvidia/tegra/common/tegra_sip_calls.c | 26 ------------------ plat/nvidia/tegra/include/tegra_private.h | 2 -- 3 files changed, 1 insertion(+), 58 deletions(-) diff --git a/plat/nvidia/tegra/common/tegra_pm.c b/plat/nvidia/tegra/common/tegra_pm.c index 8ba02d6f5..a8c70eaa5 100644 --- a/plat/nvidia/tegra/common/tegra_pm.c +++ b/plat/nvidia/tegra/common/tegra_pm.c @@ -27,14 +27,6 @@ extern uint64_t tegra_bl31_phys_base; extern uint64_t tegra_sec_entry_point; -/* - * tegra_fake_system_suspend acts as a boolean var controlling whether - * we are going to take fake system suspend code or normal system suspend code - * path. This variable is set inside the sip call handlers,when the kernel - * requests a SIP call to set the suspend debug flags. - */ -uint8_t tegra_fake_system_suspend; - /* * The following platform setup functions are weakly defined. They * provide typical implementations that will be overridden by a SoC. @@ -233,31 +225,10 @@ void tegra_pwr_domain_suspend(const psci_power_state_t *target_state) __dead2 void tegra_pwr_domain_power_down_wfi(const psci_power_state_t *target_state) { - uint8_t pwr_state = target_state->pwr_domain_state[PLAT_MAX_PWR_LVL]; - uint64_t rmr_el3 = 0; - /* call the chip's power down handler */ (void)tegra_soc_pwr_domain_power_down_wfi(target_state); - /* - * If we are in fake system suspend mode, ensure we start doing - * procedures that help in looping back towards system suspend exit - * instead of calling WFI by requesting a warm reset. - * Else, just call WFI to enter low power state. - */ - if ((tegra_fake_system_suspend != 0U) && - (pwr_state == (uint8_t)PSTATE_ID_SOC_POWERDN)) { - - /* warm reboot */ - rmr_el3 = read_rmr_el3(); - write_rmr_el3(rmr_el3 | RMR_WARM_RESET_CPU); - - } else { - /* enter power down state */ - wfi(); - } - - /* we can never reach here */ + wfi(); panic(); } diff --git a/plat/nvidia/tegra/common/tegra_sip_calls.c b/plat/nvidia/tegra/common/tegra_sip_calls.c index 957300e53..b8ba09562 100644 --- a/plat/nvidia/tegra/common/tegra_sip_calls.c +++ b/plat/nvidia/tegra/common/tegra_sip_calls.c @@ -24,12 +24,6 @@ #define TEGRA_SIP_NEW_VIDEOMEM_REGION 0x82000003 #define TEGRA_SIP_FIQ_NS_ENTRYPOINT 0x82000005 #define TEGRA_SIP_FIQ_NS_GET_CONTEXT 0x82000006 -#define TEGRA_SIP_ENABLE_FAKE_SYSTEM_SUSPEND 0xC2000007 - -/******************************************************************************* - * Fake system suspend mode control var - ******************************************************************************/ -extern uint8_t tegra_fake_system_suspend; /******************************************************************************* * SoC specific SiP handler @@ -162,26 +156,6 @@ uintptr_t tegra_sip_handler(uint32_t smc_fid, SMC_RET0(handle); - case TEGRA_SIP_ENABLE_FAKE_SYSTEM_SUSPEND: - /* - * System suspend fake mode is set if we are on VDK and we make - * a debug SIP call. This mode ensures that we excercise debug - * path instead of the regular code path to suit the pre-silicon - * platform needs. These include replacing the call to WFI by - * a warm reset request. - */ - if (tegra_platform_is_virt_dev_kit() != false) { - - tegra_fake_system_suspend = 1; - SMC_RET1(handle, 0); - } - - /* - * We return to the external world as if this SIP is not - * implemented in case, we are not running on VDK. - */ - break; - default: ERROR("%s: unhandled SMC (0x%x)\n", __func__, smc_fid); break; diff --git a/plat/nvidia/tegra/include/tegra_private.h b/plat/nvidia/tegra/include/tegra_private.h index 34a096cfb..fab0eafc3 100644 --- a/plat/nvidia/tegra/include/tegra_private.h +++ b/plat/nvidia/tegra/include/tegra_private.h @@ -97,8 +97,6 @@ void tegra_security_setup(void); void tegra_security_setup_videomem(uintptr_t base, uint64_t size); /* Declarations for tegra_pm.c */ -extern uint8_t tegra_fake_system_suspend; - void tegra_pm_system_suspend_entry(void); void tegra_pm_system_suspend_exit(void); int32_t tegra_system_suspended(void);