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