[lkml]   [2012]   [Jan]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[38/49] usb: musb: fix pm_runtime mismatch
3.2-stable review patch.  If anyone has any objections, please let me know.

From: Felipe Contreras <>

commit 772aed45b604c5ff171f0f12c12392d868333f79 upstream.

In musb_init_controller() there's a pm_runtime_put(), but there's no
pm_runtime_get(), which creates a mismatch that causes the driver to
sleep when it shouldn't.

This was introduced in 7acc619[1], but it wasn't triggered in my setup
until 18a2689[2] was merged to Linus' branch at point df0914[3]. IOW;
when PM is working as it was supposed to.

However, it seems most of the time this is used in a way that keeps the
counter above 0, so nobody noticed. Also, it seems to depend on the
configuration used in versions before 3.1, but not later (or in it).

I found the problem by loading isp1704_charger before any usb gadgets:

All versions after 2.6.39 are affected.

[1] usb: musb: Idle path retention and offmode support for OMAP3
[2] OMAP2+: musb: hwmod adaptation for musb registration
[3] Merge branch 'omap-for-linus' of git://

Cc: Hema HK <>
Signed-off-by: Felipe Contreras <>
Signed-off-by: Felipe Balbi <>

drivers/usb/musb/musb_core.c | 2 --
1 file changed, 2 deletions(-)
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -2012,8 +2012,6 @@ musb_init_controller(struct device *dev,
if (status < 0)
goto fail3;

- pm_runtime_put(musb->controller);
status = musb_init_debugfs(musb);
if (status < 0)
goto fail4;

 \ /
  Last update: 2012-01-11 00:09    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean