Commit 1239e812 authored by Emanuele Ghidoli's avatar Emanuele Ghidoli Committed by Greg Kroah-Hartman
Browse files

dt-bindings: usb: smsc,usb3503: Add usb3803



Add support for usb3803, compared to usb3503 it uses a regular USB
connection to upstream instead of HSIC, it has an additional
low power mode (bypass) and an additional control signal (BYPASS_N).

In bypass mode the downstream port 3 is connected to the upstream port
with low switch resistance R_on.

Signed-off-by: default avatarEmanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: default avatarFrancesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230313165039.255579-2-francesco@dolcini.it


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 34427557
Loading
Loading
Loading
Loading
+52 −2
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ properties:
    enum:
      - smsc,usb3503
      - smsc,usb3503a
      - smsc,usb3803

  reg:
    maxItems: 1
@@ -33,6 +34,12 @@ properties:
    description: >
      GPIO for reset

  bypass-gpios:
    maxItems: 1
    description: >
      GPIO for bypass.
      Control signal to select between HUB MODE and BYPASS MODE.

  disabled-ports:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
@@ -46,9 +53,10 @@ properties:

  initial-mode:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [1, 2]
    description: >
      Specifies initial mode. 1 for Hub mode, 2 for standby mode.
      Specifies initial mode. 1 for Hub mode, 2 for standby mode and 3 for bypass mode.
      In bypass mode the downstream port 3 is connected to the upstream port with low
      switch resistance R_on.

  clocks:
    maxItems: 1
@@ -71,6 +79,29 @@ properties:
required:
  - compatible

allOf:
  - if:
      not:
        properties:
          compatible:
            enum:
              - smsc,usb3803
    then:
      properties:
        bypass-gpios: false

  - if:
      required:
        - bypass-gpios
    then:
      properties:
        initial-mode:
          enum: [1, 2, 3]
    else:
      properties:
        initial-mode:
          enum: [1, 2]

additionalProperties: false

examples:
@@ -92,6 +123,25 @@ examples:
          };
      };

  - |
      i2c {
          #address-cells = <1>;
          #size-cells = <0>;

          usb-hub@8 {
              compatible = "smsc,usb3803";
              reg = <0x08>;
              connect-gpios = <&gpx3 0 1>;
              disabled-ports = <2 3>;
              intn-gpios = <&gpx3 4 1>;
              reset-gpios = <&gpx3 5 1>;
              bypass-gpios = <&gpx3 6 1>;
              initial-mode = <3>;
              clocks = <&clks 80>;
              clock-names = "refclk";
          };
      };

  - |
      #include <dt-bindings/gpio/gpio.h>