xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/usb/amlogic,meson-g12a-usb-ctrl.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*4882a593Smuzhiyun# Copyright 2019 BayLibre, SAS
3*4882a593Smuzhiyun%YAML 1.2
4*4882a593Smuzhiyun---
5*4882a593Smuzhiyun$id: "http://devicetree.org/schemas/usb/amlogic,meson-g12a-usb-ctrl.yaml#"
6*4882a593Smuzhiyun$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7*4882a593Smuzhiyun
8*4882a593Smuzhiyuntitle: Amlogic Meson G12A DWC3 USB SoC Controller Glue
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunmaintainers:
11*4882a593Smuzhiyun  - Neil Armstrong <narmstrong@baylibre.com>
12*4882a593Smuzhiyun
13*4882a593Smuzhiyundescription: |
14*4882a593Smuzhiyun  The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3
15*4882a593Smuzhiyun  in host-only mode, and a DWC2 IP Core configured for USB2 peripheral mode
16*4882a593Smuzhiyun  only.
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun  A glue connects the DWC3 core to USB2 PHYs and optionally to an USB3 PHY.
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun  One of the USB2 PHYs can be re-routed in peripheral mode to a DWC2 USB IP.
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun  The DWC3 Glue controls the PHY routing and power, an interrupt line is
23*4882a593Smuzhiyun  connected to the Glue to serve as OTG ID change detection.
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun  The Amlogic A1 embeds a DWC3 USB IP Core configured for USB2 in
26*4882a593Smuzhiyun  host-only mode.
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun  The Amlogic GXL, GXM & AXG SoCs doesn't embed an USB3 PHY.
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunproperties:
31*4882a593Smuzhiyun  compatible:
32*4882a593Smuzhiyun    enum:
33*4882a593Smuzhiyun      - amlogic,meson-gxl-usb-ctrl
34*4882a593Smuzhiyun      - amlogic,meson-gxm-usb-ctrl
35*4882a593Smuzhiyun      - amlogic,meson-axg-usb-ctrl
36*4882a593Smuzhiyun      - amlogic,meson-g12a-usb-ctrl
37*4882a593Smuzhiyun      - amlogic,meson-a1-usb-ctrl
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun  ranges: true
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun  "#address-cells":
42*4882a593Smuzhiyun    enum: [ 1, 2 ]
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun  "#size-cells":
45*4882a593Smuzhiyun    enum: [ 1, 2 ]
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun  clocks:
48*4882a593Smuzhiyun    minItems: 1
49*4882a593Smuzhiyun    maxItems: 3
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun  clock-names:
52*4882a593Smuzhiyun    minItems: 1
53*4882a593Smuzhiyun    maxItems: 3
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun  resets:
56*4882a593Smuzhiyun    minItems: 1
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun  reg:
59*4882a593Smuzhiyun    maxItems: 1
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun  interrupts:
62*4882a593Smuzhiyun    maxItems: 1
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun  phy-names:
65*4882a593Smuzhiyun    minItems: 1
66*4882a593Smuzhiyun    maxItems: 3
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun  phys:
69*4882a593Smuzhiyun    minItems: 1
70*4882a593Smuzhiyun    maxItems: 3
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun  dr_mode: true
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun  power-domains:
75*4882a593Smuzhiyun    maxItems: 1
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun  vbus-supply:
78*4882a593Smuzhiyun    description: VBUS power supply when used in OTG switchable mode
79*4882a593Smuzhiyun
80*4882a593SmuzhiyunpatternProperties:
81*4882a593Smuzhiyun  "^usb@[0-9a-f]+$":
82*4882a593Smuzhiyun    type: object
83*4882a593Smuzhiyun
84*4882a593SmuzhiyunadditionalProperties: false
85*4882a593Smuzhiyun
86*4882a593Smuzhiyunrequired:
87*4882a593Smuzhiyun  - compatible
88*4882a593Smuzhiyun  - "#address-cells"
89*4882a593Smuzhiyun  - "#size-cells"
90*4882a593Smuzhiyun  - ranges
91*4882a593Smuzhiyun  - clocks
92*4882a593Smuzhiyun  - resets
93*4882a593Smuzhiyun  - reg
94*4882a593Smuzhiyun  - interrupts
95*4882a593Smuzhiyun  - phy-names
96*4882a593Smuzhiyun  - phys
97*4882a593Smuzhiyun  - dr_mode
98*4882a593Smuzhiyun
99*4882a593SmuzhiyunallOf:
100*4882a593Smuzhiyun  - if:
101*4882a593Smuzhiyun      properties:
102*4882a593Smuzhiyun        compatible:
103*4882a593Smuzhiyun          enum:
104*4882a593Smuzhiyun            - amlogic,meson-g12a-usb-ctrl
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun    then:
107*4882a593Smuzhiyun      properties:
108*4882a593Smuzhiyun        phy-names:
109*4882a593Smuzhiyun          items:
110*4882a593Smuzhiyun            - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
111*4882a593Smuzhiyun            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
112*4882a593Smuzhiyun            - const: usb3-phy0 # USB3 PHY if USB3_0 is used
113*4882a593Smuzhiyun  - if:
114*4882a593Smuzhiyun      properties:
115*4882a593Smuzhiyun        compatible:
116*4882a593Smuzhiyun          enum:
117*4882a593Smuzhiyun            - amlogic,meson-gxl-usb-ctrl
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun    then:
120*4882a593Smuzhiyun      properties:
121*4882a593Smuzhiyun        clocks:
122*4882a593Smuzhiyun          minItems: 2
123*4882a593Smuzhiyun        clock-names:
124*4882a593Smuzhiyun          items:
125*4882a593Smuzhiyun            - const: usb_ctrl
126*4882a593Smuzhiyun            - const: ddr
127*4882a593Smuzhiyun        phy-names:
128*4882a593Smuzhiyun          items:
129*4882a593Smuzhiyun            - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
130*4882a593Smuzhiyun            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
131*4882a593Smuzhiyun      required:
132*4882a593Smuzhiyun        - clock-names
133*4882a593Smuzhiyun  - if:
134*4882a593Smuzhiyun      properties:
135*4882a593Smuzhiyun        compatible:
136*4882a593Smuzhiyun          enum:
137*4882a593Smuzhiyun            - amlogic,meson-gxm-usb-ctrl
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun    then:
140*4882a593Smuzhiyun      properties:
141*4882a593Smuzhiyun        clocks:
142*4882a593Smuzhiyun          minItems: 2
143*4882a593Smuzhiyun        clock-names:
144*4882a593Smuzhiyun          items:
145*4882a593Smuzhiyun            - const: usb_ctrl
146*4882a593Smuzhiyun            - const: ddr
147*4882a593Smuzhiyun        phy-names:
148*4882a593Smuzhiyun          items:
149*4882a593Smuzhiyun            - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
150*4882a593Smuzhiyun            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
151*4882a593Smuzhiyun            - const: usb2-phy2 # USB2 PHY2 if USBOTG_C port is used
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun      required:
154*4882a593Smuzhiyun        - clock-names
155*4882a593Smuzhiyun  - if:
156*4882a593Smuzhiyun      properties:
157*4882a593Smuzhiyun        compatible:
158*4882a593Smuzhiyun          enum:
159*4882a593Smuzhiyun            - amlogic,meson-axg-usb-ctrl
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun    then:
162*4882a593Smuzhiyun      properties:
163*4882a593Smuzhiyun        phy-names:
164*4882a593Smuzhiyun          items:
165*4882a593Smuzhiyun            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
166*4882a593Smuzhiyun        clocks:
167*4882a593Smuzhiyun          minItems: 2
168*4882a593Smuzhiyun        clock-names:
169*4882a593Smuzhiyun          items:
170*4882a593Smuzhiyun            - const: usb_ctrl
171*4882a593Smuzhiyun            - const: ddr
172*4882a593Smuzhiyun      required:
173*4882a593Smuzhiyun        - clock-names
174*4882a593Smuzhiyun  - if:
175*4882a593Smuzhiyun      properties:
176*4882a593Smuzhiyun        compatible:
177*4882a593Smuzhiyun          enum:
178*4882a593Smuzhiyun            - amlogic,meson-a1-usb-ctrl
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun    then:
181*4882a593Smuzhiyun      properties:
182*4882a593Smuzhiyun        phy-names:
183*4882a593Smuzhiyun          items:
184*4882a593Smuzhiyun            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
185*4882a593Smuzhiyun        clocks:
186*4882a593Smuzhiyun          minItems: 3
187*4882a593Smuzhiyun        clock-names:
188*4882a593Smuzhiyun          items:
189*4882a593Smuzhiyun            - const: usb_ctrl
190*4882a593Smuzhiyun            - const: usb_bus
191*4882a593Smuzhiyun            - const: xtal_usb_ctrl
192*4882a593Smuzhiyun      required:
193*4882a593Smuzhiyun        - clock-names
194*4882a593Smuzhiyun
195*4882a593Smuzhiyunexamples:
196*4882a593Smuzhiyun  - |
197*4882a593Smuzhiyun    usb: usb@ffe09000 {
198*4882a593Smuzhiyun          compatible = "amlogic,meson-g12a-usb-ctrl";
199*4882a593Smuzhiyun          reg = <0xffe09000 0xa0>;
200*4882a593Smuzhiyun          interrupts = <16>;
201*4882a593Smuzhiyun          #address-cells = <1>;
202*4882a593Smuzhiyun          #size-cells = <1>;
203*4882a593Smuzhiyun          ranges;
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun          clocks = <&clkc_usb>;
206*4882a593Smuzhiyun          resets = <&reset_usb>;
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun          dr_mode = "otg";
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun          phys = <&usb2_phy0>, <&usb2_phy1>, <&usb3_phy0>;
211*4882a593Smuzhiyun          phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun          dwc2: usb@ff400000 {
214*4882a593Smuzhiyun              compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
215*4882a593Smuzhiyun              reg = <0xff400000 0x40000>;
216*4882a593Smuzhiyun              interrupts = <31>;
217*4882a593Smuzhiyun              clocks = <&clkc_usb1>;
218*4882a593Smuzhiyun              clock-names = "otg";
219*4882a593Smuzhiyun              phys = <&usb2_phy1>;
220*4882a593Smuzhiyun              dr_mode = "peripheral";
221*4882a593Smuzhiyun              g-rx-fifo-size = <192>;
222*4882a593Smuzhiyun              g-np-tx-fifo-size = <128>;
223*4882a593Smuzhiyun              g-tx-fifo-size = <128 128 16 16 16>;
224*4882a593Smuzhiyun          };
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun          dwc3: usb@ff500000 {
227*4882a593Smuzhiyun              compatible = "snps,dwc3";
228*4882a593Smuzhiyun              reg = <0xff500000 0x100000>;
229*4882a593Smuzhiyun              interrupts = <30>;
230*4882a593Smuzhiyun              dr_mode = "host";
231*4882a593Smuzhiyun              snps,dis_u2_susphy_quirk;
232*4882a593Smuzhiyun              snps,quirk-frame-length-adjustment;
233*4882a593Smuzhiyun          };
234*4882a593Smuzhiyun    };
235