On Wed, Jul 21, 2021 at 04:04:04PM +0200, Maxime Ripard wrote: > The SMSC USB3503 USB Hub Controller is supported by Linux thanks to > its device tree binding. > > Now that we have the DT validation in place, let's convert the device > tree bindings for that driver over to a YAML schema. > > Cc: Dongjin Kim <tobetter@xxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: linux-usb@xxxxxxxxxxxxxxx > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> > --- > .../devicetree/bindings/usb/smsc,usb3503.yaml | 104 ++++++++++++++++++ > .../devicetree/bindings/usb/usb3503.txt | 39 ------- > 2 files changed, 104 insertions(+), 39 deletions(-) > create mode 100644 Documentation/devicetree/bindings/usb/smsc,usb3503.yaml > delete mode 100644 Documentation/devicetree/bindings/usb/usb3503.txt > > diff --git a/Documentation/devicetree/bindings/usb/smsc,usb3503.yaml b/Documentation/devicetree/bindings/usb/smsc,usb3503.yaml > new file mode 100644 > index 000000000000..0e5622e7df87 > --- /dev/null > +++ b/Documentation/devicetree/bindings/usb/smsc,usb3503.yaml > @@ -0,0 +1,104 @@ > +# SPDX-License-Identifier: GPL-2.0 > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/usb/smsc,usb3503.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: SMSC USB3503 High-Speed Hub Controller Device Tree Bindings > + > +maintainers: > + - Dongjin Kim <tobetter@xxxxxxxxx> > + > +properties: > + compatible: > + enum: > + - smsc,usb3503 > + - smsc,usb3503a > + > + reg: > + maxItems: 1 > + > + connect-gpios: > + description: > > + GPIO for connect maxItems: 1 > + > + intn-gpios: > + description: > > + GPIO for interrupt maxItems: 1 > + > + reset-gpios: > + description: > > + GPIO for reset maxItems: 1 > + > + disabled-ports: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 1 > + maxItems: 3 > + items: > + minimum: 1 > + maximum: 3 > + description: > > + Specifies the ports unused using their port number. Do not describe this > + property if all ports have to be enabled. > + > + initial-mode: > + enum: [1, 2] > + description: > > + Specifies initial mode. 1 for Hub mode, 2 for standby mode. > + > + clocks: > + description: > > + Clock used for driving REFCLK signal. If not provided the driver assumes > + that clock signal is always available, its rate is specified by REF_SEL > + pins and a value from the primary reference clock frequencies table is > + used. maxItems: 1 > + > + clock-names: > + const: refclk > + > + refclk-frequency: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: > > + Frequency of the REFCLK signal as defined by REF_SEL pins. If not > + provided, driver will not set rate of the REFCLK signal and assume that a > + value from the primary reference clock frequencies table is used. > + > +required: > + - compatible > + > +additionalProperties: false > + > +examples: > + - | > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + usb3503@8 { usb-hub@8 > + compatible = "smsc,usb3503"; > + reg = <0x08>; > + connect-gpios = <&gpx3 0 1>; > + disabled-ports = <2 3>; > + intn-gpios = <&gpx3 4 1>; > + reset-gpios = <&gpx3 5 1>; > + initial-mode = <1>; > + clocks = <&clks 80>; > + clock-names = "refclk"; > + }; > + }; > + > + - | > + #include <dt-bindings/gpio/gpio.h> > + > + usb-hub { > + /* I2C is not connected */ We should probably require this is a USB bus child device in this case, but that's a separate change. > + compatible = "smsc,usb3503"; > + initial-mode = <1>; /* initialize in HUB mode */ > + disabled-ports = <1>; > + intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ > + reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */ > + connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */ > + refclk-frequency = <19200000>; > + }; > + > +... > diff --git a/Documentation/devicetree/bindings/usb/usb3503.txt b/Documentation/devicetree/bindings/usb/usb3503.txt > deleted file mode 100644 > index 057dd384d473..000000000000 > --- a/Documentation/devicetree/bindings/usb/usb3503.txt > +++ /dev/null > @@ -1,39 +0,0 @@ > -SMSC USB3503 High-Speed Hub Controller > - > -Required properties: > -- compatible: Should be "smsc,usb3503" or "smsc,usb3503a". > - > -Optional properties: > -- reg: Specifies the i2c slave address, it is required and should be 0x08 > - if I2C is used. > -- connect-gpios: Should specify GPIO for connect. > -- disabled-ports: Should specify the ports unused. > - '1' or '2' or '3' are available for this property to describe the port > - number. 1~3 property values are possible to be described. > - Do not describe this property if all ports have to be enabled. > -- intn-gpios: Should specify GPIO for interrupt. > -- reset-gpios: Should specify GPIO for reset. > -- initial-mode: Should specify initial mode. > - (1 for HUB mode, 2 for STANDBY mode) > -- refclk: Clock used for driving REFCLK signal (optional, if not provided > - the driver assumes that clock signal is always available, its > - rate is specified by REF_SEL pins and a value from the primary > - reference clock frequencies table is used). Use clocks and > - clock-names in order to assign it > -- refclk-frequency: Frequency of the REFCLK signal as defined by REF_SEL > - pins (optional, if not provided, driver will not set rate of the > - REFCLK signal and assume that a value from the primary reference > - clock frequencies table is used) > - > -Examples: > - usb3503@8 { > - compatible = "smsc,usb3503"; > - reg = <0x08>; > - connect-gpios = <&gpx3 0 1>; > - disabled-ports = <2 3>; > - intn-gpios = <&gpx3 4 1>; > - reset-gpios = <&gpx3 5 1>; > - initial-mode = <1>; > - clocks = <&clks 80>; > - clock-names = "refclk"; > - }; > -- > 2.31.1 > >