diff options
author | Caesar Wang <wxt@rock-chips.com> | 2016-08-17 17:22:10 -0700 |
---|---|---|
committer | Caesar Wang <wxt@rock-chips.com> | 2016-08-25 12:29:43 +0800 |
commit | bdb2763d64e41a2a18f7ec77b51a2e69ebb512e1 (patch) | |
tree | 67574b563057f7eeee1a18c097c5713902c856a9 /plat/rockchip/common | |
parent | b3464232513bc9cb3572a0b42a7cf6dcde8ec255 (diff) |
rockchip: handle some interrupt before enter power mode for rk3399
For the PMU design, we don't expect to get the interrupts before enter
the power mode. Since that will cause the confusion for the state
machine in the power mode.
Change-Id: Id8dee79ae617a66271b5caf92caf35f520f45099
Diffstat (limited to 'plat/rockchip/common')
-rw-r--r-- | plat/rockchip/common/include/plat_private.h | 1 | ||||
-rw-r--r-- | plat/rockchip/common/plat_pm.c | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/plat/rockchip/common/include/plat_private.h b/plat/rockchip/common/include/plat_private.h index 71998998..b9b634e7 100644 --- a/plat/rockchip/common/include/plat_private.h +++ b/plat/rockchip/common/include/plat_private.h @@ -56,6 +56,7 @@ struct rockchip_pm_ops_cb { int (*sys_pwr_dm_resume)(void); void (*sys_gbl_soft_reset)(void) __dead2; void (*system_off)(void) __dead2; + void (*sys_pwr_down_wfi)(const psci_power_state_t *state_info) __dead2; }; /****************************************************************************** diff --git a/plat/rockchip/common/plat_pm.c b/plat/rockchip/common/plat_pm.c index b6291bbf..7372fcff 100644 --- a/plat/rockchip/common/plat_pm.c +++ b/plat/rockchip/common/plat_pm.c @@ -311,6 +311,18 @@ static void __dead2 rockchip_system_poweroff(void) rockchip_ops->system_off(); } +static void +__dead2 rockchip_pwr_domain_pwr_down_wfi(const psci_power_state_t *target_state) +{ + if ((RK_CORE_PWR_STATE(target_state) == PLAT_MAX_OFF_STATE) && + (rockchip_ops)) { + if (RK_SYSTEM_PWR_STATE(target_state) == PLAT_MAX_OFF_STATE && + rockchip_ops->sys_pwr_down_wfi) + rockchip_ops->sys_pwr_down_wfi(target_state); + } + psci_power_down_wfi(); +} + /******************************************************************************* * Export the platform handlers via plat_rockchip_psci_pm_ops. The rockchip * standard @@ -323,6 +335,7 @@ const plat_psci_ops_t plat_rockchip_psci_pm_ops = { .pwr_domain_suspend = rockchip_pwr_domain_suspend, .pwr_domain_on_finish = rockchip_pwr_domain_on_finish, .pwr_domain_suspend_finish = rockchip_pwr_domain_suspend_finish, + .pwr_domain_pwr_down_wfi = rockchip_pwr_domain_pwr_down_wfi, .system_reset = rockchip_system_reset, .system_off = rockchip_system_poweroff, .validate_power_state = rockchip_validate_power_state, |