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