diff options
Diffstat (limited to 'arch/arm/mach-highbank/sysregs.h')
| -rw-r--r-- | arch/arm/mach-highbank/sysregs.h | 23 | 
1 files changed, 19 insertions, 4 deletions
diff --git a/arch/arm/mach-highbank/sysregs.h b/arch/arm/mach-highbank/sysregs.h index e13e8ea7c6c..70af9d13fce 100644 --- a/arch/arm/mach-highbank/sysregs.h +++ b/arch/arm/mach-highbank/sysregs.h @@ -44,28 +44,43 @@ static inline void highbank_set_core_pwr(void)  		writel_relaxed(1, sregs_base + SREG_CPU_PWR_CTRL(cpu));  } -static inline void hignbank_set_pwr_suspend(void) +static inline void highbank_clear_core_pwr(void) +{ +	int cpu = cpu_logical_map(smp_processor_id()); +	if (scu_base_addr) +		scu_power_mode(scu_base_addr, SCU_PM_NORMAL); +	else +		writel_relaxed(0, sregs_base + SREG_CPU_PWR_CTRL(cpu)); +} + +static inline void highbank_set_pwr_suspend(void)  {  	writel(HB_PWR_SUSPEND, sregs_base + HB_SREG_A9_PWR_REQ);  	highbank_set_core_pwr();  } -static inline void hignbank_set_pwr_shutdown(void) +static inline void highbank_set_pwr_shutdown(void)  {  	writel(HB_PWR_SHUTDOWN, sregs_base + HB_SREG_A9_PWR_REQ);  	highbank_set_core_pwr();  } -static inline void hignbank_set_pwr_soft_reset(void) +static inline void highbank_set_pwr_soft_reset(void)  {  	writel(HB_PWR_SOFT_RESET, sregs_base + HB_SREG_A9_PWR_REQ);  	highbank_set_core_pwr();  } -static inline void hignbank_set_pwr_hard_reset(void) +static inline void highbank_set_pwr_hard_reset(void)  {  	writel(HB_PWR_HARD_RESET, sregs_base + HB_SREG_A9_PWR_REQ);  	highbank_set_core_pwr();  } +static inline void highbank_clear_pwr_request(void) +{ +	writel(~0UL, sregs_base + HB_SREG_A9_PWR_REQ); +	highbank_clear_core_pwr(); +} +  #endif  |