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