diff mbox series

[v6,1/2] dt-bindings: usb: Add the binding example for the Genesys Logic GL3523 hub

Message ID 20231204144429.45197-2-linux.amoon@gmail.com
State Accepted
Commit 3d9894e26e556cd83f1c0ef9f757e375e2cf52c7
Headers show
Series [v6,1/2] dt-bindings: usb: Add the binding example for the Genesys Logic GL3523 hub | expand

Commit Message

Anand Moon Dec. 4, 2023, 2:44 p.m. UTC
Add the binding example for the USB3.1 Genesys Logic GL3523
integrates with USB 3.1 Gen 1 Super Speed and USB 2.0 High-Speed
hub.

For onboard hub controllers that support USB 3.x and USB 2.0 hubs
with shared resets and power supplies, this property is used to identify
the hubs with which these are shared.

GL3523 has built-in 5V to 3.3V and 5V to 1.2V regulators, which serves
power to the USB HUB, it uses 5V power regulator.

Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
V6: fix the description of the regulators
Updated the commit message for regulator updates.
add reviewed by Conor Dooley
[1] https://lore.kernel.org/all/20231130053130.21966-2-linux.amoon@gmail.com/
v5: upgrade peer-hub description : Conor Dooley
[0] https://www.genesyslogic.com.tw/en/product_view.php?show=67 [Block Diagram]
v4: Fix the description of peer-hub and update the commit message.
Schematics of the Odroid N2+
https://dn.odroid.com/S922X/ODROID-N2/Schematic/odroid-n2_rev0.6_20210121.pdf
V3: fix the dt_binding_check error, added new example for Genesys GL3523
v2: added Genesys GL3523 binding
v1: none
---
 .../bindings/usb/genesys,gl850g.yaml          | 65 +++++++++++++++++--
 1 file changed, 61 insertions(+), 4 deletions(-)

Comments

Rob Herring Dec. 6, 2023, 1:53 p.m. UTC | #1
On Mon, Dec 04, 2023 at 08:14:25PM +0530, Anand Moon wrote:
> Add the binding example for the USB3.1 Genesys Logic GL3523
> integrates with USB 3.1 Gen 1 Super Speed and USB 2.0 High-Speed
> hub.
> 
> For onboard hub controllers that support USB 3.x and USB 2.0 hubs
> with shared resets and power supplies, this property is used to identify
> the hubs with which these are shared.
> 
> GL3523 has built-in 5V to 3.3V and 5V to 1.2V regulators, which serves
> power to the USB HUB, it uses 5V power regulator.
> 
> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
> ---
> V6: fix the description of the regulators
> Updated the commit message for regulator updates.
> add reviewed by Conor Dooley
> [1] https://lore.kernel.org/all/20231130053130.21966-2-linux.amoon@gmail.com/
> v5: upgrade peer-hub description : Conor Dooley
> [0] https://www.genesyslogic.com.tw/en/product_view.php?show=67 [Block Diagram]
> v4: Fix the description of peer-hub and update the commit message.
> Schematics of the Odroid N2+
> https://dn.odroid.com/S922X/ODROID-N2/Schematic/odroid-n2_rev0.6_20210121.pdf
> V3: fix the dt_binding_check error, added new example for Genesys GL3523
> v2: added Genesys GL3523 binding
> v1: none
> ---
>  .../bindings/usb/genesys,gl850g.yaml          | 65 +++++++++++++++++--
>  1 file changed, 61 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> index ee08b9c3721f..c6f63a69396d 100644
> --- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> +++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> @@ -9,9 +9,6 @@ title: Genesys Logic USB hub controller
>  maintainers:
>    - Icenowy Zheng <uwu@icenowy.me>
>  
> -allOf:
> -  - $ref: usb-device.yaml#
> -
>  properties:
>    compatible:
>      enum:
> @@ -27,12 +24,46 @@ properties:
>  
>    vdd-supply:
>      description:
> -      the regulator that provides 3.3V core power to the hub.
> +      The regulator that provides 3.3V or 5.0V core power to the hub.
> +
> +  peer-hub:
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +    description:
> +      For onboard hub controllers that support USB 3.x and USB 2.0 hubs
> +      with shared resets and power supplies, this property is used to identify
> +      the hubs with which these are shared.
>  
>  required:
>    - compatible
>    - reg
>  
> +allOf:
> +  - $ref: usb-device.yaml#
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - usb5e3,608
> +    then:
> +      properties:
> +        peer-hub: false
> +        vdd-supply: false
> +        reset-gpios: true
> +
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - usb5e3,610
> +              - usb5e3,620
> +    then:
> +      properties:
> +        peer-hub: true
> +        vdd-supply: true
> +        reset-gpios: true

No need for this if schema. The default is they are allowed.

Rob
Krzysztof Kozlowski Dec. 7, 2023, 8:30 a.m. UTC | #2
On 06/12/2023 18:14, Anand Moon wrote:
> Hi Rob,
> 
> On Wed, 6 Dec 2023 at 19:23, Rob Herring <robh@kernel.org> wrote:
>>
>> On Mon, Dec 04, 2023 at 08:14:25PM +0530, Anand Moon wrote:
>>> Add the binding example for the USB3.1 Genesys Logic GL3523
>>> integrates with USB 3.1 Gen 1 Super Speed and USB 2.0 High-Speed
>>> hub.
>>>
>>> For onboard hub controllers that support USB 3.x and USB 2.0 hubs
>>> with shared resets and power supplies, this property is used to identify
>>> the hubs with which these are shared.
>>>
>>> GL3523 has built-in 5V to 3.3V and 5V to 1.2V regulators, which serves
>>> power to the USB HUB, it uses 5V power regulator.
>>>
>>> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
>>> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
>>> ---
>>> V6: fix the description of the regulators
>>> Updated the commit message for regulator updates.
>>> add reviewed by Conor Dooley
>>> [1] https://lore.kernel.org/all/20231130053130.21966-2-linux.amoon@gmail.com/
>>> v5: upgrade peer-hub description : Conor Dooley
>>> [0] https://www.genesyslogic.com.tw/en/product_view.php?show=67 [Block Diagram]
>>> v4: Fix the description of peer-hub and update the commit message.
>>> Schematics of the Odroid N2+
>>> https://dn.odroid.com/S922X/ODROID-N2/Schematic/odroid-n2_rev0.6_20210121.pdf
>>> V3: fix the dt_binding_check error, added new example for Genesys GL3523
>>> v2: added Genesys GL3523 binding
>>> v1: none
>>> ---
>>>  .../bindings/usb/genesys,gl850g.yaml          | 65 +++++++++++++++++--
>>>  1 file changed, 61 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
>>> index ee08b9c3721f..c6f63a69396d 100644
>>> --- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
>>> +++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
>>> @@ -9,9 +9,6 @@ title: Genesys Logic USB hub controller
>>>  maintainers:
>>>    - Icenowy Zheng <uwu@icenowy.me>
>>>
>>> -allOf:
>>> -  - $ref: usb-device.yaml#
>>> -
>>>  properties:
>>>    compatible:
>>>      enum:
>>> @@ -27,12 +24,46 @@ properties:
>>>
>>>    vdd-supply:
>>>      description:
>>> -      the regulator that provides 3.3V core power to the hub.
>>> +      The regulator that provides 3.3V or 5.0V core power to the hub.
>>> +
>>> +  peer-hub:
>>> +    $ref: /schemas/types.yaml#/definitions/phandle
>>> +    description:
>>> +      For onboard hub controllers that support USB 3.x and USB 2.0 hubs
>>> +      with shared resets and power supplies, this property is used to identify
>>> +      the hubs with which these are shared.
>>>
>>>  required:
>>>    - compatible
>>>    - reg
>>>
>>> +allOf:
>>> +  - $ref: usb-device.yaml#
>>> +  - if:
>>> +      properties:
>>> +        compatible:
>>> +          contains:
>>> +            enum:
>>> +              - usb5e3,608
>>> +    then:
>>> +      properties:
>>> +        peer-hub: false
>>> +        vdd-supply: false
>>> +        reset-gpios: true
>>> +
>>> +  - if:
>>> +      properties:
>>> +        compatible:
>>> +          contains:
>>> +            enum:
>>> +              - usb5e3,610
>>> +              - usb5e3,620
>>> +    then:
>>> +      properties:
>>> +        peer-hub: true
>>> +        vdd-supply: true
>>> +        reset-gpios: true
>>
>> No need for this if schema. The default is they are allowed.
>>
> 
> If I move reset-gpios to required, I observe the below warning.
> 
>   DTC_CHK Documentation/devicetree/bindings/usb/maxim,max33359.example.dtb
> /home/alarm/linux-amlogic-5.y-devel/Documentation/devicetree/bindings/usb/usb-device.example.dtb:
> hub@1: 'reset-gpio' is a required property
>         from schema $id: http://devicetree.org/schemas/usb/genesys,gl850g.yaml#

Where are the properties defined? If you open the binding you see:
nowhere. You cannot define properties in some variant with "true".
Please define all of them in top-level and only narrow/constrain when
applicable.


Best regards,
Krzysztof
Anand Moon Dec. 7, 2023, 12:33 p.m. UTC | #3
Hi Krzysztof

On Thu, 7 Dec 2023 at 14:00, Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
>
> On 06/12/2023 18:14, Anand Moon wrote:
> > Hi Rob,
> >
> > On Wed, 6 Dec 2023 at 19:23, Rob Herring <robh@kernel.org> wrote:
> >>
> >> On Mon, Dec 04, 2023 at 08:14:25PM +0530, Anand Moon wrote:
> >>> Add the binding example for the USB3.1 Genesys Logic GL3523
> >>> integrates with USB 3.1 Gen 1 Super Speed and USB 2.0 High-Speed
> >>> hub.
> >>>
> >>> For onboard hub controllers that support USB 3.x and USB 2.0 hubs
> >>> with shared resets and power supplies, this property is used to identify
> >>> the hubs with which these are shared.
> >>>
> >>> GL3523 has built-in 5V to 3.3V and 5V to 1.2V regulators, which serves
> >>> power to the USB HUB, it uses 5V power regulator.
> >>>
> >>> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> >>> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
> >>> ---
> >>> V6: fix the description of the regulators
> >>> Updated the commit message for regulator updates.
> >>> add reviewed by Conor Dooley
> >>> [1] https://lore.kernel.org/all/20231130053130.21966-2-linux.amoon@gmail.com/
> >>> v5: upgrade peer-hub description : Conor Dooley
> >>> [0] https://www.genesyslogic.com.tw/en/product_view.php?show=67 [Block Diagram]
> >>> v4: Fix the description of peer-hub and update the commit message.
> >>> Schematics of the Odroid N2+
> >>> https://dn.odroid.com/S922X/ODROID-N2/Schematic/odroid-n2_rev0.6_20210121.pdf
> >>> V3: fix the dt_binding_check error, added new example for Genesys GL3523
> >>> v2: added Genesys GL3523 binding
> >>> v1: none
> >>> ---
> >>>  .../bindings/usb/genesys,gl850g.yaml          | 65 +++++++++++++++++--
> >>>  1 file changed, 61 insertions(+), 4 deletions(-)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> >>> index ee08b9c3721f..c6f63a69396d 100644
> >>> --- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> >>> +++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> >>> @@ -9,9 +9,6 @@ title: Genesys Logic USB hub controller
> >>>  maintainers:
> >>>    - Icenowy Zheng <uwu@icenowy.me>
> >>>
> >>> -allOf:
> >>> -  - $ref: usb-device.yaml#
> >>> -
> >>>  properties:
> >>>    compatible:
> >>>      enum:
> >>> @@ -27,12 +24,46 @@ properties:
> >>>
> >>>    vdd-supply:
> >>>      description:
> >>> -      the regulator that provides 3.3V core power to the hub.
> >>> +      The regulator that provides 3.3V or 5.0V core power to the hub.
> >>> +
> >>> +  peer-hub:
> >>> +    $ref: /schemas/types.yaml#/definitions/phandle
> >>> +    description:
> >>> +      For onboard hub controllers that support USB 3.x and USB 2.0 hubs
> >>> +      with shared resets and power supplies, this property is used to identify
> >>> +      the hubs with which these are shared.
> >>>
> >>>  required:
> >>>    - compatible
> >>>    - reg
> >>>
> >>> +allOf:
> >>> +  - $ref: usb-device.yaml#
> >>> +  - if:
> >>> +      properties:
> >>> +        compatible:
> >>> +          contains:
> >>> +            enum:
> >>> +              - usb5e3,608
> >>> +    then:
> >>> +      properties:
> >>> +        peer-hub: false
> >>> +        vdd-supply: false
> >>> +        reset-gpios: true
> >>> +
> >>> +  - if:
> >>> +      properties:
> >>> +        compatible:
> >>> +          contains:
> >>> +            enum:
> >>> +              - usb5e3,610
> >>> +              - usb5e3,620
> >>> +    then:
> >>> +      properties:
> >>> +        peer-hub: true
> >>> +        vdd-supply: true
> >>> +        reset-gpios: true
> >>
> >> No need for this if schema. The default is they are allowed.
> >>
> >
> > If I move reset-gpios to required, I observe the below warning.
> >
> >   DTC_CHK Documentation/devicetree/bindings/usb/maxim,max33359.example.dtb
> > /home/alarm/linux-amlogic-5.y-devel/Documentation/devicetree/bindings/usb/usb-device.example.dtb:
> > hub@1: 'reset-gpio' is a required property
> >         from schema $id: http://devicetree.org/schemas/usb/genesys,gl850g.yaml#
>
> Where are the properties defined? If you open the binding you see:
> nowhere. You cannot define properties in some variant with "true".
> Please define all of them in top-level and only narrow/constrain when
> applicable.
>
What I meant is the example below, required meant applicable for both
the binding
But it shows me the above warning.

required:
  - compatible
  - reg
  - reset-gpio

allOf:
  - $ref: usb-device.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - usb5e3,608
    then:
      properties:
        peer-hub: false
        vdd-supply: false

  - if:
      properties:
        compatible:
          contains:
            enum:
              - usb5e3,610
              - usb5e3,620
    then:
      properties:
        peer-hub: true
        vdd-supply: true

additionalProperties: false

>
> Best regards,
> Krzysztof
>

Thanks
-Anand
Anand Moon Dec. 8, 2023, 12:24 a.m. UTC | #4
Hi Krzysztof,

On Thu, 7 Dec 2023 at 18:11, Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
>
> On 07/12/2023 13:33, Anand Moon wrote:
> > Hi Krzysztof
> >
> > On Thu, 7 Dec 2023 at 14:00, Krzysztof Kozlowski
> > <krzysztof.kozlowski@linaro.org> wrote:
> >>
> >> On 06/12/2023 18:14, Anand Moon wrote:
> >>> Hi Rob,
> >>>
> >>> On Wed, 6 Dec 2023 at 19:23, Rob Herring <robh@kernel.org> wrote:
> >>>>
> >>>> On Mon, Dec 04, 2023 at 08:14:25PM +0530, Anand Moon wrote:
> >>>>> Add the binding example for the USB3.1 Genesys Logic GL3523
> >>>>> integrates with USB 3.1 Gen 1 Super Speed and USB 2.0 High-Speed
> >>>>> hub.
> >>>>>
> >>>>> For onboard hub controllers that support USB 3.x and USB 2.0 hubs
> >>>>> with shared resets and power supplies, this property is used to identify
> >>>>> the hubs with which these are shared.
> >>>>>
> >>>>> GL3523 has built-in 5V to 3.3V and 5V to 1.2V regulators, which serves
> >>>>> power to the USB HUB, it uses 5V power regulator.
> >>>>>
> >>>>> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> >>>>> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
> >>>>> ---
> >>>>> V6: fix the description of the regulators
> >>>>> Updated the commit message for regulator updates.
> >>>>> add reviewed by Conor Dooley
> >>>>> [1] https://lore.kernel.org/all/20231130053130.21966-2-linux.amoon@gmail.com/
> >>>>> v5: upgrade peer-hub description : Conor Dooley
> >>>>> [0] https://www.genesyslogic.com.tw/en/product_view.php?show=67 [Block Diagram]
> >>>>> v4: Fix the description of peer-hub and update the commit message.
> >>>>> Schematics of the Odroid N2+
> >>>>> https://dn.odroid.com/S922X/ODROID-N2/Schematic/odroid-n2_rev0.6_20210121.pdf
> >>>>> V3: fix the dt_binding_check error, added new example for Genesys GL3523
> >>>>> v2: added Genesys GL3523 binding
> >>>>> v1: none
> >>>>> ---
> >>>>>  .../bindings/usb/genesys,gl850g.yaml          | 65 +++++++++++++++++--
> >>>>>  1 file changed, 61 insertions(+), 4 deletions(-)
> >>>>>
> >>>>> diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> >>>>> index ee08b9c3721f..c6f63a69396d 100644
> >>>>> --- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> >>>>> +++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> >>>>> @@ -9,9 +9,6 @@ title: Genesys Logic USB hub controller
> >>>>>  maintainers:
> >>>>>    - Icenowy Zheng <uwu@icenowy.me>
> >>>>>
> >>>>> -allOf:
> >>>>> -  - $ref: usb-device.yaml#
> >>>>> -
> >>>>>  properties:
> >>>>>    compatible:
> >>>>>      enum:
> >>>>> @@ -27,12 +24,46 @@ properties:
> >>>>>
> >>>>>    vdd-supply:
> >>>>>      description:
> >>>>> -      the regulator that provides 3.3V core power to the hub.
> >>>>> +      The regulator that provides 3.3V or 5.0V core power to the hub.
> >>>>> +
> >>>>> +  peer-hub:
> >>>>> +    $ref: /schemas/types.yaml#/definitions/phandle
> >>>>> +    description:
> >>>>> +      For onboard hub controllers that support USB 3.x and USB 2.0 hubs
> >>>>> +      with shared resets and power supplies, this property is used to identify
> >>>>> +      the hubs with which these are shared.
> >>>>>
> >>>>>  required:
> >>>>>    - compatible
> >>>>>    - reg
> >>>>>
> >>>>> +allOf:
> >>>>> +  - $ref: usb-device.yaml#
> >>>>> +  - if:
> >>>>> +      properties:
> >>>>> +        compatible:
> >>>>> +          contains:
> >>>>> +            enum:
> >>>>> +              - usb5e3,608
> >>>>> +    then:
> >>>>> +      properties:
> >>>>> +        peer-hub: false
> >>>>> +        vdd-supply: false
> >>>>> +        reset-gpios: true
> >>>>> +
> >>>>> +  - if:
> >>>>> +      properties:
> >>>>> +        compatible:
> >>>>> +          contains:
> >>>>> +            enum:
> >>>>> +              - usb5e3,610
> >>>>> +              - usb5e3,620
> >>>>> +    then:
> >>>>> +      properties:
> >>>>> +        peer-hub: true
> >>>>> +        vdd-supply: true
> >>>>> +        reset-gpios: true
> >>>>
> >>>> No need for this if schema. The default is they are allowed.
> >>>>
> >>>
> >>> If I move reset-gpios to required, I observe the below warning.
> >>>
> >>>   DTC_CHK Documentation/devicetree/bindings/usb/maxim,max33359.example.dtb
> >>> /home/alarm/linux-amlogic-5.y-devel/Documentation/devicetree/bindings/usb/usb-device.example.dtb:
> >>> hub@1: 'reset-gpio' is a required property
> >>>         from schema $id: http://devicetree.org/schemas/usb/genesys,gl850g.yaml#
> >>
> >> Where are the properties defined? If you open the binding you see:
> >> nowhere. You cannot define properties in some variant with "true".
> >> Please define all of them in top-level and only narrow/constrain when
> >> applicable.
> >>
> > What I meant is the example below, required meant applicable for both
> > the binding
> > But it shows me the above warning.
>
> My explanation stands... So again:
>
> >> Please define all of them in top-level and only narrow/constrain when
> >> applicable.
>
Apologies, But I have tried this multiple times but have not been able
to fix the device tree warning
I have verified that example
Documentation/devicetree/bindings/usb/genesys,gl850g.example.dts
generate is correct

required:
  - compatible
  - reg
  - reset-gpio
  - peer-hub
  - vdd-supply

allOf:
  - $ref: usb-device.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - usb5e3,608
    then:
      properties:
        peer-hub: false
        vdd-supply: false

  - if:
      properties:
        compatible:
          contains:
            enum:
              - usb5e3,610
              - usb5e3,620
    then:
      properties:
        peer-hub: true
        vdd-supply: true

additionalProperties: false

> Best regards,
> Krzysztof
>

Thanks
-Anand
Krzysztof Kozlowski Dec. 8, 2023, 7:44 a.m. UTC | #5
On 08/12/2023 01:24, Anand Moon wrote:
>>>>>
>>>>> If I move reset-gpios to required, I observe the below warning.
>>>>>
>>>>>   DTC_CHK Documentation/devicetree/bindings/usb/maxim,max33359.example.dtb
>>>>> /home/alarm/linux-amlogic-5.y-devel/Documentation/devicetree/bindings/usb/usb-device.example.dtb:
>>>>> hub@1: 'reset-gpio' is a required property
>>>>>         from schema $id: http://devicetree.org/schemas/usb/genesys,gl850g.yaml#
>>>>
>>>> Where are the properties defined? If you open the binding you see:
>>>> nowhere. You cannot define properties in some variant with "true".
>>>> Please define all of them in top-level and only narrow/constrain when
>>>> applicable.
>>>>
>>> What I meant is the example below, required meant applicable for both
>>> the binding
>>> But it shows me the above warning.
>>
>> My explanation stands... So again:
>>
>>>> Please define all of them in top-level and only narrow/constrain when
>>>> applicable.
>>
> Apologies, But I have tried this multiple times but have not been able
> to fix the device tree warning

Did you document all properties in top-level "properties:" block?


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
index ee08b9c3721f..c6f63a69396d 100644
--- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
+++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
@@ -9,9 +9,6 @@  title: Genesys Logic USB hub controller
 maintainers:
   - Icenowy Zheng <uwu@icenowy.me>
 
-allOf:
-  - $ref: usb-device.yaml#
-
 properties:
   compatible:
     enum:
@@ -27,12 +24,46 @@  properties:
 
   vdd-supply:
     description:
-      the regulator that provides 3.3V core power to the hub.
+      The regulator that provides 3.3V or 5.0V core power to the hub.
+
+  peer-hub:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      For onboard hub controllers that support USB 3.x and USB 2.0 hubs
+      with shared resets and power supplies, this property is used to identify
+      the hubs with which these are shared.
 
 required:
   - compatible
   - reg
 
+allOf:
+  - $ref: usb-device.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - usb5e3,608
+    then:
+      properties:
+        peer-hub: false
+        vdd-supply: false
+        reset-gpios: true
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - usb5e3,610
+              - usb5e3,620
+    then:
+      properties:
+        peer-hub: true
+        vdd-supply: true
+        reset-gpios: true
+
 additionalProperties: false
 
 examples:
@@ -49,3 +80,29 @@  examples:
             reset-gpios = <&pio 7 2 GPIO_ACTIVE_LOW>;
         };
     };
+
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    usb {
+        dr_mode = "host";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        /* 2.0 hub on port 1 */
+        hub_2_0: hub@1 {
+            compatible = "usb5e3,610";
+            reg = <1>;
+            peer-hub = <&hub_3_0>;
+            reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
+            vdd-supply = <&vcc_5v>;
+        };
+
+        /* 3.1 hub on port 4 */
+        hub_3_0: hub@2 {
+            compatible = "usb5e3,620";
+            reg = <2>;
+            peer-hub = <&hub_2_0>;
+            reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
+            vdd-supply = <&vcc_5v>;
+        };
+    };