linux/drivers/usb/musb
Felipe Contreras 772aed45b6 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 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:
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>
2011-12-20 13:38:09 +02:00
..
Kconfig usb: musb: drop ARCH dependency 2011-12-12 11:51:53 +02:00
Makefile usb: musb: use a Kconfig choice to pick the right DMA method 2011-12-12 11:51:41 +02:00
am35x.c usb: musb: fix compilation breakage introduced by de47725 2011-11-14 11:51:32 -08:00
blackfin.c usb: musb: blackfin: include prefetch head file 2011-08-12 11:52:51 +03:00
blackfin.h usb: musb: drop a gigantic amount of ifdeferry 2011-07-01 14:31:10 -07:00
cppi_dma.c usb: musb: cppi: fix build errors due to DBG and missing musb variable 2011-08-12 11:52:47 +03:00
cppi_dma.h
da8xx.c usb: musb: fix compilation breakage introduced by de47725 2011-11-14 11:51:32 -08:00
davinci.c ARM: gpio: davinci: convert drivers to use asm/gpio.h rather than mach/gpio.h 2011-08-08 14:27:55 +01:00
davinci.h
musb_core.c usb: musb: fix pm_runtime mismatch 2011-12-20 13:38:09 +02:00
musb_core.h usb: musb: fix pm_runtime calls while atomic 2011-12-12 11:51:54 +02:00
musb_debug.h usb: musb: drop unneeded musb_debug trickery 2011-05-13 14:34:04 +03:00
musb_debugfs.c usb: musb: headers cleanup 2011-12-12 11:51:52 +02:00
musb_dma.h usb: musb: introduce api for dma code to check compatibility with usb request 2011-02-01 10:41:30 +02:00
musb_gadget.c usb: musb: headers cleanup 2011-12-12 11:51:52 +02:00
musb_gadget.h usb: musb: gadget: do not poke with gadget's list_head 2011-02-17 21:11:46 +02:00
musb_gadget_ep0.c usb: musb: headers cleanup 2011-12-12 11:51:52 +02:00
musb_host.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
musb_host.h usb: musb: drop a gigantic amount of ifdeferry 2011-07-01 14:31:10 -07:00
musb_io.h usb: musb: allow building USB_MUSB_TUSB6010 as a module 2011-12-12 11:51:42 +02:00
musb_regs.h usb: musb: tusb6010: fix compilation 2011-08-12 11:52:50 +03:00
musb_virthub.c usb: musb: drop a gigantic amount of ifdeferry 2011-07-01 14:31:10 -07:00
musbhsdma.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
musbhsdma.h Merge branches 'devel-cleanup', 'devel-board', 'devel-early-init' and 'devel-ti816x' into omap-for-linus 2011-02-16 11:32:38 -08:00
omap2430.c usb: musb: omap2430: fix compile warning 2011-12-12 13:07:03 +02:00
omap2430.h USB: musb: get rid of omap_readl/writel 2010-03-02 14:54:38 -08:00
tusb6010.c usb: musb: allow building USB_MUSB_TUSB6010 as a module 2011-12-12 11:51:42 +02:00
tusb6010.h
tusb6010_omap.c usb: musb: tusb6010: fix compilation 2011-08-12 11:52:50 +03:00
ux500.c usb: musb: ux500: copy dma mask from platform device to musb device 2011-04-13 11:50:57 +03:00
ux500_dma.c usb: musb: ux500: optimize DMA callback routine 2011-12-12 11:51:39 +02:00