[RFC PATCH] ARM: OMAP2+: Fix updating of sysconfig register

Tero Kristo t-kristo at ti.com
Tue Mar 1 23:38:43 PST 2016


On 03/02/2016 05:36 AM, Lokesh Vutla wrote:
>
>
> On Tuesday 01 March 2016 10:33 PM, Paul Walmsley wrote:
>> + Jon Hunter
>>
>> On Tue, 1 Mar 2016, Lokesh Vutla wrote:
>>
>>> commit 127500ccb766f ("ARM: OMAP2+: Only write the sysconfig on idle
>>> when necessary") talks about verification of sysconfig cache value before
>>> updating it, only during idle path. But the patch is adding the
>>> verification in the enable path. So, adding the check in a proper place
>>> as per the commit description.
>>>
>>> Not keeping this check during enable path as there is a chance of losing
>>> context and it is safe to do on idle as the context of the register will
>>> never be lost while the device is active.
>
> When the patch was originally posted[1], this check was in proper place
> itself. Not sure what happened after that.

Looks like a merge conflict to me.

The patch from Lokesh fixes it, so:

Acked-by: Tero Kristo <t-kristo at ti.com>

>
> [1] https://www.mail-archive.com/linux-omap%40vger.kernel.org/msg78032.html
>
> Thanks and regards,
> Lokesh
>
>>>
>>> Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com>
>>> ---
>>>   arch/arm/mach-omap2/omap_hwmod.c | 8 ++++----
>>>   1 file changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
>>> index e9f65fe..71b3747 100644
>>> --- a/arch/arm/mach-omap2/omap_hwmod.c
>>> +++ b/arch/arm/mach-omap2/omap_hwmod.c
>>> @@ -1416,9 +1416,7 @@ static void _enable_sysc(struct omap_hwmod *oh)
>>>   	    (sf & SYSC_HAS_CLOCKACTIVITY))
>>>   		_set_clockactivity(oh, oh->class->sysc->clockact, &v);
>>>
>>> -	/* If the cached value is the same as the new value, skip the write */
>>> -	if (oh->_sysc_cache != v)
>>> -		_write_sysconfig(v, oh);
>>> +	_write_sysconfig(v, oh);
>>>
>>>   	/*
>>>   	 * Set the autoidle bit only after setting the smartidle bit
>>> @@ -1481,7 +1479,9 @@ static void _idle_sysc(struct omap_hwmod *oh)
>>>   		_set_master_standbymode(oh, idlemode, &v);
>>>   	}
>>>
>>> -	_write_sysconfig(v, oh);
>>> +	/* If the cached value is the same as the new value, skip the write */
>>> +	if (oh->_sysc_cache != v)
>>> +		_write_sysconfig(v, oh);
>>>   }
>>>
>>>   /**
>>> --
>>> 2.1.4
>>>
>>
>>
>> - Paul
>>




More information about the linux-arm-kernel mailing list