[RFC,0/2] usb: dwc3: Support wake-up from USB suspend.

Message ID 20230320093447.32105-1-rogerq@kernel.org
Headers
Series usb: dwc3: Support wake-up from USB suspend. |

Message

Roger Quadros March 20, 2023, 9:34 a.m. UTC
  Hi,

The current USB gadget driver behaviour is to stop the controller
and disconnect from the bus during System sleep.

This series introduces a new DT property that will change this
behaviour and keep the controller active and connected
to the bus during System sleep. This is useful for applications
that want to enter a low power state when USB is suspended but
remain connected so they can resume activity on USB resume.

This feature introduces a new constraint if Gadget driver is connected
to USB host: i.e.  the gadget must be in USB suspend state to allow
a System sleep as we cannot process any USB transactions
when in System sleep.

The system hardware is responsible to detect the end of USB suspend
and wake up the system so we can begin processing the USB transactions
as soon as possible.

Some prior discussion about System suspend vs USB suspend can be found
at [1]

[1] - https://marc.info/?l=linux-usb&m=167645398109860&w=2

cheers,
-roger

Roger Quadros (2):
  dt-bindings: usb: snps,dwc3: Add 'snps,gadget-keep-connect-sys-sleep'
  usb: dwc3: Support 'snps,gadget-keep-connect-sys-sleep' feature

 .../devicetree/bindings/usb/snps,dwc3.yaml    |  5 ++++
 drivers/usb/dwc3/core.c                       | 25 ++++++++++++++-----
 drivers/usb/dwc3/core.h                       |  2 ++
 drivers/usb/dwc3/gadget.c                     | 25 +++++++++++++++++--
 4 files changed, 49 insertions(+), 8 deletions(-)