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