1b1464decSMaxime Ripard# SPDX-License-Identifier: GPL-2.0 2b1464decSMaxime Ripard%YAML 1.2 3b1464decSMaxime Ripard--- 4b1464decSMaxime Ripard$id: http://devicetree.org/schemas/usb/smsc,usb3503.yaml# 5b1464decSMaxime Ripard$schema: http://devicetree.org/meta-schemas/core.yaml# 6b1464decSMaxime Ripard 7dd3cb467SAndrew Lunntitle: SMSC USB3503 High-Speed Hub Controller 8b1464decSMaxime Ripard 9b1464decSMaxime Ripardmaintainers: 10b1464decSMaxime Ripard - Dongjin Kim <tobetter@gmail.com> 11b1464decSMaxime Ripard 12b1464decSMaxime Ripardproperties: 13b1464decSMaxime Ripard compatible: 14b1464decSMaxime Ripard enum: 15b1464decSMaxime Ripard - smsc,usb3503 16b1464decSMaxime Ripard - smsc,usb3503a 17*1239e812SEmanuele Ghidoli - smsc,usb3803 18b1464decSMaxime Ripard 19b1464decSMaxime Ripard reg: 20b1464decSMaxime Ripard maxItems: 1 21b1464decSMaxime Ripard 22b1464decSMaxime Ripard connect-gpios: 23b1464decSMaxime Ripard maxItems: 1 24b1464decSMaxime Ripard description: > 25b1464decSMaxime Ripard GPIO for connect 26b1464decSMaxime Ripard 27b1464decSMaxime Ripard intn-gpios: 28b1464decSMaxime Ripard maxItems: 1 29b1464decSMaxime Ripard description: > 30b1464decSMaxime Ripard GPIO for interrupt 31b1464decSMaxime Ripard 32b1464decSMaxime Ripard reset-gpios: 33b1464decSMaxime Ripard maxItems: 1 34b1464decSMaxime Ripard description: > 35b1464decSMaxime Ripard GPIO for reset 36b1464decSMaxime Ripard 37*1239e812SEmanuele Ghidoli bypass-gpios: 38*1239e812SEmanuele Ghidoli maxItems: 1 39*1239e812SEmanuele Ghidoli description: > 40*1239e812SEmanuele Ghidoli GPIO for bypass. 41*1239e812SEmanuele Ghidoli Control signal to select between HUB MODE and BYPASS MODE. 42*1239e812SEmanuele Ghidoli 43b1464decSMaxime Ripard disabled-ports: 44b1464decSMaxime Ripard $ref: /schemas/types.yaml#/definitions/uint32-array 45b1464decSMaxime Ripard minItems: 1 46b1464decSMaxime Ripard maxItems: 3 47b1464decSMaxime Ripard items: 48b1464decSMaxime Ripard minimum: 1 49b1464decSMaxime Ripard maximum: 3 50b1464decSMaxime Ripard description: > 51b1464decSMaxime Ripard Specifies the ports unused using their port number. Do not describe this 52b1464decSMaxime Ripard property if all ports have to be enabled. 53b1464decSMaxime Ripard 54b1464decSMaxime Ripard initial-mode: 554e71ed98SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 56b1464decSMaxime Ripard description: > 57*1239e812SEmanuele Ghidoli Specifies initial mode. 1 for Hub mode, 2 for standby mode and 3 for bypass mode. 58*1239e812SEmanuele Ghidoli In bypass mode the downstream port 3 is connected to the upstream port with low 59*1239e812SEmanuele Ghidoli switch resistance R_on. 60b1464decSMaxime Ripard 61b1464decSMaxime Ripard clocks: 62b1464decSMaxime Ripard maxItems: 1 63b1464decSMaxime Ripard description: > 64b1464decSMaxime Ripard Clock used for driving REFCLK signal. If not provided the driver assumes 65b1464decSMaxime Ripard that clock signal is always available, its rate is specified by REF_SEL 66b1464decSMaxime Ripard pins and a value from the primary reference clock frequencies table is 67b1464decSMaxime Ripard used. 68b1464decSMaxime Ripard 69b1464decSMaxime Ripard clock-names: 70b1464decSMaxime Ripard const: refclk 71b1464decSMaxime Ripard 72b1464decSMaxime Ripard refclk-frequency: 73b1464decSMaxime Ripard $ref: /schemas/types.yaml#/definitions/uint32 74b1464decSMaxime Ripard description: > 75b1464decSMaxime Ripard Frequency of the REFCLK signal as defined by REF_SEL pins. If not 76b1464decSMaxime Ripard provided, driver will not set rate of the REFCLK signal and assume that a 77b1464decSMaxime Ripard value from the primary reference clock frequencies table is used. 78b1464decSMaxime Ripard 79b1464decSMaxime Ripardrequired: 80b1464decSMaxime Ripard - compatible 81b1464decSMaxime Ripard 82*1239e812SEmanuele GhidoliallOf: 83*1239e812SEmanuele Ghidoli - if: 84*1239e812SEmanuele Ghidoli not: 85*1239e812SEmanuele Ghidoli properties: 86*1239e812SEmanuele Ghidoli compatible: 87*1239e812SEmanuele Ghidoli enum: 88*1239e812SEmanuele Ghidoli - smsc,usb3803 89*1239e812SEmanuele Ghidoli then: 90*1239e812SEmanuele Ghidoli properties: 91*1239e812SEmanuele Ghidoli bypass-gpios: false 92*1239e812SEmanuele Ghidoli 93*1239e812SEmanuele Ghidoli - if: 94*1239e812SEmanuele Ghidoli required: 95*1239e812SEmanuele Ghidoli - bypass-gpios 96*1239e812SEmanuele Ghidoli then: 97*1239e812SEmanuele Ghidoli properties: 98*1239e812SEmanuele Ghidoli initial-mode: 99*1239e812SEmanuele Ghidoli enum: [1, 2, 3] 100*1239e812SEmanuele Ghidoli else: 101*1239e812SEmanuele Ghidoli properties: 102*1239e812SEmanuele Ghidoli initial-mode: 103*1239e812SEmanuele Ghidoli enum: [1, 2] 104*1239e812SEmanuele Ghidoli 105b1464decSMaxime RipardadditionalProperties: false 106b1464decSMaxime Ripard 107b1464decSMaxime Ripardexamples: 108b1464decSMaxime Ripard - | 109b1464decSMaxime Ripard i2c { 110b1464decSMaxime Ripard #address-cells = <1>; 111b1464decSMaxime Ripard #size-cells = <0>; 112b1464decSMaxime Ripard 113b1464decSMaxime Ripard usb-hub@8 { 114b1464decSMaxime Ripard compatible = "smsc,usb3503"; 115b1464decSMaxime Ripard reg = <0x08>; 116b1464decSMaxime Ripard connect-gpios = <&gpx3 0 1>; 117b1464decSMaxime Ripard disabled-ports = <2 3>; 118b1464decSMaxime Ripard intn-gpios = <&gpx3 4 1>; 119b1464decSMaxime Ripard reset-gpios = <&gpx3 5 1>; 120b1464decSMaxime Ripard initial-mode = <1>; 121b1464decSMaxime Ripard clocks = <&clks 80>; 122b1464decSMaxime Ripard clock-names = "refclk"; 123b1464decSMaxime Ripard }; 124b1464decSMaxime Ripard }; 125b1464decSMaxime Ripard 126b1464decSMaxime Ripard - | 127*1239e812SEmanuele Ghidoli i2c { 128*1239e812SEmanuele Ghidoli #address-cells = <1>; 129*1239e812SEmanuele Ghidoli #size-cells = <0>; 130*1239e812SEmanuele Ghidoli 131*1239e812SEmanuele Ghidoli usb-hub@8 { 132*1239e812SEmanuele Ghidoli compatible = "smsc,usb3803"; 133*1239e812SEmanuele Ghidoli reg = <0x08>; 134*1239e812SEmanuele Ghidoli connect-gpios = <&gpx3 0 1>; 135*1239e812SEmanuele Ghidoli disabled-ports = <2 3>; 136*1239e812SEmanuele Ghidoli intn-gpios = <&gpx3 4 1>; 137*1239e812SEmanuele Ghidoli reset-gpios = <&gpx3 5 1>; 138*1239e812SEmanuele Ghidoli bypass-gpios = <&gpx3 6 1>; 139*1239e812SEmanuele Ghidoli initial-mode = <3>; 140*1239e812SEmanuele Ghidoli clocks = <&clks 80>; 141*1239e812SEmanuele Ghidoli clock-names = "refclk"; 142*1239e812SEmanuele Ghidoli }; 143*1239e812SEmanuele Ghidoli }; 144*1239e812SEmanuele Ghidoli 145*1239e812SEmanuele Ghidoli - | 146b1464decSMaxime Ripard #include <dt-bindings/gpio/gpio.h> 147b1464decSMaxime Ripard 148b1464decSMaxime Ripard usb-hub { 149b1464decSMaxime Ripard /* I2C is not connected */ 150b1464decSMaxime Ripard compatible = "smsc,usb3503"; 151b1464decSMaxime Ripard initial-mode = <1>; /* initialize in HUB mode */ 152b1464decSMaxime Ripard disabled-ports = <1>; 153b1464decSMaxime Ripard intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ 154b1464decSMaxime Ripard reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */ 155b1464decSMaxime Ripard connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */ 156b1464decSMaxime Ripard refclk-frequency = <19200000>; 157b1464decSMaxime Ripard }; 158b1464decSMaxime Ripard 159b1464decSMaxime Ripard... 160