1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/usb/chipidea,usb2-imx.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: NXP USB2 ChipIdea USB controller 8 9maintainers: 10 - Xu Yang <xu.yang_2@nxp.com> 11 12properties: 13 compatible: 14 oneOf: 15 - enum: 16 - fsl,imx27-usb 17 - items: 18 - enum: 19 - fsl,imx23-usb 20 - fsl,imx25-usb 21 - fsl,imx28-usb 22 - fsl,imx35-usb 23 - fsl,imx50-usb 24 - fsl,imx51-usb 25 - fsl,imx53-usb 26 - fsl,imx6q-usb 27 - fsl,imx6sl-usb 28 - fsl,imx6sx-usb 29 - fsl,imx6ul-usb 30 - fsl,imx7d-usb 31 - fsl,vf610-usb 32 - const: fsl,imx27-usb 33 - items: 34 - enum: 35 - fsl,imx8dxl-usb 36 - fsl,imx8ulp-usb 37 - const: fsl,imx7ulp-usb 38 - const: fsl,imx6ul-usb 39 - items: 40 - enum: 41 - fsl,imx8mm-usb 42 - fsl,imx8mn-usb 43 - fsl,imx93-usb 44 - const: fsl,imx7d-usb 45 - const: fsl,imx27-usb 46 - items: 47 - enum: 48 - fsl,imx6sll-usb 49 - fsl,imx7ulp-usb 50 - const: fsl,imx6ul-usb 51 - const: fsl,imx27-usb 52 53 reg: 54 maxItems: 1 55 56 interrupts: 57 maxItems: 1 58 59 clocks: 60 minItems: 1 61 maxItems: 3 62 63 clock-names: 64 minItems: 1 65 maxItems: 3 66 67 fsl,usbmisc: 68 description: 69 Phandler of non-core register device, with one argument that 70 indicate usb controller index 71 $ref: /schemas/types.yaml#/definitions/phandle-array 72 items: 73 - items: 74 - description: phandle to usbmisc node 75 - description: index of usb controller 76 77 disable-over-current: 78 type: boolean 79 description: disable over current detect 80 81 over-current-active-low: 82 type: boolean 83 description: over current signal polarity is active low 84 85 over-current-active-high: 86 type: boolean 87 description: 88 Over current signal polarity is active high. It's recommended to 89 specify the over current polarity. 90 91 power-active-high: 92 type: boolean 93 description: power signal polarity is active high 94 95 external-vbus-divider: 96 type: boolean 97 description: enables off-chip resistor divider for Vbus 98 99 samsung,picophy-pre-emp-curr-control: 100 description: 101 HS Transmitter Pre-Emphasis Current Control. This signal controls 102 the amount of current sourced to the USB_OTG*_DP and USB_OTG*_DN 103 pins after a J-to-K or K-to-J transition. The range is from 0x0 to 104 0x3, the default value is 0x1. Details can refer to TXPREEMPAMPTUNE0 105 bits of USBNC_n_PHY_CFG1. 106 $ref: /schemas/types.yaml#/definitions/uint32 107 minimum: 0x0 108 maximum: 0x3 109 110 samsung,picophy-dc-vol-level-adjust: 111 description: 112 HS DC Voltage Level Adjustment. Adjust the high-speed transmitter DC 113 level voltage. The range is from 0x0 to 0xf, the default value is 114 0x3. Details can refer to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1. 115 $ref: /schemas/types.yaml#/definitions/uint32 116 minimum: 0x0 117 maximum: 0xf 118 119 fsl,picophy-rise-fall-time-adjust: 120 description: 121 HS Transmitter Rise/Fall Time Adjustment. Adjust the rise/fall times 122 of the high-speed transmitter waveform. It has no unit. The rise/fall 123 time will be increased or decreased by a certain percentage relative 124 to design default time. (0:-10%; 1:design default; 2:+15%; 3:+20%) 125 Details can refer to TXRISETUNE0 bit of USBNC_n_PHY_CFG1. 126 $ref: /schemas/types.yaml#/definitions/uint32 127 minimum: 0 128 maximum: 3 129 default: 1 130 131 fsl,usbphy: 132 description: phandle of usb phy that connects to the port. Use "phys" instead. 133 $ref: /schemas/types.yaml#/definitions/phandle 134 deprecated: true 135 136required: 137 - compatible 138 139allOf: 140 - $ref: chipidea,usb2-common.yaml# 141 - if: 142 properties: 143 phy_type: 144 const: hsic 145 required: 146 - phy_type 147 then: 148 properties: 149 pinctrl-names: 150 items: 151 - const: idle 152 - const: active 153 154 # imx27 Soc needs three clocks 155 - if: 156 properties: 157 compatible: 158 const: fsl,imx27-usb 159 then: 160 properties: 161 clocks: 162 minItems: 3 163 clock-names: 164 items: 165 - const: ipg 166 - const: ahb 167 - const: per 168 169 # imx25 and imx35 Soc need three clocks 170 - if: 171 properties: 172 compatible: 173 contains: 174 enum: 175 - fsl,imx25-usb 176 - fsl,imx35-usb 177 then: 178 properties: 179 clocks: 180 minItems: 3 181 clock-names: 182 items: 183 - const: ipg 184 - const: ahb 185 - const: per 186 187 # imx93 Soc needs two clocks 188 - if: 189 properties: 190 compatible: 191 contains: 192 enum: 193 - fsl,imx93-usb 194 then: 195 properties: 196 clocks: 197 minItems: 2 198 maxItems: 2 199 clock-names: 200 items: 201 - const: usb_ctrl_root 202 - const: usb_wakeup 203 204 # imx7d Soc need one clock 205 - if: 206 properties: 207 compatible: 208 items: 209 - const: fsl,imx7d-usb 210 - const: fsl,imx27-usb 211 then: 212 properties: 213 clocks: 214 maxItems: 1 215 clock-names: false 216 217 # other Soc need one clock 218 - if: 219 properties: 220 compatible: 221 contains: 222 enum: 223 - fsl,imx23-usb 224 - fsl,imx28-usb 225 - fsl,imx50-usb 226 - fsl,imx51-usb 227 - fsl,imx53-usb 228 - fsl,imx6q-usb 229 - fsl,imx6sl-usb 230 - fsl,imx6sx-usb 231 - fsl,imx6ul-usb 232 - fsl,imx8mm-usb 233 - fsl,imx8mn-usb 234 - fsl,vf610-usb 235 then: 236 properties: 237 clocks: 238 maxItems: 1 239 clock-names: false 240 241unevaluatedProperties: false 242 243examples: 244 - | 245 #include <dt-bindings/interrupt-controller/arm-gic.h> 246 #include <dt-bindings/clock/imx7d-clock.h> 247 248 usb@30b10000 { 249 compatible = "fsl,imx7d-usb", "fsl,imx27-usb"; 250 reg = <0x30b10000 0x200>; 251 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>; 252 clocks = <&clks IMX7D_USB_CTRL_CLK>; 253 fsl,usbphy = <&usbphynop1>; 254 fsl,usbmisc = <&usbmisc1 0>; 255 phy-clkgate-delay-us = <400>; 256 }; 257 258 # Example for HSIC: 259 - | 260 #include <dt-bindings/interrupt-controller/arm-gic.h> 261 #include <dt-bindings/clock/imx6qdl-clock.h> 262 263 usb@2184400 { 264 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 265 reg = <0x02184400 0x200>; 266 interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>; 267 clocks = <&clks IMX6QDL_CLK_USBOH3>; 268 fsl,usbphy = <&usbphynop1>; 269 fsl,usbmisc = <&usbmisc 2>; 270 phy_type = "hsic"; 271 dr_mode = "host"; 272 ahb-burst-config = <0x0>; 273 tx-burst-size-dword = <0x10>; 274 rx-burst-size-dword = <0x10>; 275 pinctrl-names = "idle", "active"; 276 pinctrl-0 = <&pinctrl_usbh2_idle>; 277 pinctrl-1 = <&pinctrl_usbh2_active>; 278 #address-cells = <1>; 279 #size-cells = <0>; 280 281 ethernet@1 { 282 compatible = "usb424,9730"; 283 reg = <1>; 284 }; 285 }; 286 287... 288