xref: /freebsd/sys/contrib/device-tree/Bindings/usb/snps,dwc3.yaml (revision 2eb4d8dc723da3cf7d735a3226ae49da4c8c5dbc)
15def4c47SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
25def4c47SEmmanuel Vadot%YAML 1.2
35def4c47SEmmanuel Vadot---
45def4c47SEmmanuel Vadot$id: http://devicetree.org/schemas/usb/snps,dwc3.yaml#
55def4c47SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
65def4c47SEmmanuel Vadot
75def4c47SEmmanuel Vadottitle: Synopsys DesignWare USB3 Controller
85def4c47SEmmanuel Vadot
95def4c47SEmmanuel Vadotmaintainers:
105def4c47SEmmanuel Vadot  - Felipe Balbi <balbi@kernel.org>
115def4c47SEmmanuel Vadot
125def4c47SEmmanuel Vadotdescription:
135def4c47SEmmanuel Vadot  This is usually a subnode to DWC3 glue to which it is connected, but can also
145def4c47SEmmanuel Vadot  be presented as a standalone DT node with an optional vendor-specific
155def4c47SEmmanuel Vadot  compatible string.
165def4c47SEmmanuel Vadot
175def4c47SEmmanuel VadotallOf:
185def4c47SEmmanuel Vadot  - $ref: usb-drd.yaml#
195def4c47SEmmanuel Vadot  - if:
205def4c47SEmmanuel Vadot      properties:
215def4c47SEmmanuel Vadot        dr_mode:
225def4c47SEmmanuel Vadot          const: peripheral
235def4c47SEmmanuel Vadot
245def4c47SEmmanuel Vadot      required:
255def4c47SEmmanuel Vadot        - dr_mode
265def4c47SEmmanuel Vadot    then:
275def4c47SEmmanuel Vadot      $ref: usb.yaml#
285def4c47SEmmanuel Vadot    else:
295def4c47SEmmanuel Vadot      $ref: usb-xhci.yaml#
305def4c47SEmmanuel Vadot
315def4c47SEmmanuel Vadotproperties:
325def4c47SEmmanuel Vadot  compatible:
335def4c47SEmmanuel Vadot    contains:
345def4c47SEmmanuel Vadot      oneOf:
355def4c47SEmmanuel Vadot        - const: snps,dwc3
365def4c47SEmmanuel Vadot        - const: synopsys,dwc3
375def4c47SEmmanuel Vadot          deprecated: true
385def4c47SEmmanuel Vadot
395def4c47SEmmanuel Vadot  interrupts:
405def4c47SEmmanuel Vadot    description:
415def4c47SEmmanuel Vadot      It's either a single common DWC3 interrupt (dwc_usb3) or individual
425def4c47SEmmanuel Vadot      interrupts for the host, gadget and DRD modes.
435def4c47SEmmanuel Vadot    minItems: 1
445def4c47SEmmanuel Vadot    maxItems: 3
455def4c47SEmmanuel Vadot
465def4c47SEmmanuel Vadot  interrupt-names:
475def4c47SEmmanuel Vadot    minItems: 1
485def4c47SEmmanuel Vadot    maxItems: 3
495def4c47SEmmanuel Vadot    oneOf:
505def4c47SEmmanuel Vadot      - const: dwc_usb3
515def4c47SEmmanuel Vadot      - items:
525def4c47SEmmanuel Vadot          enum: [host, peripheral, otg]
535def4c47SEmmanuel Vadot
545def4c47SEmmanuel Vadot  clocks:
555def4c47SEmmanuel Vadot    description:
565def4c47SEmmanuel Vadot      In general the core supports three types of clocks. bus_early is a
575def4c47SEmmanuel Vadot      SoC Bus Clock (AHB/AXI/Native). ref generates ITP when the UTMI/ULPI
585def4c47SEmmanuel Vadot      PHY is suspended. suspend clocks a small part of the USB3 core when
595def4c47SEmmanuel Vadot      SS PHY in P3. But particular cases may differ from that having less
605def4c47SEmmanuel Vadot      or more clock sources with another names.
615def4c47SEmmanuel Vadot
625def4c47SEmmanuel Vadot  clock-names:
635def4c47SEmmanuel Vadot    contains:
645def4c47SEmmanuel Vadot      anyOf:
655def4c47SEmmanuel Vadot        - enum: [bus_early, ref, suspend]
665def4c47SEmmanuel Vadot        - true
675def4c47SEmmanuel Vadot
685def4c47SEmmanuel Vadot  usb-phy:
695def4c47SEmmanuel Vadot    minItems: 1
705def4c47SEmmanuel Vadot    items:
715def4c47SEmmanuel Vadot      - description: USB2/HS PHY
725def4c47SEmmanuel Vadot      - description: USB3/SS PHY
735def4c47SEmmanuel Vadot
745def4c47SEmmanuel Vadot  phys:
755def4c47SEmmanuel Vadot    minItems: 1
765def4c47SEmmanuel Vadot    items:
775def4c47SEmmanuel Vadot      - description: USB2/HS PHY
785def4c47SEmmanuel Vadot      - description: USB3/SS PHY
795def4c47SEmmanuel Vadot
805def4c47SEmmanuel Vadot  phy-names:
815def4c47SEmmanuel Vadot    minItems: 1
825def4c47SEmmanuel Vadot    items:
835def4c47SEmmanuel Vadot      - const: usb2-phy
845def4c47SEmmanuel Vadot      - const: usb3-phy
855def4c47SEmmanuel Vadot
865def4c47SEmmanuel Vadot  resets:
875def4c47SEmmanuel Vadot    minItems: 1
885def4c47SEmmanuel Vadot
895def4c47SEmmanuel Vadot  snps,usb2-lpm-disable:
90*2eb4d8dcSEmmanuel Vadot    description: Indicate if we don't want to enable USB2 HW LPM for host
91*2eb4d8dcSEmmanuel Vadot      mode.
925def4c47SEmmanuel Vadot    type: boolean
935def4c47SEmmanuel Vadot
945def4c47SEmmanuel Vadot  snps,usb3_lpm_capable:
955def4c47SEmmanuel Vadot    description: Determines if platform is USB3 LPM capable
965def4c47SEmmanuel Vadot    type: boolean
975def4c47SEmmanuel Vadot
98*2eb4d8dcSEmmanuel Vadot  snps,usb2-gadget-lpm-disable:
99*2eb4d8dcSEmmanuel Vadot    description: Indicate if we don't want to enable USB2 HW LPM for gadget
100*2eb4d8dcSEmmanuel Vadot      mode.
101*2eb4d8dcSEmmanuel Vadot    type: boolean
102*2eb4d8dcSEmmanuel Vadot
1035def4c47SEmmanuel Vadot  snps,dis-start-transfer-quirk:
1045def4c47SEmmanuel Vadot    description:
1055def4c47SEmmanuel Vadot      When set, disable isoc START TRANSFER command failure SW work-around
1065def4c47SEmmanuel Vadot      for DWC_usb31 version 1.70a-ea06 and prior.
1075def4c47SEmmanuel Vadot    type: boolean
1085def4c47SEmmanuel Vadot
1095def4c47SEmmanuel Vadot  snps,disable_scramble_quirk:
1105def4c47SEmmanuel Vadot    description:
1115def4c47SEmmanuel Vadot      True when SW should disable data scrambling. Only really useful for FPGA
1125def4c47SEmmanuel Vadot      builds.
1135def4c47SEmmanuel Vadot    type: boolean
1145def4c47SEmmanuel Vadot
1155def4c47SEmmanuel Vadot  snps,has-lpm-erratum:
1165def4c47SEmmanuel Vadot    description: True when DWC3 was configured with LPM Erratum enabled
1175def4c47SEmmanuel Vadot    type: boolean
1185def4c47SEmmanuel Vadot
1195def4c47SEmmanuel Vadot  snps,lpm-nyet-threshold:
1205def4c47SEmmanuel Vadot    description: LPM NYET threshold
1215def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
1225def4c47SEmmanuel Vadot
1235def4c47SEmmanuel Vadot  snps,u2exit_lfps_quirk:
1245def4c47SEmmanuel Vadot    description: Set if we want to enable u2exit lfps quirk
1255def4c47SEmmanuel Vadot    type: boolean
1265def4c47SEmmanuel Vadot
1275def4c47SEmmanuel Vadot  snps,u2ss_inp3_quirk:
1285def4c47SEmmanuel Vadot    description: Set if we enable P3 OK for U2/SS Inactive quirk
1295def4c47SEmmanuel Vadot    type: boolean
1305def4c47SEmmanuel Vadot
1315def4c47SEmmanuel Vadot  snps,req_p1p2p3_quirk:
1325def4c47SEmmanuel Vadot    description:
1335def4c47SEmmanuel Vadot      When set, the core will always request for P1/P2/P3 transition sequence.
1345def4c47SEmmanuel Vadot    type: boolean
1355def4c47SEmmanuel Vadot
1365def4c47SEmmanuel Vadot  snps,del_p1p2p3_quirk:
1375def4c47SEmmanuel Vadot    description:
1385def4c47SEmmanuel Vadot      When set core will delay P1/P2/P3 until a certain amount of 8B10B errors
1395def4c47SEmmanuel Vadot      occur.
1405def4c47SEmmanuel Vadot    type: boolean
1415def4c47SEmmanuel Vadot
1425def4c47SEmmanuel Vadot  snps,del_phy_power_chg_quirk:
1435def4c47SEmmanuel Vadot    description: When set core will delay PHY power change from P0 to P1/P2/P3.
1445def4c47SEmmanuel Vadot    type: boolean
1455def4c47SEmmanuel Vadot
1465def4c47SEmmanuel Vadot  snps,lfps_filter_quirk:
1475def4c47SEmmanuel Vadot    description: When set core will filter LFPS reception.
1485def4c47SEmmanuel Vadot    type: boolean
1495def4c47SEmmanuel Vadot
1505def4c47SEmmanuel Vadot  snps,rx_detect_poll_quirk:
1515def4c47SEmmanuel Vadot    description:
1525def4c47SEmmanuel Vadot      when set core will disable a 400us delay to start Polling LFPS after
1535def4c47SEmmanuel Vadot      RX.Detect.
1545def4c47SEmmanuel Vadot    type: boolean
1555def4c47SEmmanuel Vadot
1565def4c47SEmmanuel Vadot  snps,tx_de_emphasis_quirk:
1575def4c47SEmmanuel Vadot    description: When set core will set Tx de-emphasis value
1585def4c47SEmmanuel Vadot    type: boolean
1595def4c47SEmmanuel Vadot
1605def4c47SEmmanuel Vadot  snps,tx_de_emphasis:
1615def4c47SEmmanuel Vadot    description:
1625def4c47SEmmanuel Vadot      The value driven to the PHY is controlled by the LTSSM during USB3
1635def4c47SEmmanuel Vadot      Compliance mode.
1645def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
1655def4c47SEmmanuel Vadot    enum:
1665def4c47SEmmanuel Vadot      - 0 # -6dB de-emphasis
1675def4c47SEmmanuel Vadot      - 1 # -3.5dB de-emphasis
1685def4c47SEmmanuel Vadot      - 2 # No de-emphasis
1695def4c47SEmmanuel Vadot
1705def4c47SEmmanuel Vadot  snps,dis_u3_susphy_quirk:
1715def4c47SEmmanuel Vadot    description: When set core will disable USB3 suspend phy
1725def4c47SEmmanuel Vadot    type: boolean
1735def4c47SEmmanuel Vadot
1745def4c47SEmmanuel Vadot  snps,dis_u2_susphy_quirk:
1755def4c47SEmmanuel Vadot    description: When set core will disable USB2 suspend phy
1765def4c47SEmmanuel Vadot    type: boolean
1775def4c47SEmmanuel Vadot
1785def4c47SEmmanuel Vadot  snps,dis_enblslpm_quirk:
1795def4c47SEmmanuel Vadot    description:
1805def4c47SEmmanuel Vadot      When set clears the enblslpm in GUSB2PHYCFG, disabling the suspend signal
1815def4c47SEmmanuel Vadot      to the PHY.
1825def4c47SEmmanuel Vadot    type: boolean
1835def4c47SEmmanuel Vadot
1845def4c47SEmmanuel Vadot  snps,dis-u1-entry-quirk:
1855def4c47SEmmanuel Vadot    description: Set if link entering into U1 needs to be disabled
1865def4c47SEmmanuel Vadot    type: boolean
1875def4c47SEmmanuel Vadot
1885def4c47SEmmanuel Vadot  snps,dis-u2-entry-quirk:
1895def4c47SEmmanuel Vadot    description: Set if link entering into U2 needs to be disabled
1905def4c47SEmmanuel Vadot    type: boolean
1915def4c47SEmmanuel Vadot
1925def4c47SEmmanuel Vadot  snps,dis_rxdet_inp3_quirk:
1935def4c47SEmmanuel Vadot    description:
1945def4c47SEmmanuel Vadot      When set core will disable receiver detection in PHY P3 power state.
1955def4c47SEmmanuel Vadot    type: boolean
1965def4c47SEmmanuel Vadot
1975def4c47SEmmanuel Vadot  snps,dis-u2-freeclk-exists-quirk:
1985def4c47SEmmanuel Vadot    description:
1995def4c47SEmmanuel Vadot      When set, clear the u2_freeclk_exists in GUSB2PHYCFG, specify that USB2
2005def4c47SEmmanuel Vadot      PHY doesn't provide a free-running PHY clock.
2015def4c47SEmmanuel Vadot    type: boolean
2025def4c47SEmmanuel Vadot
2035def4c47SEmmanuel Vadot  snps,dis-del-phy-power-chg-quirk:
2045def4c47SEmmanuel Vadot    description:
2055def4c47SEmmanuel Vadot      When set core will change PHY power from P0 to P1/P2/P3 without delay.
2065def4c47SEmmanuel Vadot    type: boolean
2075def4c47SEmmanuel Vadot
2085def4c47SEmmanuel Vadot  snps,dis-tx-ipgap-linecheck-quirk:
2095def4c47SEmmanuel Vadot    description: When set, disable u2mac linestate check during HS transmit
2105def4c47SEmmanuel Vadot    type: boolean
2115def4c47SEmmanuel Vadot
2125def4c47SEmmanuel Vadot  snps,parkmode-disable-ss-quirk:
2135def4c47SEmmanuel Vadot    description:
2145def4c47SEmmanuel Vadot      When set, all SuperSpeed bus instances in park mode are disabled.
2155def4c47SEmmanuel Vadot    type: boolean
2165def4c47SEmmanuel Vadot
2175def4c47SEmmanuel Vadot  snps,dis_metastability_quirk:
2185def4c47SEmmanuel Vadot    description:
2195def4c47SEmmanuel Vadot      When set, disable metastability workaround. CAUTION! Use only if you are
2205def4c47SEmmanuel Vadot      absolutely sure of it.
2215def4c47SEmmanuel Vadot    type: boolean
2225def4c47SEmmanuel Vadot
2235def4c47SEmmanuel Vadot  snps,dis-split-quirk:
2245def4c47SEmmanuel Vadot    description:
2255def4c47SEmmanuel Vadot      When set, change the way URBs are handled by the driver. Needed to
2265def4c47SEmmanuel Vadot      avoid -EPROTO errors with usbhid on some devices (Hikey 970).
2275def4c47SEmmanuel Vadot    type: boolean
2285def4c47SEmmanuel Vadot
2295def4c47SEmmanuel Vadot  snps,is-utmi-l1-suspend:
2305def4c47SEmmanuel Vadot    description:
2315def4c47SEmmanuel Vadot      True when DWC3 asserts output signal utmi_l1_suspend_n, false when
2325def4c47SEmmanuel Vadot      asserts utmi_sleep_n.
2335def4c47SEmmanuel Vadot    type: boolean
2345def4c47SEmmanuel Vadot
2355def4c47SEmmanuel Vadot  snps,hird-threshold:
2365def4c47SEmmanuel Vadot    description: HIRD threshold
2375def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
2385def4c47SEmmanuel Vadot
2395def4c47SEmmanuel Vadot  snps,hsphy_interface:
2405def4c47SEmmanuel Vadot    description:
2415def4c47SEmmanuel Vadot      High-Speed PHY interface selection between UTMI+ and ULPI when the
2425def4c47SEmmanuel Vadot      DWC_USB3_HSPHY_INTERFACE has value 3.
2435def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
2445def4c47SEmmanuel Vadot    enum: [utmi, ulpi]
2455def4c47SEmmanuel Vadot
2465def4c47SEmmanuel Vadot  snps,quirk-frame-length-adjustment:
2475def4c47SEmmanuel Vadot    description:
2485def4c47SEmmanuel Vadot      Value for GFLADJ_30MHZ field of GFLADJ register for post-silicon frame
2495def4c47SEmmanuel Vadot      length adjustment when the fladj_30mhz_sdbnd signal is invalid or
2505def4c47SEmmanuel Vadot      incorrect.
2515def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
2525def4c47SEmmanuel Vadot    minimum: 0
2535def4c47SEmmanuel Vadot    maximum: 0x3f
2545def4c47SEmmanuel Vadot
2555def4c47SEmmanuel Vadot  snps,rx-thr-num-pkt-prd:
2565def4c47SEmmanuel Vadot    description:
2575def4c47SEmmanuel Vadot      Periodic ESS RX packet threshold count (host mode only). Set this and
2585def4c47SEmmanuel Vadot      snps,rx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
2595def4c47SEmmanuel Vadot      programming guide section 1.2.4) to enable periodic ESS RX threshold.
2605def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
2615def4c47SEmmanuel Vadot    minimum: 1
2625def4c47SEmmanuel Vadot    maximum: 16
2635def4c47SEmmanuel Vadot
2645def4c47SEmmanuel Vadot  snps,rx-max-burst-prd:
2655def4c47SEmmanuel Vadot    description:
2665def4c47SEmmanuel Vadot      Max periodic ESS RX burst size (host mode only). Set this and
2675def4c47SEmmanuel Vadot      snps,rx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
2685def4c47SEmmanuel Vadot      programming guide section 1.2.4) to enable periodic ESS RX threshold.
2695def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
2705def4c47SEmmanuel Vadot    minimum: 1
2715def4c47SEmmanuel Vadot    maximum: 16
2725def4c47SEmmanuel Vadot
2735def4c47SEmmanuel Vadot  snps,tx-thr-num-pkt-prd:
2745def4c47SEmmanuel Vadot    description:
2755def4c47SEmmanuel Vadot      Periodic ESS TX packet threshold count (host mode only). Set this and
2765def4c47SEmmanuel Vadot      snps,tx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
2775def4c47SEmmanuel Vadot      programming guide section 1.2.3) to enable periodic ESS TX threshold.
2785def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
2795def4c47SEmmanuel Vadot    minimum: 1
2805def4c47SEmmanuel Vadot    maximum: 16
2815def4c47SEmmanuel Vadot
2825def4c47SEmmanuel Vadot  snps,tx-max-burst-prd:
2835def4c47SEmmanuel Vadot    description:
2845def4c47SEmmanuel Vadot      Max periodic ESS TX burst size (host mode only). Set this and
2855def4c47SEmmanuel Vadot      snps,tx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
2865def4c47SEmmanuel Vadot      programming guide section 1.2.3) to enable periodic ESS TX threshold.
2875def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
2885def4c47SEmmanuel Vadot    minimum: 1
2895def4c47SEmmanuel Vadot    maximum: 16
2905def4c47SEmmanuel Vadot
2915def4c47SEmmanuel Vadot  tx-fifo-resize:
2925def4c47SEmmanuel Vadot    description: Determines if the FIFO *has* to be reallocated
2935def4c47SEmmanuel Vadot    deprecated: true
2945def4c47SEmmanuel Vadot    type: boolean
2955def4c47SEmmanuel Vadot
2965def4c47SEmmanuel Vadot  snps,incr-burst-type-adjustment:
2975def4c47SEmmanuel Vadot    description:
2985def4c47SEmmanuel Vadot      Value for INCR burst type of GSBUSCFG0 register, undefined length INCR
2995def4c47SEmmanuel Vadot      burst type enable and INCRx type. A single value means INCRX burst mode
3005def4c47SEmmanuel Vadot      enabled. If more than one value specified, undefined length INCR burst
3015def4c47SEmmanuel Vadot      type will be enabled with burst lengths utilized up to the maximum
3025def4c47SEmmanuel Vadot      of the values passed in this property.
3035def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
3045def4c47SEmmanuel Vadot    minItems: 1
3055def4c47SEmmanuel Vadot    maxItems: 8
3065def4c47SEmmanuel Vadot    uniqueItems: true
3075def4c47SEmmanuel Vadot    items:
3085def4c47SEmmanuel Vadot      enum: [1, 4, 8, 16, 32, 64, 128, 256]
3095def4c47SEmmanuel Vadot
3105def4c47SEmmanuel VadotunevaluatedProperties: false
3115def4c47SEmmanuel Vadot
3125def4c47SEmmanuel Vadotrequired:
3135def4c47SEmmanuel Vadot  - compatible
3145def4c47SEmmanuel Vadot  - reg
3155def4c47SEmmanuel Vadot  - interrupts
3165def4c47SEmmanuel Vadot
3175def4c47SEmmanuel Vadotexamples:
3185def4c47SEmmanuel Vadot  - |
3195def4c47SEmmanuel Vadot    usb@4a030000 {
3205def4c47SEmmanuel Vadot      compatible = "snps,dwc3";
3215def4c47SEmmanuel Vadot      reg = <0x4a030000 0xcfff>;
3225def4c47SEmmanuel Vadot      interrupts = <0 92 4>;
3235def4c47SEmmanuel Vadot      usb-phy = <&usb2_phy>, <&usb3_phy>;
3245def4c47SEmmanuel Vadot      snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
3255def4c47SEmmanuel Vadot    };
3265def4c47SEmmanuel Vadot  - |
3275def4c47SEmmanuel Vadot    usb@4a000000 {
3285def4c47SEmmanuel Vadot      compatible = "snps,dwc3";
3295def4c47SEmmanuel Vadot      reg = <0x4a000000 0xcfff>;
3305def4c47SEmmanuel Vadot      interrupts = <0 92 4>;
3315def4c47SEmmanuel Vadot      clocks = <&clk 1>, <&clk 2>, <&clk 3>;
3325def4c47SEmmanuel Vadot      clock-names = "bus_early", "ref", "suspend";
3335def4c47SEmmanuel Vadot      phys = <&usb2_phy>, <&usb3_phy>;
3345def4c47SEmmanuel Vadot      phy-names = "usb2-phy", "usb3-phy";
3355def4c47SEmmanuel Vadot      snps,dis_u2_susphy_quirk;
3365def4c47SEmmanuel Vadot      snps,dis_enblslpm_quirk;
3375def4c47SEmmanuel Vadot    };
3385def4c47SEmmanuel Vadot...
339