linux/drivers/usb/musb
Johan Hovold 706d61b243 USB: musb: dsps: add explicit runtime resume at suspend
The musb_dsps driver is special in that the parent (glue) device's
driver is accessing registers mapped by the child. The clock is however
shared and is managed by the grandparent device.

Since commit 869c597829 ("usb: musb: dsps: add support for suspend and
resume") the dsps driver has been accessing these registers as part of
suspend and resume.

The parent driver obviously cannot runtime resume the child during
system suspend and is currently relying on the fact that the child will
be RPM_ACTIVE throughout suspend. The suspend implementation also makes
sure to check that the child is indeed present (and hence the clock
enabled) before accessing the registers.

Let's add an explicit runtime resume of the glue device itself to enable
the clock before doing the register accesses in case these assumptions ever
change (i.e. if the child is left runtime suspended).

Note that the glue-timer cancellation is moved after the child-presence
check to keep error handling simple. This should be fine as the timer is
not setup until the controller is being registered and at that time
glue->musb and its driver data have already been initialised.

Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Daniel Mack <zonque@gmail.com>
Cc: Tony Lindgren <tony@atomide.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-08-28 10:51:56 +02:00
..
am35x.c usb: musb: am35x: remove redundant code 2017-02-03 10:05:10 +01:00
blackfin.c usb: musb: blackfin: fix unused warnings on suspend/resume 2017-02-03 10:05:11 +01:00
blackfin.h
cppi_dma.c usb: musb: cppi_dma.c: use DIV_ROUND_UP macro in cppi_next_(r|t)x_segment() 2017-04-18 16:48:26 +02:00
cppi_dma.h usb: musb: cppi_dma: Clean up cppi structure 2017-02-09 13:35:05 +01:00
da8xx.c usb: musb: don't mark of_dev_auxdata as initdata 2017-04-26 11:30:02 +02:00
davinci.c usb: musb: davinci: remove redundant code 2017-02-03 10:05:10 +01:00
davinci.h
jz4740.c usb: musb: constify musb_hdrc_config structures 2017-01-25 10:52:43 +01:00
Kconfig usb: musb: Add support of CPPI 4.1 DMA controller to DA8xx 2017-04-18 16:48:26 +02:00
Makefile usb: musb: add tracepoints support for debugging 2016-07-17 08:23:57 +09:00
musb_am335x.c usb: musb: Fix panic upon musb_am335x module removal 2014-06-27 10:53:06 -05:00
musb_core.c USB: musb: fix external abort on suspend 2017-08-28 10:51:55 +02:00
musb_core.h usb: musb: add helper function musb_ep_xfertype_string 2017-08-28 10:51:55 +02:00
musb_cppi41.c usb: musb: musb_cppi41: Defer probe only if DMA is not ready 2017-06-20 11:45:01 +08:00
musb_debug.h usb: musb: add tracepoints support for debugging 2016-07-17 08:23:57 +09:00
musb_debugfs.c usb: musb: debugfs: allow forcing host mode together with speed in testmode 2017-02-03 10:05:11 +01:00
musb_dma.h usb: musb: dma: Add a DMA completion platform callback 2017-02-09 13:35:05 +01:00
musb_dsps.c USB: musb: dsps: add explicit runtime resume at suspend 2017-08-28 10:51:56 +02:00
musb_gadget_ep0.c usb: musb: switch dev_dbg to tracepoints 2016-07-17 08:23:57 +09:00
musb_gadget.c usb: musb: add helper function musb_ep_xfertype_string 2017-08-28 10:51:55 +02:00
musb_gadget.h usb: musb: add Kconfig options for HOST, GAGDET or DUAL_ROLE modes 2013-05-28 19:22:23 +03:00
musb_host.c usb: musb: print an error message when high bandwidth is unsupported 2017-08-28 10:51:55 +02:00
musb_host.h usb: musb: fix prototype for musb_port_reset 2013-12-20 15:05:43 -06:00
musb_io.h usb: musb: Make busctl_offset an io-op rather then a define 2015-05-26 10:46:54 -05:00
musb_regs.h usb: musb: Make busctl_offset an io-op rather then a define 2015-05-26 10:46:54 -05:00
musb_trace.c usb: musb: add tracepoints support for debugging 2016-07-17 08:23:57 +09:00
musb_trace.h usb: musb: cppi41: add dma channel tracepoints 2016-07-17 08:23:57 +09:00
musb_virthub.c USB: musb: remove obsolete resume-signalling comments 2016-11-21 17:35:36 +01:00
musbhsdma.c usb: musb: switch dev_dbg to tracepoints 2016-07-17 08:23:57 +09:00
musbhsdma.h usb: musb: Fix trying to free already-free IRQ 4 2017-01-05 19:18:05 +01:00
omap2430.c usb: musb: omap2430: constify dev_pm_ops structures 2017-02-03 10:05:11 +01:00
omap2430.h
sunxi.c usb: musb: sunxi: add support for the variant in H3/V3s SoC 2017-02-03 10:05:11 +01:00
tusb6010_omap.c usb: musb: tusb6010_omap: Convert to DMAengine API 2017-06-20 11:45:01 +08:00
tusb6010.c usb: musb: tusb6010: Handle DMA TX completion in DMA callback as well 2017-06-20 11:45:01 +08:00
tusb6010.h usb: musb: Fix up DMA related macros 2015-05-07 13:35:46 -05:00
ux500_dma.c usb: musb/ux500: remove duplicate check for dma_is_compatible 2016-03-04 15:14:30 +02:00
ux500.c usb: musb: constify musb_hdrc_config structures 2017-01-25 10:52:43 +01:00