[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    [W:0.029 / U:105.696 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site