Message ID | 20230320093447.32105-2-rogerq@kernel.org |
---|---|
State | New |
Headers | show |
Series | [RFC,1/2] dt-bindings: usb: snps,dwc3: Add 'snps,gadget-keep-connect-sys-sleep' | expand |
On 20/03/2023 15:22, Rob Herring wrote: > On Mon, Mar 20, 2023 at 11:34:46AM +0200, Roger Quadros wrote: >> The current USB gadget driver behaviour is to stop the controller >> and disconnect from the bus during System sleep. > > What's USB gadget? ;) :) > >> The 'snps,gadget-keep-connect-sys-sleep' property can be used to >> 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. > > Sounds like something the user/OS would want to choose rather than fixed > by your board's firmware. Yes. > > Is this somehow DWC3 specific? If not, why a DWC3 specific property? This is not DWC3 specific. Should we make this a UDC class device's sysfs attribute instead? Only concern is that in dual-role case, if a role switch from device mode to host mode and back to device mode happens, we loose the UDC device's attributes as we re-init the UDC device. Or should we make it a udc_core module parameter? This should be persistent between role switches. > >> >> Cc: devicetree@vger.kernel.org >> Signed-off-by: Roger Quadros <rogerq@kernel.org> >> --- >> Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml >> index be36956af53b..1ce8008e7fef 100644 >> --- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml >> +++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml >> @@ -262,6 +262,11 @@ properties: >> asserts utmi_sleep_n. >> type: boolean >> >> + snps,gadget-keep-connect-sys-sleep: >> + description: >> + If True then gadget driver will not disconnect during system sleep. >> + System sleep will not be allowed if gadget is not already in USB suspend. > > 'gadget' is a Linuxism. Got it. Will avoid using it ;) > >> + >> snps,hird-threshold: >> description: HIRD threshold >> $ref: /schemas/types.yaml#/definitions/uint8 >> -- >> 2.34.1 >> cheers, -roger
diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml index be36956af53b..1ce8008e7fef 100644 --- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml +++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml @@ -262,6 +262,11 @@ properties: asserts utmi_sleep_n. type: boolean + snps,gadget-keep-connect-sys-sleep: + description: + If True then gadget driver will not disconnect during system sleep. + System sleep will not be allowed if gadget is not already in USB suspend. + snps,hird-threshold: description: HIRD threshold $ref: /schemas/types.yaml#/definitions/uint8
The current USB gadget driver behaviour is to stop the controller and disconnect from the bus during System sleep. The 'snps,gadget-keep-connect-sys-sleep' property can be used to 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. Cc: devicetree@vger.kernel.org Signed-off-by: Roger Quadros <rogerq@kernel.org> --- Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 5 +++++ 1 file changed, 5 insertions(+)