diff --git a/plat/nvidia/tegra/common/tegra_pm.c b/plat/nvidia/tegra/common/tegra_pm.c index 2805272712c0c8f642f7f5b076196a090b432864..fbc0f11688e31bbf65796ae22c8d33b18f0ae1bc 100644 --- a/plat/nvidia/tegra/common/tegra_pm.c +++ b/plat/nvidia/tegra/common/tegra_pm.c @@ -41,6 +41,7 @@ uint8_t tegra_fake_system_suspend; * provide typical implementations that will be overridden by a SoC. */ #pragma weak tegra_soc_pwr_domain_suspend_pwrdown_early +#pragma weak tegra_soc_cpu_standby #pragma weak tegra_soc_pwr_domain_suspend #pragma weak tegra_soc_pwr_domain_on #pragma weak tegra_soc_pwr_domain_off @@ -55,6 +56,12 @@ int32_t tegra_soc_pwr_domain_suspend_pwrdown_early(const psci_power_state_t *tar return PSCI_E_NOT_SUPPORTED; } +int32_t tegra_soc_cpu_standby(plat_local_state_t cpu_state) +{ + (void)cpu_state; + return PSCI_E_SUCCESS; +} + int32_t tegra_soc_pwr_domain_suspend(const psci_power_state_t *target_state) { (void)target_state; @@ -141,6 +148,10 @@ void tegra_cpu_standby(plat_local_state_t cpu_state) { (void)cpu_state; + /* Tegra SoC specific handler */ + if (tegra_soc_cpu_standby(cpu_state) != PSCI_E_SUCCESS) + ERROR("%s failed\n", __func__); + /* * Enter standby state * dsb is good practice before using wfi to enter low power states diff --git a/plat/nvidia/tegra/include/tegra_private.h b/plat/nvidia/tegra/include/tegra_private.h index 68b462425e014f3996ab5dc251be5d460cf72d64..40aeaf85f1ac7208aaeca825f09dcb4fb88d0d5e 100644 --- a/plat/nvidia/tegra/include/tegra_private.h +++ b/plat/nvidia/tegra/include/tegra_private.h @@ -97,6 +97,7 @@ 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); +int32_t tegra_soc_cpu_standby(plat_local_state_t cpu_state); int32_t tegra_soc_pwr_domain_suspend(const psci_power_state_t *target_state); int32_t tegra_soc_pwr_domain_on(u_register_t mpidr); int32_t tegra_soc_pwr_domain_off(const psci_power_state_t *target_state);