diff mbox

ARM: AM33xx: hwmod: Add INIT_NO_IDLE flag for debugss hwmod

Message ID 1397022467-6166-1-git-send-email-lokeshvutla@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lokesh Vutla April 9, 2014, 5:47 a.m. UTC
During boot, when hwmod tries to cut clocks for debugss it always
gets stuck in transition state and throws the following warning:

[    0.139581] omap_hwmod: debugss: _wait_target_disable failed

As per the information provided by folks, clocks to debugss cannot be cut.
So adding HWMOD_INIT_NO_IDLE flag to debugss hwmod.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
Tested on BeagleBone Black.

 arch/arm/mach-omap2/omap_hwmod_33xx_data.c |    1 +
 1 file changed, 1 insertion(+)

Comments

Paul Walmsley April 11, 2014, 6 p.m. UTC | #1
On Wed, 9 Apr 2014, Lokesh Vutla wrote:

> During boot, when hwmod tries to cut clocks for debugss it always
> gets stuck in transition state and throws the following warning:
> 
> [    0.139581] omap_hwmod: debugss: _wait_target_disable failed
> 
> As per the information provided by folks, clocks to debugss cannot be cut.
> So adding HWMOD_INIT_NO_IDLE flag to debugss hwmod.
> 
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>

Thanks, queued for v3.15-rc.


- Paul
Paul Walmsley April 11, 2014, 6:09 p.m. UTC | #2
On Fri, 11 Apr 2014, Paul Walmsley wrote:

> On Wed, 9 Apr 2014, Lokesh Vutla wrote:
> 
> > During boot, when hwmod tries to cut clocks for debugss it always
> > gets stuck in transition state and throws the following warning:
> > 
> > [    0.139581] omap_hwmod: debugss: _wait_target_disable failed
> > 
> > As per the information provided by folks, clocks to debugss cannot be cut.
> > So adding HWMOD_INIT_NO_IDLE flag to debugss hwmod.
> > 
> > Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> 
> Thanks, queued for v3.15-rc.

Hmmm.  On second thought, this doesn't look like the right fix.  Could 
you please comment on the issues raised here:

https://patchwork.kernel.org/patch/2212111/

Looks to me like there should be at least one device driver, either for 
the entire DEBUGSS, or for the individual IP blocks inside the DEBUGSS.

Dropping this patch for now.


- Paul
Lokesh Vutla April 14, 2014, 8:29 a.m. UTC | #3
Hi Paul,
On Friday 11 April 2014 11:39 PM, Paul Walmsley wrote:
> On Fri, 11 Apr 2014, Paul Walmsley wrote:
> 
>> On Wed, 9 Apr 2014, Lokesh Vutla wrote:
>>
>>> During boot, when hwmod tries to cut clocks for debugss it always
>>> gets stuck in transition state and throws the following warning:
>>>
>>> [    0.139581] omap_hwmod: debugss: _wait_target_disable failed
>>>
>>> As per the information provided by folks, clocks to debugss cannot be cut.
>>> So adding HWMOD_INIT_NO_IDLE flag to debugss hwmod.
>>>
>>> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
>>
>> Thanks, queued for v3.15-rc.
> 
> Hmmm.  On second thought, this doesn't look like the right fix.  Could 
> you please comment on the issues raised here:
> 
> https://patchwork.kernel.org/patch/2212111/
Yes, I initially created a driver for enabling and disabling clocks for DEBUGSS.
But I always see that DEBUGSS is always stuck in transition whenever clocks are cut
to DEBUGSS. 
During boot also when hwmod tries to cut clocks the following warning comes:
  [    0.139581] omap_hwmod: debugss: _wait_target_disable failed.

As confirmed by the hardware team that this is a bug in silicon that clocks cannot
be cut to DEBUGSS.
So I am just adding HWMOD_INIT_NO_IDLE flag to debugss hwmod. 

I have also tested suspend-resume with $subject patch with TI internal tree.

Please let me know if I am not clear.

Thanks and regards,
Lokesh

> 
> Looks to me like there should be at least one device driver, either for 
> the entire DEBUGSS, or for the individual IP blocks inside the DEBUGSS.
> 
> Dropping this patch for now.
> 
> 
> - Paul
>
Paul Walmsley May 7, 2014, 11:55 p.m. UTC | #4
Hi Lokesh

On Mon, 14 Apr 2014, Lokesh Vutla wrote:

> On Friday 11 April 2014 11:39 PM, Paul Walmsley wrote:
> > On Fri, 11 Apr 2014, Paul Walmsley wrote:
> > 
> >> On Wed, 9 Apr 2014, Lokesh Vutla wrote:
> >>
> >>> During boot, when hwmod tries to cut clocks for debugss it always
> >>> gets stuck in transition state and throws the following warning:
> >>>
> >>> [    0.139581] omap_hwmod: debugss: _wait_target_disable failed
> >>>
> >>> As per the information provided by folks, clocks to debugss cannot be cut.
> >>> So adding HWMOD_INIT_NO_IDLE flag to debugss hwmod.
> >>>
> >>> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> >>
> >> Thanks, queued for v3.15-rc.
> > 
> > Hmmm.  On second thought, this doesn't look like the right fix.  Could 
> > you please comment on the issues raised here:
> > 
> > https://patchwork.kernel.org/patch/2212111/
> Yes, I initially created a driver for enabling and disabling clocks for DEBUGSS.
> But I always see that DEBUGSS is always stuck in transition whenever clocks are cut
> to DEBUGSS. 
> During boot also when hwmod tries to cut clocks the following warning comes:
>   [    0.139581] omap_hwmod: debugss: _wait_target_disable failed.
> 
> As confirmed by the hardware team that this is a bug in silicon that clocks cannot
> be cut to DEBUGSS.
> So I am just adding HWMOD_INIT_NO_IDLE flag to debugss hwmod. 
> 
> I have also tested suspend-resume with $subject patch with TI internal tree.
> 
> Please let me know if I am not clear.

OK, here's my question.  Does the DEBUGSS module correctly enter a 
low-power state when going to suspend, even when the DEBUGSS is still 
enabled?  Or is it the case that we should still disable it in the hwmod 
code and simply skip the call to _wait_target_disable()?

If the former, then please repost your patch with some comments in the 
hwmod data to describe this case, and note that the module will still 
enter a low-power state appropriately when the MPUSS goes into standby (if 
that is indeed the behavior).

If the latter, then it seems like the right approach is to add a hwmod 
flag to indicate that we should still disable it, but not wait for the 
disable to complete.

I guess the most direct way to test this would be to pull out a ammeter 
and verify that the idle current is the same in both cases.

How does that sound?


- Paul
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
index 6b406ca..ec18ce0 100644
--- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
@@ -222,6 +222,7 @@  static struct omap_hwmod am33xx_debugss_hwmod = {
 	.name		= "debugss",
 	.class		= &am33xx_debugss_hwmod_class,
 	.clkdm_name	= "l3_aon_clkdm",
+	.flags		= HWMOD_INIT_NO_IDLE,
 	.main_clk	= "trace_clk_div_ck",
 	.prcm		= {
 		.omap4	= {