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