Re: [RFC PATCH 1/2] dt-bindings: usb: snps,dwc3: Add 'snps,gadget-keep-connect-sys-sleep'

Roger Quadros
2023-03-21T09:45:01Z

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