]> git.baikalelectronics.ru Git - kernel.git/commit
usb: musb: fix pm_runtime mismatch
authorFelipe Contreras <felipe.contreras@gmail.com>
Mon, 19 Dec 2011 20:01:54 +0000 (22:01 +0200)
committerFelipe Balbi <balbi@ti.com>
Tue, 20 Dec 2011 11:38:09 +0000 (13:38 +0200)
commit929ac036a6efe86ebd340bb3a2ef72e91c116f78
tree46dc4594c9664653f158cc7ec71de145f48de9c0
parent4c789f670d902e0a82cbab15a738a85c081ca90c
usb: musb: fix pm_runtime mismatch

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 3ae2ce5[1], but it wasn't triggered in my setup
until b8935c3[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:
http://article.gmane.org/gmane.linux.kernel/1226122

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://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6

Cc: stable@vger.kernel.org
Cc: Hema HK <hemahk@ti.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_core.c