diff mbox series

[34/54] dt-bindings: usb: Convert SMSC USB3503 binding to a schema

Message ID 20210721140424.725744-35-maxime@cerno.tech (mailing list archive)
State New, archived
Headers show
Series ARM: dts: Last round of DT schema fixes | expand

Commit Message

Maxime Ripard July 21, 2021, 2:04 p.m. UTC
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@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 .../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

Comments

Rob Herring July 23, 2021, 10:08 p.m. UTC | #1
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@gmail.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-usb@vger.kernel.org
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>
> ---
>  .../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@gmail.com>
> +
> +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
> 
>
diff mbox series

Patch

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@gmail.com>
+
+properties:
+  compatible:
+    enum:
+      - smsc,usb3503
+      - smsc,usb3503a
+
+  reg:
+    maxItems: 1
+
+  connect-gpios:
+    description: >
+      GPIO for connect
+
+  intn-gpios:
+    description: >
+      GPIO for interrupt
+
+  reset-gpios:
+    description: >
+      GPIO for reset
+
+  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.
+
+  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 {
+              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 */
+          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";
-	};