1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/samsung,exynos-dwc3.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung Exynos SoC USB 3.0 DWC3 Controller
8
9maintainers:
10  - Krzysztof Kozlowski <krzk@kernel.org>
11
12properties:
13  compatible:
14    enum:
15      - google,gs101-dwusb3
16      - samsung,exynos5250-dwusb3
17      - samsung,exynos5433-dwusb3
18      - samsung,exynos7-dwusb3
19      - samsung,exynos850-dwusb3
20
21  '#address-cells':
22    const: 1
23
24  clocks:
25    minItems: 1
26    maxItems: 4
27
28  clock-names:
29    minItems: 1
30    maxItems: 4
31
32  ranges: true
33
34  '#size-cells':
35    const: 1
36
37  vdd10-supply:
38    description: 1.0V power supply
39
40  vdd33-supply:
41    description: 3.0V/3.3V power supply
42
43patternProperties:
44  "^usb@[0-9a-f]+$":
45    $ref: snps,dwc3.yaml#
46    description: Required child node
47
48required:
49  - compatible
50  - '#address-cells'
51  - clocks
52  - clock-names
53  - ranges
54  - '#size-cells'
55  - vdd10-supply
56  - vdd33-supply
57
58allOf:
59  - if:
60      properties:
61        compatible:
62          contains:
63            const: google,gs101-dwusb3
64    then:
65      properties:
66        clocks:
67          minItems: 4
68          maxItems: 4
69        clock-names:
70          items:
71            - const: bus_early
72            - const: susp_clk
73            - const: link_aclk
74            - const: link_pclk
75
76  - if:
77      properties:
78        compatible:
79          contains:
80            const: samsung,exynos5250-dwusb3
81    then:
82      properties:
83        clocks:
84          minItems: 1
85          maxItems: 1
86        clock-names:
87          items:
88            - const: usbdrd30
89
90  - if:
91      properties:
92        compatible:
93          contains:
94            const: samsung,exynos5433-dwusb3
95    then:
96      properties:
97        clocks:
98          minItems: 4
99          maxItems: 4
100        clock-names:
101          items:
102            - const: aclk
103            - const: susp_clk
104            - const: phyclk
105            - const: pipe_pclk
106
107  - if:
108      properties:
109        compatible:
110          contains:
111            const: samsung,exynos7-dwusb3
112    then:
113      properties:
114        clocks:
115          minItems: 3
116          maxItems: 3
117        clock-names:
118          items:
119            - const: usbdrd30
120            - const: usbdrd30_susp_clk
121            - const: usbdrd30_axius_clk
122
123  - if:
124      properties:
125        compatible:
126          contains:
127            const: samsung,exynos850-dwusb3
128    then:
129      properties:
130        clocks:
131          minItems: 2
132          maxItems: 2
133        clock-names:
134          items:
135            - const: bus_early
136            - const: ref
137
138additionalProperties: false
139
140examples:
141  - |
142    #include <dt-bindings/clock/exynos5420.h>
143    #include <dt-bindings/interrupt-controller/arm-gic.h>
144
145    usb@12000000 {
146        compatible = "samsung,exynos5250-dwusb3";
147        #address-cells = <1>;
148        #size-cells = <1>;
149        ranges = <0x0 0x12000000 0x10000>;
150        clocks = <&clock CLK_USBD300>;
151        clock-names = "usbdrd30";
152        vdd33-supply = <&ldo9_reg>;
153        vdd10-supply = <&ldo11_reg>;
154
155        usb@0 {
156            compatible = "snps,dwc3";
157            reg = <0x0 0x10000>;
158            interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
159            phys = <&usbdrd_phy0 0>, <&usbdrd_phy0 1>;
160            phy-names = "usb2-phy", "usb3-phy";
161            snps,dis_u3_susphy_quirk;
162        };
163    };
164