Hi Krzysztof, On Fri, 8 Dec 2023 at 17:47, Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> wrote: > > On 08/12/2023 12:19, Anand Moon wrote: > > Hi Krzysztof, > > > > On Fri, 8 Dec 2023 at 13:14, Krzysztof Kozlowski > > <krzysztof.kozlowski@xxxxxxxxxx> wrote: > >> > >> 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? > >> > > Yes, I have, > > > > Can you suggest a couple of examples to follow? > > I looked at some of the YAML files but could not fix my issue. > > 99% of bindings. Look also at example-schema. > > You can also attach here complete patch for fast look / short review. > Please find the modified patch, I have tried a few things but none resolve the binding warning. I am not able to debug this. -Thanks Anand -----8<----------8<----------8<----------8<----------8<----------8<----- diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml index ee08b9c3721f..7f75fa3c1945 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@xxxxxxxxxx> -allOf: - - $ref: usb-device.yaml# - properties: compatible: enum: @@ -27,11 +24,47 @@ 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 + - vdd-supply + - reset-gpios + - peer-hub + +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 @@ -49,3 +82,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>; + }; + };