[PATCH v2 0/2] USB: musb: PM fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



These patches fix a couple of bugs introduced by the recent runtime-PM
work (details in the individual commit messages).

Note that the external abort was due to the irq work never being flushed
on suspend, and that we may need similar fixes for the delayed reset and
resume work which are likewise never cancelled on suspend.

As I just mentioned in the v1 thread, there are a number of further issues with
musb suspend (e.g. on BBB):

 1. System suspend appears to break any active gadget (which then can be
    restarted manually).

 2. The early_tx polling in musb_cppi41 lacks a timeout, something which can
    lead to the hrtimer rescheduling itself indefinitely if the fifo never
    empties (e.g. if a transfer is is initiated post suspend due to issue 1).

    See commit a655f481d83d ("usb: musb: musb_cppi41: handle pre-mature TX
    complete interrupt").

 3. In host mode, if a device is disconnected while the system is suspended,
    this will keep the controller runtime active after resume as the session
    bit is always set.

Johan


Changes in v2
 - reorder the two patches
 - flush rather than cancel the irq work, and set a flag before flushing so that
   a detected disconnect is processed immeditaly (instead of unconditionally
   clearing the session flag on suspend)


Johan Hovold (2):
  USB: musb: fix session-bit runtime-PM quirk
  USB: musb: fix late external abort on suspend

 drivers/usb/musb/musb_core.c | 15 +++++++++++----
 drivers/usb/musb/musb_core.h |  2 ++
 2 files changed, 13 insertions(+), 4 deletions(-)

-- 
2.14.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux