diff options
Diffstat (limited to 'plat/qti/common/src/qti_pm.c')
-rw-r--r-- | plat/qti/common/src/qti_pm.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/plat/qti/common/src/qti_pm.c b/plat/qti/common/src/qti_pm.c index 4a5877c5b0..5f1b7aa1dc 100644 --- a/plat/qti/common/src/qti_pm.c +++ b/plat/qti/common/src/qti_pm.c @@ -9,6 +9,8 @@ #include <arch_helpers.h> #include <bl31/bl31.h> #include <common/debug.h> +#include <drivers/delay_timer.h> +#include <lib/mmio.h> #include <lib/psci/psci.h> #include <platform.h> @@ -204,14 +206,25 @@ __dead2 void qti_domain_power_down_wfi(const psci_power_state_t *target_state) /* We should never reach here */ } +static __dead2 void assert_ps_hold(void) +{ + mmio_write_32(QTI_PS_HOLD_REG, 0); + mdelay(1000); + + /* Should be dead before reaching this. */ + panic(); +} + __dead2 void qti_system_off(void) { - qtiseclib_psci_system_off(); + qti_pmic_prepare_shutdown(); + assert_ps_hold(); } __dead2 void qti_system_reset(void) { - qtiseclib_psci_system_reset(); + qti_pmic_prepare_reset(); + assert_ps_hold(); } void qti_get_sys_suspend_power_state(psci_power_state_t *req_state) |