linux/drivers/usb/musb
Jarkko Nikula cdefce1695 usb: musb: gadget: Fix out-of-sync runtime pm calls
If cable is not connected to peripheral only board when initializing the
gadget driver, then runtime pm calls are out-of-sync and the musb cannot
idle with omap2430.c. This was noted on Nokia N900 where musb prevented the
CPU to be able to enter deeper retention idle state.

This was working in 2.6.38 before runtime pm conversions but there musb
smart standby/idle modes were configured statically where they are now
updated runtime depending on use and cable status.

Reason for out-of-sync is that runtime pm is activated in function
musb_gadget.c: usb_gadget_probe_driver but suspended only in OTG mode if
cable is not connected when initializing. In peripheral only mode this leads
to out-of-sync runtime pm since runtime pm remain active and is activated
another time in omap2430.c: musb_otg_notifications for VBUS Connect event
and thus cannot suspend for VBUS Disconnect event since the use count remains
active.

Fix this by moving cable status check and pm_runtime_put call in
usb_gadget_probe_driver out of is_otg_enabled block.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2011-05-02 12:34:33 +03:00
..
am35x.c musb: am35x: fix compile error due to control apis 2010-12-10 10:21:35 +02:00
blackfin.c USB: musb: blackfin: work around anomaly 05000450 2011-04-13 11:51:28 +03:00
blackfin.h
cppi_dma.c USB: musb: dereferencing an iomem pointer 2011-04-13 11:51:24 +03:00
cppi_dma.h
da8xx.c usb: musb: drop board_set_vbus 2010-12-10 10:21:33 +02:00
davinci.c usb: musb: drop board_set_vbus 2010-12-10 10:21:33 +02:00
davinci.h
Kconfig usb: musb: temporarily make it bool 2011-04-13 11:51:25 +03:00
Makefile usb: musb: add support for ux500 platform 2010-12-10 10:21:36 +02:00
musb_core.c usb: musb: Fix the crash issue during reboot 2011-04-13 11:51:28 +03:00
musb_core.h USB: musb: blackfin: work around anomaly 05000450 2011-04-13 11:51:28 +03:00
musb_debug.h USB: musb: make DBG() calls actually depend on CONFIG_USB_MUSB_DEBUG 2010-10-22 10:21:52 -07:00
musb_debugfs.c headers: kobject.h redux 2011-01-10 08:51:44 -08: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_ep0.c usb: musb: gadget: do not poke with gadget's list_head 2011-02-17 21:11:46 +02:00
musb_gadget.c usb: musb: gadget: Fix out-of-sync runtime pm calls 2011-05-02 12:34:33 +03:00
musb_gadget.h usb: musb: gadget: do not poke with gadget's list_head 2011-02-17 21:11:46 +02:00
musb_host.c Merge 2.6.38-rc5 into usb-next 2011-02-17 09:56:55 -08:00
musb_host.h
musb_io.h usb: musb: add Kconfig options for each glue layer 2010-12-10 10:21:09 +02:00
musb_regs.h Merge branch 'usb-next' into musb-merge 2010-12-16 10:05:06 -08:00
musb_virthub.c USB 3.0 Hub Changes 2011-03-13 18:07:11 -07:00
musbhsdma.c USB: musb: blackfin: work around anomaly 05000450 2011-04-13 11:51:28 +03: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 retention idle on musb peripheral only boards 2011-05-02 12:34:32 +03:00
omap2430.h USB: musb: get rid of omap_readl/writel 2010-03-02 14:54:38 -08:00
tusb6010_omap.c usb: musb: tusb: Fix possible null pointer dereference in tusb6010_omap.c 2011-03-01 12:35:23 +02:00
tusb6010.c drivers: Final irq namespace conversion 2011-03-29 14:48:19 +02:00
tusb6010.h
ux500.c usb: musb: ux500: copy dma mask from platform device to musb device 2011-04-13 11:50:57 +03:00