On 11/2/2012 6:02 PM, Vaibhav Bedia wrote: > WKUP-M3 has a reset status bit (RM_WKUP_STST.WKUP_M3_LRST) > Update the hardreset API to take care of the same to ensure > that the reset line properly deasserted. > Thanks for the patch, comments below - > Signed-off-by: Vaibhav Bedia <vaibhav.bedia@xxxxxx> > --- > arch/arm/mach-omap2/omap_hwmod.c | 5 +---- > arch/arm/mach-omap2/prm33xx.c | 15 +++++++-------- > arch/arm/mach-omap2/prm33xx.h | 2 +- > 3 files changed, 9 insertions(+), 13 deletions(-) > > diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c > index 37eeb45..a1d5835 100644 > --- a/arch/arm/mach-omap2/omap_hwmod.c > +++ b/arch/arm/mach-omap2/omap_hwmod.c > @@ -2944,11 +2944,8 @@ static int _am33xx_assert_hardreset(struct omap_hwmod *oh, > static int _am33xx_deassert_hardreset(struct omap_hwmod *oh, > struct omap_hwmod_rst_info *ohri) > { > - if (ohri->st_shift) > - pr_err("omap_hwmod: %s: %s: hwmod data error: OMAP4 does not support st_shift\n", > - oh->name, ohri->name); > - > return am33xx_prm_deassert_hardreset(ohri->rst_shift, > + ohri->st_shift, > oh->clkdm->pwrdm.ptr->prcm_offs, > oh->prcm.omap4.rstctrl_offs, > oh->prcm.omap4.rstst_offs); > diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c > index 53ec9cb..0f29cb9 100644 > --- a/arch/arm/mach-omap2/prm33xx.c > +++ b/arch/arm/mach-omap2/prm33xx.c > @@ -112,23 +112,22 @@ int am33xx_prm_assert_hardreset(u8 shift, s16 inst, u16 rstctrl_offs) > * -EINVAL upon an argument error, -EEXIST if the submodule was already out > * of reset, or -EBUSY if the submodule did not exit reset promptly. > */ > -int am33xx_prm_deassert_hardreset(u8 shift, s16 inst, > +int am33xx_prm_deassert_hardreset(u8 shift, u8 st_shift, s16 inst, > u16 rstctrl_offs, u16 rstst_offs) > { > int c; > - u32 mask = 1 << shift; > - > - /* Check the current status to avoid de-asserting the line twice */ > - if (am33xx_prm_is_hardreset_asserted(shift, inst, rstctrl_offs) == 0) > - return -EEXIST; Any specific reason why you have removed this check? Thanks, Vaibhav > + u32 mask = 1 << st_shift; > > /* Clear the reset status by writing 1 to the status bit */ > am33xx_prm_rmw_reg_bits(0xffffffff, mask, inst, rstst_offs); > + > /* de-assert the reset control line */ > + mask = 1 << shift; > + > am33xx_prm_rmw_reg_bits(mask, 0, inst, rstctrl_offs); > - /* wait the status to be set */ > > - omap_test_timeout(am33xx_prm_is_hardreset_asserted(shift, inst, > + /* wait the status to be set */ > + omap_test_timeout(am33xx_prm_is_hardreset_asserted(st_shift, inst, > rstst_offs), > MAX_MODULE_HARDRESET_WAIT, c); > > diff --git a/arch/arm/mach-omap2/prm33xx.h b/arch/arm/mach-omap2/prm33xx.h > index 3f25c56..181fdab 100644 > --- a/arch/arm/mach-omap2/prm33xx.h > +++ b/arch/arm/mach-omap2/prm33xx.h > @@ -124,6 +124,6 @@ extern void am33xx_prm_global_warm_sw_reset(void); > extern int am33xx_prm_is_hardreset_asserted(u8 shift, s16 inst, > u16 rstctrl_offs); > extern int am33xx_prm_assert_hardreset(u8 shift, s16 inst, u16 rstctrl_offs); > -extern int am33xx_prm_deassert_hardreset(u8 shift, s16 inst, > +extern int am33xx_prm_deassert_hardreset(u8 shift, u8 st_shift, s16 inst, > u16 rstctrl_offs, u16 rstst_offs); > #endif > -- 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