2012-08-02 07:52:51

by Paul Walmsley

[permalink] [raw]
Subject: Re: [PATCH 2/3] ARM: OMAP: hwmod: revise deassert sequence

Hello OMar,

On Mon, 16 Jul 2012, Omar Ramirez Luna wrote:

> For a reset sequence to complete cleanly, a module needs its
> associated clocks to be enabled, otherwise the timeout check
> in prcm code can print a false failure (failed to hardreset)
> that occurs because the clocks aren't powered ON and the status
> bit checked can't transition without them.
>
> Signed-off-by: Omar Ramirez Luna <[email protected]>

Is enabling the clocks sufficient? Or do we also need to enable the
IP block, e.g. by calling

if (soc_ops.enable_module)
soc_ops.enable_module(oh);

as we do on OMAP4+ in _enable() ?


- Paul


2012-08-02 22:20:32

by Omar Ramirez Luna

[permalink] [raw]
Subject: Re: [PATCH 2/3] ARM: OMAP: hwmod: revise deassert sequence

Hi.

On 2 August 2012 02:52, Paul Walmsley <[email protected]> wrote:
> On Mon, 16 Jul 2012, Omar Ramirez Luna wrote:
>
>> For a reset sequence to complete cleanly, a module needs its
>> associated clocks to be enabled, otherwise the timeout check
>> in prcm code can print a false failure (failed to hardreset)
>> that occurs because the clocks aren't powered ON and the status
>> bit checked can't transition without them.
>>
>> Signed-off-by: Omar Ramirez Luna <[email protected]>
>
> Is enabling the clocks sufficient?

During my testing it seemed enough, besides it looks clk framework is
doing the same as _omap4_enable_module.

> Or do we also need to enable the
> IP block, e.g. by calling
>
> if (soc_ops.enable_module)
> soc_ops.enable_module(oh);
>
> as we do on OMAP4+ in _enable() ?

Basically this is a call to _omap4_enable_module, and the latter will
"Enable the modulemode inside CLKCTRL".

However, _enable_clocks path which ends calling omap2_dflt_clk_enable
does the same thing with its clk->enable_reg field.

So in _enable:

_enable_clocks(oh);
if (soc_ops.enable_module)
soc_ops.enable_module(oh);

The enable_module part seems redundant to me, since the module should
be already enabled by the first call to _enable_clocks.

Regards,

Omar

2012-08-03 05:25:11

by Hiremath, Vaibhav

[permalink] [raw]
Subject: Re: [PATCH 2/3] ARM: OMAP: hwmod: revise deassert sequence



On 8/3/2012 3:50 AM, Omar Ramirez Luna wrote:
> Hi.
>
> On 2 August 2012 02:52, Paul Walmsley <[email protected]> wrote:
>> On Mon, 16 Jul 2012, Omar Ramirez Luna wrote:
>>
>>> For a reset sequence to complete cleanly, a module needs its
>>> associated clocks to be enabled, otherwise the timeout check
>>> in prcm code can print a false failure (failed to hardreset)
>>> that occurs because the clocks aren't powered ON and the status
>>> bit checked can't transition without them.
>>>
>>> Signed-off-by: Omar Ramirez Luna <[email protected]>
>>
>> Is enabling the clocks sufficient?
>
> During my testing it seemed enough, besides it looks clk framework is
> doing the same as _omap4_enable_module.
>
>> Or do we also need to enable the
>> IP block, e.g. by calling
>>
>> if (soc_ops.enable_module)
>> soc_ops.enable_module(oh);
>>
>> as we do on OMAP4+ in _enable() ?
>
> Basically this is a call to _omap4_enable_module, and the latter will
> "Enable the modulemode inside CLKCTRL".
>
> However, _enable_clocks path which ends calling omap2_dflt_clk_enable
> does the same thing with its clk->enable_reg field.
>
> So in _enable:
>
> _enable_clocks(oh);
> if (soc_ops.enable_module)
> soc_ops.enable_module(oh);
>
> The enable_module part seems redundant to me, since the module should
> be already enabled by the first call to _enable_clocks.
>

Yes they do same thing, I believe the plan is to get rid of all clock
leaf-nodes in the near future, and let hwmod handle module
enable/disable part.

Thanks,
Vaibhav

> Regards,
>
> Omar
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

2012-08-03 15:52:13

by Omar Ramirez Luna

[permalink] [raw]
Subject: Re: [PATCH 2/3] ARM: OMAP: hwmod: revise deassert sequence

On 3 August 2012 00:24, Vaibhav Hiremath <[email protected]> wrote:
> On 8/3/2012 3:50 AM, Omar Ramirez Luna wrote:
>> So in _enable:
>>
>> _enable_clocks(oh);
>> if (soc_ops.enable_module)
>> soc_ops.enable_module(oh);
>>
>> The enable_module part seems redundant to me, since the module should
>> be already enabled by the first call to _enable_clocks.
>
> Yes they do same thing, I believe the plan is to get rid of all clock
> leaf-nodes in the near future, and let hwmod handle module
> enable/disable part.

If this is the case then an enable_module call is needed in my patch
for when these changes are made. The original works fine but only
because currently clock framework does what enable_module is doing.

Paul,

Please let me know if you want me to resend with this change.

Regards,

Omar

2012-08-20 10:22:17

by Benoit Cousson

[permalink] [raw]
Subject: Re: [PATCH 2/3] ARM: OMAP: hwmod: revise deassert sequence

Hi Omar,

On 08/03/2012 05:52 PM, Omar Ramirez Luna wrote:
> On 3 August 2012 00:24, Vaibhav Hiremath <[email protected]> wrote:
>> On 8/3/2012 3:50 AM, Omar Ramirez Luna wrote:
>>> So in _enable:
>>>
>>> _enable_clocks(oh);
>>> if (soc_ops.enable_module)
>>> soc_ops.enable_module(oh);
>>>
>>> The enable_module part seems redundant to me, since the module should
>>> be already enabled by the first call to _enable_clocks.
>>
>> Yes they do same thing, I believe the plan is to get rid of all clock
>> leaf-nodes in the near future, and let hwmod handle module
>> enable/disable part.
>
> If this is the case then an enable_module call is needed in my patch
> for when these changes are made. The original works fine but only
> because currently clock framework does what enable_module is doing.

Yes, that's the case, but I plan to remove most of the leaf clocks ASAP,
so we cannot rely on that.

> Please let me know if you want me to resend with this change.

Yes, could you please repost with that change?

It will be good as well that you remove the leaf clock and use the
parent clock of current leaf as the main_clock. In that case it will
ensure that this is the hwmod fmwk that does enable the modulemode and
not the clock fmwk.

Regards,
Benoit

2012-08-21 01:15:23

by Omar Ramirez Luna

[permalink] [raw]
Subject: Re: [PATCH 2/3] ARM: OMAP: hwmod: revise deassert sequence

Hi Benoit,

On 20 August 2012 05:21, Benoit Cousson <[email protected]> wrote:
> Hi Omar,
>
> On 08/03/2012 05:52 PM, Omar Ramirez Luna wrote:
>> On 3 August 2012 00:24, Vaibhav Hiremath <[email protected]> wrote:
>>> On 8/3/2012 3:50 AM, Omar Ramirez Luna wrote:
>>>> So in _enable:
>>>>
>>>> _enable_clocks(oh);
>>>> if (soc_ops.enable_module)
>>>> soc_ops.enable_module(oh);
>>>>
>>>> The enable_module part seems redundant to me, since the module should
>>>> be already enabled by the first call to _enable_clocks.
>>>
>>> Yes they do same thing, I believe the plan is to get rid of all clock
>>> leaf-nodes in the near future, and let hwmod handle module
>>> enable/disable part.
>>
>> If this is the case then an enable_module call is needed in my patch
>> for when these changes are made. The original works fine but only
>> because currently clock framework does what enable_module is doing.
>
> Yes, that's the case, but I plan to remove most of the leaf clocks ASAP,
> so we cannot rely on that.
>
>> Please let me know if you want me to resend with this change.
>
> Yes, could you please repost with that change?

Not a problem.

> It will be good as well that you remove the leaf clock and use the
> parent clock of current leaf as the main_clock. In that case it will
> ensure that this is the hwmod fmwk that does enable the modulemode and
> not the clock fmwk.

Ok, let me try that.

Thanks for the comments,

Omar