1*cb7aa33aSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
2*cb7aa33aSEmmanuel Vadot%YAML 1.2
3*cb7aa33aSEmmanuel Vadot---
4*cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*cb7aa33aSEmmanuel Vadot
7*cb7aa33aSEmmanuel Vadottitle: Rockchip RK3399 SuperSpeed DWC3 USB SoC controller
8*cb7aa33aSEmmanuel Vadot
9*cb7aa33aSEmmanuel Vadotmaintainers:
10*cb7aa33aSEmmanuel Vadot  - Heiko Stuebner <heiko@sntech.de>
11*cb7aa33aSEmmanuel Vadot
12*cb7aa33aSEmmanuel Vadotproperties:
13*cb7aa33aSEmmanuel Vadot  compatible:
14*cb7aa33aSEmmanuel Vadot    const: rockchip,rk3399-dwc3
15*cb7aa33aSEmmanuel Vadot
16*cb7aa33aSEmmanuel Vadot  '#address-cells':
17*cb7aa33aSEmmanuel Vadot    const: 2
18*cb7aa33aSEmmanuel Vadot
19*cb7aa33aSEmmanuel Vadot  '#size-cells':
20*cb7aa33aSEmmanuel Vadot    const: 2
21*cb7aa33aSEmmanuel Vadot
22*cb7aa33aSEmmanuel Vadot  ranges: true
23*cb7aa33aSEmmanuel Vadot
24*cb7aa33aSEmmanuel Vadot  clocks:
25*cb7aa33aSEmmanuel Vadot    items:
26*cb7aa33aSEmmanuel Vadot      - description:
27*cb7aa33aSEmmanuel Vadot          Controller reference clock, must to be 24 MHz
28*cb7aa33aSEmmanuel Vadot      - description:
29*cb7aa33aSEmmanuel Vadot          Controller suspend clock, must to be 24 MHz or 32 KHz
30*cb7aa33aSEmmanuel Vadot      - description:
31*cb7aa33aSEmmanuel Vadot          Master/Core clock, must to be >= 62.5 MHz for SS
32*cb7aa33aSEmmanuel Vadot          operation and >= 30MHz for HS operation
33*cb7aa33aSEmmanuel Vadot      - description:
34*cb7aa33aSEmmanuel Vadot          USB3 aclk peri
35*cb7aa33aSEmmanuel Vadot      - description:
36*cb7aa33aSEmmanuel Vadot          USB3 aclk
37*cb7aa33aSEmmanuel Vadot      - description:
38*cb7aa33aSEmmanuel Vadot          Controller grf clock
39*cb7aa33aSEmmanuel Vadot
40*cb7aa33aSEmmanuel Vadot  clock-names:
41*cb7aa33aSEmmanuel Vadot    items:
42*cb7aa33aSEmmanuel Vadot      - const: ref_clk
43*cb7aa33aSEmmanuel Vadot      - const: suspend_clk
44*cb7aa33aSEmmanuel Vadot      - const: bus_clk
45*cb7aa33aSEmmanuel Vadot      - const: aclk_usb3_rksoc_axi_perf
46*cb7aa33aSEmmanuel Vadot      - const: aclk_usb3
47*cb7aa33aSEmmanuel Vadot      - const: grf_clk
48*cb7aa33aSEmmanuel Vadot
49*cb7aa33aSEmmanuel Vadot  resets:
50*cb7aa33aSEmmanuel Vadot    maxItems: 1
51*cb7aa33aSEmmanuel Vadot
52*cb7aa33aSEmmanuel Vadot  reset-names:
53*cb7aa33aSEmmanuel Vadot    const: usb3-otg
54*cb7aa33aSEmmanuel Vadot
55*cb7aa33aSEmmanuel VadotpatternProperties:
56*cb7aa33aSEmmanuel Vadot  '^usb@':
57*cb7aa33aSEmmanuel Vadot    $ref: snps,dwc3.yaml#
58*cb7aa33aSEmmanuel Vadot
59*cb7aa33aSEmmanuel VadotadditionalProperties: false
60*cb7aa33aSEmmanuel Vadot
61*cb7aa33aSEmmanuel Vadotrequired:
62*cb7aa33aSEmmanuel Vadot  - compatible
63*cb7aa33aSEmmanuel Vadot  - '#address-cells'
64*cb7aa33aSEmmanuel Vadot  - '#size-cells'
65*cb7aa33aSEmmanuel Vadot  - ranges
66*cb7aa33aSEmmanuel Vadot  - clocks
67*cb7aa33aSEmmanuel Vadot  - clock-names
68*cb7aa33aSEmmanuel Vadot  - resets
69*cb7aa33aSEmmanuel Vadot  - reset-names
70*cb7aa33aSEmmanuel Vadot
71*cb7aa33aSEmmanuel Vadotexamples:
72*cb7aa33aSEmmanuel Vadot  - |
73*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/clock/rk3399-cru.h>
74*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/power/rk3399-power.h>
75*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
76*cb7aa33aSEmmanuel Vadot
77*cb7aa33aSEmmanuel Vadot    bus {
78*cb7aa33aSEmmanuel Vadot        #address-cells = <2>;
79*cb7aa33aSEmmanuel Vadot        #size-cells = <2>;
80*cb7aa33aSEmmanuel Vadot
81*cb7aa33aSEmmanuel Vadot        usb {
82*cb7aa33aSEmmanuel Vadot            compatible = "rockchip,rk3399-dwc3";
83*cb7aa33aSEmmanuel Vadot            #address-cells = <2>;
84*cb7aa33aSEmmanuel Vadot            #size-cells = <2>;
85*cb7aa33aSEmmanuel Vadot            ranges;
86*cb7aa33aSEmmanuel Vadot            clocks = <&cru SCLK_USB3OTG0_REF>, <&cru SCLK_USB3OTG0_SUSPEND>,
87*cb7aa33aSEmmanuel Vadot                     <&cru ACLK_USB3OTG0>, <&cru ACLK_USB3_RKSOC_AXI_PERF>,
88*cb7aa33aSEmmanuel Vadot                     <&cru ACLK_USB3>, <&cru ACLK_USB3_GRF>;
89*cb7aa33aSEmmanuel Vadot            clock-names = "ref_clk", "suspend_clk",
90*cb7aa33aSEmmanuel Vadot                          "bus_clk", "aclk_usb3_rksoc_axi_perf",
91*cb7aa33aSEmmanuel Vadot                          "aclk_usb3", "grf_clk";
92*cb7aa33aSEmmanuel Vadot            resets = <&cru SRST_A_USB3_OTG0>;
93*cb7aa33aSEmmanuel Vadot            reset-names = "usb3-otg";
94*cb7aa33aSEmmanuel Vadot
95*cb7aa33aSEmmanuel Vadot            usb@fe800000 {
96*cb7aa33aSEmmanuel Vadot                compatible = "snps,dwc3";
97*cb7aa33aSEmmanuel Vadot                reg = <0x0 0xfe800000 0x0 0x100000>;
98*cb7aa33aSEmmanuel Vadot                interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
99*cb7aa33aSEmmanuel Vadot                clocks = <&cru SCLK_USB3OTG0_REF>, <&cru ACLK_USB3OTG0>,
100*cb7aa33aSEmmanuel Vadot                         <&cru SCLK_USB3OTG0_SUSPEND>;
101*cb7aa33aSEmmanuel Vadot                clock-names = "ref", "bus_early", "suspend";
102*cb7aa33aSEmmanuel Vadot                dr_mode = "otg";
103*cb7aa33aSEmmanuel Vadot                phys = <&u2phy0_otg>, <&tcphy0_usb3>;
104*cb7aa33aSEmmanuel Vadot                phy-names = "usb2-phy", "usb3-phy";
105*cb7aa33aSEmmanuel Vadot                phy_type = "utmi_wide";
106*cb7aa33aSEmmanuel Vadot                snps,dis_enblslpm_quirk;
107*cb7aa33aSEmmanuel Vadot                snps,dis-u2-freeclk-exists-quirk;
108*cb7aa33aSEmmanuel Vadot                snps,dis_u2_susphy_quirk;
109*cb7aa33aSEmmanuel Vadot                snps,dis-del-phy-power-chg-quirk;
110*cb7aa33aSEmmanuel Vadot                snps,dis-tx-ipgap-linecheck-quirk;
111*cb7aa33aSEmmanuel Vadot                power-domains = <&power RK3399_PD_USB3>;
112*cb7aa33aSEmmanuel Vadot            };
113*cb7aa33aSEmmanuel Vadot        };
114*cb7aa33aSEmmanuel Vadot    };
115*cb7aa33aSEmmanuel Vadot...
116