From: Santosh Shilimkar <santosh.shilimkar@xxxxxx> OMAP4430 ES2 has additional bitfields in PWRSTST register which help identify the previous power state entered by the powerdomain. Add pwrdm_clear_all_prev_pwrst api to support this. The context register is seperate and needs to be cleared as well Signed-off-by: Santosh Shilimkar <santosh.shilimkar@xxxxxx> Signed-off-by: Rajendra Nayak <rnayak@xxxxxx> --- arch/arm/mach-omap2/powerdomains44xx.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/powerdomains44xx.c b/arch/arm/mach-omap2/powerdomains44xx.c index 3c4b060..7248647 100644 --- a/arch/arm/mach-omap2/powerdomains44xx.c +++ b/arch/arm/mach-omap2/powerdomains44xx.c @@ -44,6 +44,19 @@ int omap4_pwrdm_read_prev_pwrst(struct powerdomain *pwrdm) OMAP4430_LASTPOWERSTATEENTERED_MASK); } +int omap4_pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm) +{ + u32 reg; + + omap4_prm_rmw_mod_reg_bits(OMAP4430_LASTPOWERSTATEENTERED_MASK, + 0x3 << OMAP4430_LASTPOWERSTATEENTERED_SHIFT, + pwrdm->prcm_offs, OMAP4_PM_PWSTST); + reg = omap4_prm_read_mod_reg(pwrdm->prcm_offs, pwrdm->context_offset); + omap4_prm_write_mod_reg(reg, pwrdm->prcm_offs, pwrdm->context_offset); + + return 0; +} + int omap4_pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm) { omap4_prm_rmw_mod_reg_bits(OMAP4430_LOWPOWERSTATECHANGE_MASK, @@ -151,6 +164,7 @@ struct pwrdm_functions omap4_pwrdm_functions = { .pwrdm_read_next_pwrst = omap4_pwrdm_read_next_pwrst, .pwrdm_read_pwrst = omap4_pwrdm_read_pwrst, .pwrdm_read_prev_pwrst = omap4_pwrdm_read_prev_pwrst, + .pwrdm_clear_all_prev_pwrst = omap4_pwrdm_clear_all_prev_pwrst, .pwrdm_set_lowpwrstchange = omap4_pwrdm_set_lowpwrstchange, .pwrdm_set_logic_retst = omap4_pwrdm_set_logic_retst, .pwrdm_read_logic_pwrst = omap4_pwrdm_read_logic_pwrst, -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html