| # 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 |
| |
| maintainers: |
| - Dongjin Kim <tobetter@gmail.com> |
| |
| properties: |
| compatible: |
| enum: |
| - smsc,usb3503 |
| - smsc,usb3503a |
| - smsc,usb3803 |
| |
| reg: |
| maxItems: 1 |
| |
| connect-gpios: |
| maxItems: 1 |
| description: > |
| GPIO for connect |
| |
| intn-gpios: |
| maxItems: 1 |
| description: > |
| GPIO for interrupt |
| |
| reset-gpios: |
| maxItems: 1 |
| 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 |
| 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: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: > |
| 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 |
| 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 |
| |
| 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: |
| - | |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| 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"; |
| }; |
| }; |
| |
| - | |
| 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> |
| |
| 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>; |
| }; |
| |
| ... |