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@xxxxxxxxxxxxxxx >> Signed-off-by: Roger Quadros <rogerq@xxxxxxxxxx> >> --- >> 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