xref: /freebsd/sys/contrib/device-tree/Bindings/usb/snps,dwc3.yaml (revision 5def4c47d4bd90b209b9b4a4ba9faec15846d8fd)
1*5def4c47SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
2*5def4c47SEmmanuel Vadot%YAML 1.2
3*5def4c47SEmmanuel Vadot---
4*5def4c47SEmmanuel Vadot$id: http://devicetree.org/schemas/usb/snps,dwc3.yaml#
5*5def4c47SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*5def4c47SEmmanuel Vadot
7*5def4c47SEmmanuel Vadottitle: Synopsys DesignWare USB3 Controller
8*5def4c47SEmmanuel Vadot
9*5def4c47SEmmanuel Vadotmaintainers:
10*5def4c47SEmmanuel Vadot  - Felipe Balbi <balbi@kernel.org>
11*5def4c47SEmmanuel Vadot
12*5def4c47SEmmanuel Vadotdescription:
13*5def4c47SEmmanuel Vadot  This is usually a subnode to DWC3 glue to which it is connected, but can also
14*5def4c47SEmmanuel Vadot  be presented as a standalone DT node with an optional vendor-specific
15*5def4c47SEmmanuel Vadot  compatible string.
16*5def4c47SEmmanuel Vadot
17*5def4c47SEmmanuel VadotallOf:
18*5def4c47SEmmanuel Vadot  - $ref: usb-drd.yaml#
19*5def4c47SEmmanuel Vadot  - if:
20*5def4c47SEmmanuel Vadot      properties:
21*5def4c47SEmmanuel Vadot        dr_mode:
22*5def4c47SEmmanuel Vadot          const: peripheral
23*5def4c47SEmmanuel Vadot
24*5def4c47SEmmanuel Vadot      required:
25*5def4c47SEmmanuel Vadot        - dr_mode
26*5def4c47SEmmanuel Vadot    then:
27*5def4c47SEmmanuel Vadot      $ref: usb.yaml#
28*5def4c47SEmmanuel Vadot    else:
29*5def4c47SEmmanuel Vadot      $ref: usb-xhci.yaml#
30*5def4c47SEmmanuel Vadot
31*5def4c47SEmmanuel Vadotproperties:
32*5def4c47SEmmanuel Vadot  compatible:
33*5def4c47SEmmanuel Vadot    contains:
34*5def4c47SEmmanuel Vadot      oneOf:
35*5def4c47SEmmanuel Vadot        - const: snps,dwc3
36*5def4c47SEmmanuel Vadot        - const: synopsys,dwc3
37*5def4c47SEmmanuel Vadot          deprecated: true
38*5def4c47SEmmanuel Vadot
39*5def4c47SEmmanuel Vadot  interrupts:
40*5def4c47SEmmanuel Vadot    description:
41*5def4c47SEmmanuel Vadot      It's either a single common DWC3 interrupt (dwc_usb3) or individual
42*5def4c47SEmmanuel Vadot      interrupts for the host, gadget and DRD modes.
43*5def4c47SEmmanuel Vadot    minItems: 1
44*5def4c47SEmmanuel Vadot    maxItems: 3
45*5def4c47SEmmanuel Vadot
46*5def4c47SEmmanuel Vadot  interrupt-names:
47*5def4c47SEmmanuel Vadot    minItems: 1
48*5def4c47SEmmanuel Vadot    maxItems: 3
49*5def4c47SEmmanuel Vadot    oneOf:
50*5def4c47SEmmanuel Vadot      - const: dwc_usb3
51*5def4c47SEmmanuel Vadot      - items:
52*5def4c47SEmmanuel Vadot          enum: [host, peripheral, otg]
53*5def4c47SEmmanuel Vadot
54*5def4c47SEmmanuel Vadot  clocks:
55*5def4c47SEmmanuel Vadot    description:
56*5def4c47SEmmanuel Vadot      In general the core supports three types of clocks. bus_early is a
57*5def4c47SEmmanuel Vadot      SoC Bus Clock (AHB/AXI/Native). ref generates ITP when the UTMI/ULPI
58*5def4c47SEmmanuel Vadot      PHY is suspended. suspend clocks a small part of the USB3 core when
59*5def4c47SEmmanuel Vadot      SS PHY in P3. But particular cases may differ from that having less
60*5def4c47SEmmanuel Vadot      or more clock sources with another names.
61*5def4c47SEmmanuel Vadot
62*5def4c47SEmmanuel Vadot  clock-names:
63*5def4c47SEmmanuel Vadot    contains:
64*5def4c47SEmmanuel Vadot      anyOf:
65*5def4c47SEmmanuel Vadot        - enum: [bus_early, ref, suspend]
66*5def4c47SEmmanuel Vadot        - true
67*5def4c47SEmmanuel Vadot
68*5def4c47SEmmanuel Vadot  usb-phy:
69*5def4c47SEmmanuel Vadot    minItems: 1
70*5def4c47SEmmanuel Vadot    items:
71*5def4c47SEmmanuel Vadot      - description: USB2/HS PHY
72*5def4c47SEmmanuel Vadot      - description: USB3/SS PHY
73*5def4c47SEmmanuel Vadot
74*5def4c47SEmmanuel Vadot  phys:
75*5def4c47SEmmanuel Vadot    minItems: 1
76*5def4c47SEmmanuel Vadot    items:
77*5def4c47SEmmanuel Vadot      - description: USB2/HS PHY
78*5def4c47SEmmanuel Vadot      - description: USB3/SS PHY
79*5def4c47SEmmanuel Vadot
80*5def4c47SEmmanuel Vadot  phy-names:
81*5def4c47SEmmanuel Vadot    minItems: 1
82*5def4c47SEmmanuel Vadot    items:
83*5def4c47SEmmanuel Vadot      - const: usb2-phy
84*5def4c47SEmmanuel Vadot      - const: usb3-phy
85*5def4c47SEmmanuel Vadot
86*5def4c47SEmmanuel Vadot  resets:
87*5def4c47SEmmanuel Vadot    minItems: 1
88*5def4c47SEmmanuel Vadot
89*5def4c47SEmmanuel Vadot  snps,usb2-lpm-disable:
90*5def4c47SEmmanuel Vadot    description: Indicate if we don't want to enable USB2 HW LPM
91*5def4c47SEmmanuel Vadot    type: boolean
92*5def4c47SEmmanuel Vadot
93*5def4c47SEmmanuel Vadot  snps,usb3_lpm_capable:
94*5def4c47SEmmanuel Vadot    description: Determines if platform is USB3 LPM capable
95*5def4c47SEmmanuel Vadot    type: boolean
96*5def4c47SEmmanuel Vadot
97*5def4c47SEmmanuel Vadot  snps,dis-start-transfer-quirk:
98*5def4c47SEmmanuel Vadot    description:
99*5def4c47SEmmanuel Vadot      When set, disable isoc START TRANSFER command failure SW work-around
100*5def4c47SEmmanuel Vadot      for DWC_usb31 version 1.70a-ea06 and prior.
101*5def4c47SEmmanuel Vadot    type: boolean
102*5def4c47SEmmanuel Vadot
103*5def4c47SEmmanuel Vadot  snps,disable_scramble_quirk:
104*5def4c47SEmmanuel Vadot    description:
105*5def4c47SEmmanuel Vadot      True when SW should disable data scrambling. Only really useful for FPGA
106*5def4c47SEmmanuel Vadot      builds.
107*5def4c47SEmmanuel Vadot    type: boolean
108*5def4c47SEmmanuel Vadot
109*5def4c47SEmmanuel Vadot  snps,has-lpm-erratum:
110*5def4c47SEmmanuel Vadot    description: True when DWC3 was configured with LPM Erratum enabled
111*5def4c47SEmmanuel Vadot    type: boolean
112*5def4c47SEmmanuel Vadot
113*5def4c47SEmmanuel Vadot  snps,lpm-nyet-threshold:
114*5def4c47SEmmanuel Vadot    description: LPM NYET threshold
115*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
116*5def4c47SEmmanuel Vadot
117*5def4c47SEmmanuel Vadot  snps,u2exit_lfps_quirk:
118*5def4c47SEmmanuel Vadot    description: Set if we want to enable u2exit lfps quirk
119*5def4c47SEmmanuel Vadot    type: boolean
120*5def4c47SEmmanuel Vadot
121*5def4c47SEmmanuel Vadot  snps,u2ss_inp3_quirk:
122*5def4c47SEmmanuel Vadot    description: Set if we enable P3 OK for U2/SS Inactive quirk
123*5def4c47SEmmanuel Vadot    type: boolean
124*5def4c47SEmmanuel Vadot
125*5def4c47SEmmanuel Vadot  snps,req_p1p2p3_quirk:
126*5def4c47SEmmanuel Vadot    description:
127*5def4c47SEmmanuel Vadot      When set, the core will always request for P1/P2/P3 transition sequence.
128*5def4c47SEmmanuel Vadot    type: boolean
129*5def4c47SEmmanuel Vadot
130*5def4c47SEmmanuel Vadot  snps,del_p1p2p3_quirk:
131*5def4c47SEmmanuel Vadot    description:
132*5def4c47SEmmanuel Vadot      When set core will delay P1/P2/P3 until a certain amount of 8B10B errors
133*5def4c47SEmmanuel Vadot      occur.
134*5def4c47SEmmanuel Vadot    type: boolean
135*5def4c47SEmmanuel Vadot
136*5def4c47SEmmanuel Vadot  snps,del_phy_power_chg_quirk:
137*5def4c47SEmmanuel Vadot    description: When set core will delay PHY power change from P0 to P1/P2/P3.
138*5def4c47SEmmanuel Vadot    type: boolean
139*5def4c47SEmmanuel Vadot
140*5def4c47SEmmanuel Vadot  snps,lfps_filter_quirk:
141*5def4c47SEmmanuel Vadot    description: When set core will filter LFPS reception.
142*5def4c47SEmmanuel Vadot    type: boolean
143*5def4c47SEmmanuel Vadot
144*5def4c47SEmmanuel Vadot  snps,rx_detect_poll_quirk:
145*5def4c47SEmmanuel Vadot    description:
146*5def4c47SEmmanuel Vadot      when set core will disable a 400us delay to start Polling LFPS after
147*5def4c47SEmmanuel Vadot      RX.Detect.
148*5def4c47SEmmanuel Vadot    type: boolean
149*5def4c47SEmmanuel Vadot
150*5def4c47SEmmanuel Vadot  snps,tx_de_emphasis_quirk:
151*5def4c47SEmmanuel Vadot    description: When set core will set Tx de-emphasis value
152*5def4c47SEmmanuel Vadot    type: boolean
153*5def4c47SEmmanuel Vadot
154*5def4c47SEmmanuel Vadot  snps,tx_de_emphasis:
155*5def4c47SEmmanuel Vadot    description:
156*5def4c47SEmmanuel Vadot      The value driven to the PHY is controlled by the LTSSM during USB3
157*5def4c47SEmmanuel Vadot      Compliance mode.
158*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
159*5def4c47SEmmanuel Vadot    enum:
160*5def4c47SEmmanuel Vadot      - 0 # -6dB de-emphasis
161*5def4c47SEmmanuel Vadot      - 1 # -3.5dB de-emphasis
162*5def4c47SEmmanuel Vadot      - 2 # No de-emphasis
163*5def4c47SEmmanuel Vadot
164*5def4c47SEmmanuel Vadot  snps,dis_u3_susphy_quirk:
165*5def4c47SEmmanuel Vadot    description: When set core will disable USB3 suspend phy
166*5def4c47SEmmanuel Vadot    type: boolean
167*5def4c47SEmmanuel Vadot
168*5def4c47SEmmanuel Vadot  snps,dis_u2_susphy_quirk:
169*5def4c47SEmmanuel Vadot    description: When set core will disable USB2 suspend phy
170*5def4c47SEmmanuel Vadot    type: boolean
171*5def4c47SEmmanuel Vadot
172*5def4c47SEmmanuel Vadot  snps,dis_enblslpm_quirk:
173*5def4c47SEmmanuel Vadot    description:
174*5def4c47SEmmanuel Vadot      When set clears the enblslpm in GUSB2PHYCFG, disabling the suspend signal
175*5def4c47SEmmanuel Vadot      to the PHY.
176*5def4c47SEmmanuel Vadot    type: boolean
177*5def4c47SEmmanuel Vadot
178*5def4c47SEmmanuel Vadot  snps,dis-u1-entry-quirk:
179*5def4c47SEmmanuel Vadot    description: Set if link entering into U1 needs to be disabled
180*5def4c47SEmmanuel Vadot    type: boolean
181*5def4c47SEmmanuel Vadot
182*5def4c47SEmmanuel Vadot  snps,dis-u2-entry-quirk:
183*5def4c47SEmmanuel Vadot    description: Set if link entering into U2 needs to be disabled
184*5def4c47SEmmanuel Vadot    type: boolean
185*5def4c47SEmmanuel Vadot
186*5def4c47SEmmanuel Vadot  snps,dis_rxdet_inp3_quirk:
187*5def4c47SEmmanuel Vadot    description:
188*5def4c47SEmmanuel Vadot      When set core will disable receiver detection in PHY P3 power state.
189*5def4c47SEmmanuel Vadot    type: boolean
190*5def4c47SEmmanuel Vadot
191*5def4c47SEmmanuel Vadot  snps,dis-u2-freeclk-exists-quirk:
192*5def4c47SEmmanuel Vadot    description:
193*5def4c47SEmmanuel Vadot      When set, clear the u2_freeclk_exists in GUSB2PHYCFG, specify that USB2
194*5def4c47SEmmanuel Vadot      PHY doesn't provide a free-running PHY clock.
195*5def4c47SEmmanuel Vadot    type: boolean
196*5def4c47SEmmanuel Vadot
197*5def4c47SEmmanuel Vadot  snps,dis-del-phy-power-chg-quirk:
198*5def4c47SEmmanuel Vadot    description:
199*5def4c47SEmmanuel Vadot      When set core will change PHY power from P0 to P1/P2/P3 without delay.
200*5def4c47SEmmanuel Vadot    type: boolean
201*5def4c47SEmmanuel Vadot
202*5def4c47SEmmanuel Vadot  snps,dis-tx-ipgap-linecheck-quirk:
203*5def4c47SEmmanuel Vadot    description: When set, disable u2mac linestate check during HS transmit
204*5def4c47SEmmanuel Vadot    type: boolean
205*5def4c47SEmmanuel Vadot
206*5def4c47SEmmanuel Vadot  snps,parkmode-disable-ss-quirk:
207*5def4c47SEmmanuel Vadot    description:
208*5def4c47SEmmanuel Vadot      When set, all SuperSpeed bus instances in park mode are disabled.
209*5def4c47SEmmanuel Vadot    type: boolean
210*5def4c47SEmmanuel Vadot
211*5def4c47SEmmanuel Vadot  snps,dis_metastability_quirk:
212*5def4c47SEmmanuel Vadot    description:
213*5def4c47SEmmanuel Vadot      When set, disable metastability workaround. CAUTION! Use only if you are
214*5def4c47SEmmanuel Vadot      absolutely sure of it.
215*5def4c47SEmmanuel Vadot    type: boolean
216*5def4c47SEmmanuel Vadot
217*5def4c47SEmmanuel Vadot  snps,dis-split-quirk:
218*5def4c47SEmmanuel Vadot    description:
219*5def4c47SEmmanuel Vadot      When set, change the way URBs are handled by the driver. Needed to
220*5def4c47SEmmanuel Vadot      avoid -EPROTO errors with usbhid on some devices (Hikey 970).
221*5def4c47SEmmanuel Vadot    type: boolean
222*5def4c47SEmmanuel Vadot
223*5def4c47SEmmanuel Vadot  snps,is-utmi-l1-suspend:
224*5def4c47SEmmanuel Vadot    description:
225*5def4c47SEmmanuel Vadot      True when DWC3 asserts output signal utmi_l1_suspend_n, false when
226*5def4c47SEmmanuel Vadot      asserts utmi_sleep_n.
227*5def4c47SEmmanuel Vadot    type: boolean
228*5def4c47SEmmanuel Vadot
229*5def4c47SEmmanuel Vadot  snps,hird-threshold:
230*5def4c47SEmmanuel Vadot    description: HIRD threshold
231*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
232*5def4c47SEmmanuel Vadot
233*5def4c47SEmmanuel Vadot  snps,hsphy_interface:
234*5def4c47SEmmanuel Vadot    description:
235*5def4c47SEmmanuel Vadot      High-Speed PHY interface selection between UTMI+ and ULPI when the
236*5def4c47SEmmanuel Vadot      DWC_USB3_HSPHY_INTERFACE has value 3.
237*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
238*5def4c47SEmmanuel Vadot    enum: [utmi, ulpi]
239*5def4c47SEmmanuel Vadot
240*5def4c47SEmmanuel Vadot  snps,quirk-frame-length-adjustment:
241*5def4c47SEmmanuel Vadot    description:
242*5def4c47SEmmanuel Vadot      Value for GFLADJ_30MHZ field of GFLADJ register for post-silicon frame
243*5def4c47SEmmanuel Vadot      length adjustment when the fladj_30mhz_sdbnd signal is invalid or
244*5def4c47SEmmanuel Vadot      incorrect.
245*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
246*5def4c47SEmmanuel Vadot    minimum: 0
247*5def4c47SEmmanuel Vadot    maximum: 0x3f
248*5def4c47SEmmanuel Vadot
249*5def4c47SEmmanuel Vadot  snps,rx-thr-num-pkt-prd:
250*5def4c47SEmmanuel Vadot    description:
251*5def4c47SEmmanuel Vadot      Periodic ESS RX packet threshold count (host mode only). Set this and
252*5def4c47SEmmanuel Vadot      snps,rx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
253*5def4c47SEmmanuel Vadot      programming guide section 1.2.4) to enable periodic ESS RX threshold.
254*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
255*5def4c47SEmmanuel Vadot    minimum: 1
256*5def4c47SEmmanuel Vadot    maximum: 16
257*5def4c47SEmmanuel Vadot
258*5def4c47SEmmanuel Vadot  snps,rx-max-burst-prd:
259*5def4c47SEmmanuel Vadot    description:
260*5def4c47SEmmanuel Vadot      Max periodic ESS RX burst size (host mode only). Set this and
261*5def4c47SEmmanuel Vadot      snps,rx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
262*5def4c47SEmmanuel Vadot      programming guide section 1.2.4) to enable periodic ESS RX threshold.
263*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
264*5def4c47SEmmanuel Vadot    minimum: 1
265*5def4c47SEmmanuel Vadot    maximum: 16
266*5def4c47SEmmanuel Vadot
267*5def4c47SEmmanuel Vadot  snps,tx-thr-num-pkt-prd:
268*5def4c47SEmmanuel Vadot    description:
269*5def4c47SEmmanuel Vadot      Periodic ESS TX packet threshold count (host mode only). Set this and
270*5def4c47SEmmanuel Vadot      snps,tx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
271*5def4c47SEmmanuel Vadot      programming guide section 1.2.3) to enable periodic ESS TX threshold.
272*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
273*5def4c47SEmmanuel Vadot    minimum: 1
274*5def4c47SEmmanuel Vadot    maximum: 16
275*5def4c47SEmmanuel Vadot
276*5def4c47SEmmanuel Vadot  snps,tx-max-burst-prd:
277*5def4c47SEmmanuel Vadot    description:
278*5def4c47SEmmanuel Vadot      Max periodic ESS TX burst size (host mode only). Set this and
279*5def4c47SEmmanuel Vadot      snps,tx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
280*5def4c47SEmmanuel Vadot      programming guide section 1.2.3) to enable periodic ESS TX threshold.
281*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
282*5def4c47SEmmanuel Vadot    minimum: 1
283*5def4c47SEmmanuel Vadot    maximum: 16
284*5def4c47SEmmanuel Vadot
285*5def4c47SEmmanuel Vadot  tx-fifo-resize:
286*5def4c47SEmmanuel Vadot    description: Determines if the FIFO *has* to be reallocated
287*5def4c47SEmmanuel Vadot    deprecated: true
288*5def4c47SEmmanuel Vadot    type: boolean
289*5def4c47SEmmanuel Vadot
290*5def4c47SEmmanuel Vadot  snps,incr-burst-type-adjustment:
291*5def4c47SEmmanuel Vadot    description:
292*5def4c47SEmmanuel Vadot      Value for INCR burst type of GSBUSCFG0 register, undefined length INCR
293*5def4c47SEmmanuel Vadot      burst type enable and INCRx type. A single value means INCRX burst mode
294*5def4c47SEmmanuel Vadot      enabled. If more than one value specified, undefined length INCR burst
295*5def4c47SEmmanuel Vadot      type will be enabled with burst lengths utilized up to the maximum
296*5def4c47SEmmanuel Vadot      of the values passed in this property.
297*5def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
298*5def4c47SEmmanuel Vadot    minItems: 1
299*5def4c47SEmmanuel Vadot    maxItems: 8
300*5def4c47SEmmanuel Vadot    uniqueItems: true
301*5def4c47SEmmanuel Vadot    items:
302*5def4c47SEmmanuel Vadot      enum: [1, 4, 8, 16, 32, 64, 128, 256]
303*5def4c47SEmmanuel Vadot
304*5def4c47SEmmanuel VadotunevaluatedProperties: false
305*5def4c47SEmmanuel Vadot
306*5def4c47SEmmanuel Vadotrequired:
307*5def4c47SEmmanuel Vadot  - compatible
308*5def4c47SEmmanuel Vadot  - reg
309*5def4c47SEmmanuel Vadot  - interrupts
310*5def4c47SEmmanuel Vadot
311*5def4c47SEmmanuel Vadotexamples:
312*5def4c47SEmmanuel Vadot  - |
313*5def4c47SEmmanuel Vadot    usb@4a030000 {
314*5def4c47SEmmanuel Vadot      compatible = "snps,dwc3";
315*5def4c47SEmmanuel Vadot      reg = <0x4a030000 0xcfff>;
316*5def4c47SEmmanuel Vadot      interrupts = <0 92 4>;
317*5def4c47SEmmanuel Vadot      usb-phy = <&usb2_phy>, <&usb3_phy>;
318*5def4c47SEmmanuel Vadot      snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
319*5def4c47SEmmanuel Vadot    };
320*5def4c47SEmmanuel Vadot  - |
321*5def4c47SEmmanuel Vadot    usb@4a000000 {
322*5def4c47SEmmanuel Vadot      compatible = "snps,dwc3";
323*5def4c47SEmmanuel Vadot      reg = <0x4a000000 0xcfff>;
324*5def4c47SEmmanuel Vadot      interrupts = <0 92 4>;
325*5def4c47SEmmanuel Vadot      clocks = <&clk 1>, <&clk 2>, <&clk 3>;
326*5def4c47SEmmanuel Vadot      clock-names = "bus_early", "ref", "suspend";
327*5def4c47SEmmanuel Vadot      phys = <&usb2_phy>, <&usb3_phy>;
328*5def4c47SEmmanuel Vadot      phy-names = "usb2-phy", "usb3-phy";
329*5def4c47SEmmanuel Vadot      snps,dis_u2_susphy_quirk;
330*5def4c47SEmmanuel Vadot      snps,dis_enblslpm_quirk;
331*5def4c47SEmmanuel Vadot    };
332*5def4c47SEmmanuel Vadot...
333