diff mbox series

[1/2] dt-bindings: usb: dwc3: Document role-switch-reset-quirk

Message ID 20211017125904.69076-1-sven@svenpeter.dev (mailing list archive)
State New, archived
Headers show
Series [1/2] dt-bindings: usb: dwc3: Document role-switch-reset-quirk | expand

Commit Message

Sven Peter Oct. 17, 2021, 12:59 p.m. UTC
The dwc3 controller on the Apple M1 must be reset whenever a
device is unplugged from the root port and triggers a role
switch notification. Document the quirk to enable this behavior.

Signed-off-by: Sven Peter <sven@svenpeter.dev>
---
 Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Rob Herring (Arm) Oct. 26, 2021, 11:25 p.m. UTC | #1
On Sun, Oct 17, 2021 at 02:59:03PM +0200, Sven Peter wrote:
> The dwc3 controller on the Apple M1 must be reset whenever a
> device is unplugged from the root port and triggers a role
> switch notification. Document the quirk to enable this behavior.
> 
> Signed-off-by: Sven Peter <sven@svenpeter.dev>
> ---
>  Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
> index 25ac2c93dc6c..9635e20cab68 100644
> --- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
> +++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
> @@ -226,6 +226,12 @@ properties:
>        avoid -EPROTO errors with usbhid on some devices (Hikey 970).
>      type: boolean
>  
> +  snps,role-switch-reset-quirk:
> +    description:
> +      When set, DWC3 will be reset and reinitialized whenever a role switch
> +      is performed.
> +    type: boolean

This binding is a example of why we don't do a property per quirk. We 
end up with a gazillion of them.

Imply this from the SoC specific compatible (I don't recall seeing one 
for the M1, so that's a problem).

Rob
Sven Peter Oct. 30, 2021, 7:43 a.m. UTC | #2
On Wed, Oct 27, 2021, at 01:25, Rob Herring wrote:
> On Sun, Oct 17, 2021 at 02:59:03PM +0200, Sven Peter wrote:
>> The dwc3 controller on the Apple M1 must be reset whenever a
>> device is unplugged from the root port and triggers a role
>> switch notification. Document the quirk to enable this behavior.
>> 
>> Signed-off-by: Sven Peter <sven@svenpeter.dev>
>> ---
>>  Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++
>>  1 file changed, 6 insertions(+)
>> 
>> diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
>> index 25ac2c93dc6c..9635e20cab68 100644
>> --- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
>> +++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
>> @@ -226,6 +226,12 @@ properties:
>>        avoid -EPROTO errors with usbhid on some devices (Hikey 970).
>>      type: boolean
>>  
>> +  snps,role-switch-reset-quirk:
>> +    description:
>> +      When set, DWC3 will be reset and reinitialized whenever a role switch
>> +      is performed.
>> +    type: boolean
>
> This binding is a example of why we don't do a property per quirk. We 
> end up with a gazillion of them.

Makes sense. I didn't think too much about this since I saw all those
other quirks and just did the same.

>
> Imply this from the SoC specific compatible (I don't recall seeing one 
> for the M1, so that's a problem).

Sure, I'll do that for v2. The compatible for the M1 doesn't exist yet
because the dwc3 nodes also don't exist in the upstream DT yet.
This was all blocked on getting I2C and the USB PD chip to work.



Sven
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
index 25ac2c93dc6c..9635e20cab68 100644
--- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
+++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
@@ -226,6 +226,12 @@  properties:
       avoid -EPROTO errors with usbhid on some devices (Hikey 970).
     type: boolean
 
+  snps,role-switch-reset-quirk:
+    description:
+      When set, DWC3 will be reset and reinitialized whenever a role switch
+      is performed.
+    type: boolean
+
   snps,is-utmi-l1-suspend:
     description:
       True when DWC3 asserts output signal utmi_l1_suspend_n, false when