[PATCH 1/2] ARM: omap: hwmod: Restore sysc after a reset
Rajendra Nayak
rnayak at ti.com
Thu Apr 5 03:11:26 EDT 2012
On Wednesday 04 April 2012 09:11 PM, Paul Walmsley wrote:
> On Tue, 13 Mar 2012, Rajendra Nayak wrote:
>
>> After a softreset, make sure the sysc settings are correctly
>> restored.
>>
>> Reported-by: Anand Gadiyar<gadiyar at ti.com>
>> Signed-off-by: Rajendra Nayak<rnayak at ti.com>
>> Cc: Benoit Cousson<b-cousson at ti.com>
>> Cc: Paul Walmsley<paul at pwsan.com>
>> Cc: Shubhrajyoti D<shubhrajyoti at ti.com>
>
> Thanks, this patch has been modified a bit to consolidate the SYSCONFIG
> reload after _reset() into the _reset() function itself. This should
> hopefully avoid future mistakes and avoid some code duplication. Modified
> patch follows, queued for 3.4-rc.
Thanks, changes look good.
>
>
> - Paul
>
>
> From: Rajendra Nayak<rnayak at ti.com>
> Date: Tue, 13 Mar 2012 22:55:23 +0530
> Subject: [PATCH] ARM: OMAP2+: hwmod: Restore sysc after a reset
>
> After a softreset, make sure the sysc settings are correctly
> restored.
>
> Reported-by: Anand Gadiyar<gadiyar at ti.com>
> Signed-off-by: Rajendra Nayak<rnayak at ti.com>
> Cc: Benoit Cousson<b-cousson at ti.com>
> Cc: Paul Walmsley<paul at pwsan.com>
> Cc: Shubhrajyoti D<shubhrajyoti at ti.com>
> [paul at pwsan.com: combined post-reset SYSCONFIG reload code into the
> _reset() function to avoid duplication and future mistakes]
> Signed-off-by: Paul Walmsley<paul at pwsan.com>
> ---
> arch/arm/mach-omap2/omap_hwmod.c | 18 ++++++------------
> 1 file changed, 6 insertions(+), 12 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
> index 5a68010..d32c1ce 100644
> --- a/arch/arm/mach-omap2/omap_hwmod.c
> +++ b/arch/arm/mach-omap2/omap_hwmod.c
> @@ -1477,6 +1477,11 @@ static int _reset(struct omap_hwmod *oh)
>
> ret = (oh->class->reset) ? oh->class->reset(oh) : _ocp_softreset(oh);
>
> + if (oh->class->sysc) {
> + _update_sysc_cache(oh);
> + _enable_sysc(oh);
> + }
> +
> return ret;
> }
>
> @@ -1786,20 +1791,9 @@ static int _setup(struct omap_hwmod *oh, void *data)
> return 0;
> }
>
> - if (!(oh->flags& HWMOD_INIT_NO_RESET)) {
> + if (!(oh->flags& HWMOD_INIT_NO_RESET))
> _reset(oh);
>
> - /*
> - * OCP_SYSCONFIG bits need to be reprogrammed after a softreset.
> - * The _enable() function should be split to
> - * avoid the rewrite of the OCP_SYSCONFIG register.
> - */
> - if (oh->class->sysc) {
> - _update_sysc_cache(oh);
> - _enable_sysc(oh);
> - }
> - }
> -
> postsetup_state = oh->_postsetup_state;
> if (postsetup_state == _HWMOD_STATE_UNKNOWN)
> postsetup_state = _HWMOD_STATE_ENABLED;
More information about the linux-arm-kernel
mailing list