xref: /freebsd/sys/contrib/device-tree/Bindings/usb/chipidea,usb2-imx.yaml (revision 7d0873ebb83b19ba1e8a89e679470d885efe12e3)
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