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.be...@ti.com>
> ---
>  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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to