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      - samsung,exynos5250-dwusb3
16      - samsung,exynos5433-dwusb3
17      - samsung,exynos7-dwusb3
18      - samsung,exynos850-dwusb3
19
20  '#address-cells':
21    const: 1
22
23  clocks:
24    minItems: 1
25    maxItems: 4
26
27  clock-names:
28    minItems: 1
29    maxItems: 4
30
31  ranges: true
32
33  '#size-cells':
34    const: 1
35
36  vdd10-supply:
37    description: 1.0V power supply
38
39  vdd33-supply:
40    description: 3.0V/3.3V power supply
41
42patternProperties:
43  "^usb@[0-9a-f]+$":
44    $ref: snps,dwc3.yaml#
45    description: Required child node
46
47required:
48  - compatible
49  - '#address-cells'
50  - clocks
51  - clock-names
52  - ranges
53  - '#size-cells'
54  - vdd10-supply
55  - vdd33-supply
56
57allOf:
58  - if:
59      properties:
60        compatible:
61          contains:
62            const: samsung,exynos5250-dwusb3
63    then:
64      properties:
65        clocks:
66          minItems: 1
67          maxItems: 1
68        clock-names:
69          items:
70            - const: usbdrd30
71
72  - if:
73      properties:
74        compatible:
75          contains:
76            const: samsung,exynos5433-dwusb3
77    then:
78      properties:
79        clocks:
80          minItems: 4
81          maxItems: 4
82        clock-names:
83          items:
84            - const: aclk
85            - const: susp_clk
86            - const: phyclk
87            - const: pipe_pclk
88
89  - if:
90      properties:
91        compatible:
92          contains:
93            const: samsung,exynos7-dwusb3
94    then:
95      properties:
96        clocks:
97          minItems: 3
98          maxItems: 3
99        clock-names:
100          items:
101            - const: usbdrd30
102            - const: usbdrd30_susp_clk
103            - const: usbdrd30_axius_clk
104
105  - if:
106      properties:
107        compatible:
108          contains:
109            const: samsung,exynos850-dwusb3
110    then:
111      properties:
112        clocks:
113          minItems: 2
114          maxItems: 2
115        clock-names:
116          items:
117            - const: bus_early
118            - const: ref
119
120additionalProperties: false
121
122examples:
123  - |
124    #include <dt-bindings/clock/exynos5420.h>
125    #include <dt-bindings/interrupt-controller/arm-gic.h>
126
127    usb@12000000 {
128        compatible = "samsung,exynos5250-dwusb3";
129        #address-cells = <1>;
130        #size-cells = <1>;
131        ranges = <0x0 0x12000000 0x10000>;
132        clocks = <&clock CLK_USBD300>;
133        clock-names = "usbdrd30";
134        vdd33-supply = <&ldo9_reg>;
135        vdd10-supply = <&ldo11_reg>;
136
137        usb@0 {
138            compatible = "snps,dwc3";
139            reg = <0x0 0x10000>;
140            interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
141            phys = <&usbdrd_phy0 0>, <&usbdrd_phy0 1>;
142            phy-names = "usb2-phy", "usb3-phy";
143            snps,dis_u3_susphy_quirk;
144        };
145    };
146