Merge commit '81fd23e2b3ccf71c807e671444e8accaba98ca53' of https://git.pengutronix...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / phy / brcm,brcmstb-usb-phy.yaml
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/phy/brcm,brcmstb-usb-phy.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Broadcom STB USB PHY
8
9 description: Broadcom's PHY that handles EHCI/OHCI and/or XHCI
10
11 maintainers:
12   - Al Cooper <alcooperx@gmail.com>
13   - Rafał Miłecki <rafal@milecki.pl>
14
15 properties:
16   compatible:
17     enum:
18       - brcm,bcm4908-usb-phy
19       - brcm,bcm7211-usb-phy
20       - brcm,bcm7216-usb-phy
21       - brcm,brcmstb-usb-phy
22
23   reg:
24     minItems: 1
25     items:
26       - description: the base CTRL register
27       - description: XHCI EC register
28       - description: XHCI GBL register
29       - description: USB PHY register
30       - description: USB MDIO register
31       - description: BDC register
32
33   reg-names:
34     minItems: 1
35     items:
36       - const: ctrl
37       - const: xhci_ec
38       - const: xhci_gbl
39       - const: usb_phy
40       - const: usb_mdio
41       - const: bdc_ec
42
43   power-domains:
44     maxItems: 1
45
46   clocks:
47     minItems: 1
48     maxItems: 2
49
50   clock-names:
51     minItems: 1
52     items:
53       - const: sw_usb
54       - const: sw_usb3
55
56   interrupts:
57     description: wakeup interrupt
58
59   interrupt-names:
60     const: wake
61
62   brcm,ipp:
63     $ref: /schemas/types.yaml#/definitions/uint32
64     description: Invert Port Power
65     minimum: 0
66     maximum: 1
67
68   brcm,ioc:
69     $ref: /schemas/types.yaml#/definitions/uint32
70     description: Invert Over Current detection
71     minimum: 0
72     maximum: 1
73
74   dr_mode:
75     description: PHY Device mode. If this property is not defined, the PHY will
76       default to "host" mode.
77     enum:
78       - host
79       - peripheral
80       - drd
81       - typec-pd
82
83   brcm,syscon-piarbctl:
84     description: phandle to syscon for handling config registers
85     $ref: /schemas/types.yaml#/definitions/phandle
86
87   brcm,has-xhci:
88     description: Indicates the PHY has an XHCI PHY.
89     type: boolean
90
91   brcm,has-eohci:
92     description: Indicates the PHY has an EHCI/OHCI PHY.
93     type: boolean
94
95   "#phy-cells":
96     description: |
97       Cell allows setting the type of the PHY. Possible values are:
98       - PHY_TYPE_USB2 for USB1.1/2.0 PHY
99       - PHY_TYPE_USB3 for USB3.x PHY
100     const: 1
101
102 required:
103   - reg
104   - "#phy-cells"
105
106 anyOf:
107   - required:
108       - brcm,has-xhci
109   - required:
110       - brcm,has-eohci
111
112 allOf:
113   - if:
114       properties:
115         compatible:
116           contains:
117             enum:
118               - const: brcm,bcm4908-usb-phy
119               - const: brcm,brcmstb-usb-phy
120     then:
121       properties:
122         reg:
123           minItems: 1
124           maxItems: 2
125   - if:
126       properties:
127         compatible:
128           contains:
129             const: brcm,bcm7211-usb-phy
130     then:
131       properties:
132         reg:
133           minItems: 5
134           maxItems: 6
135         reg-names:
136           minItems: 5
137           maxItems: 6
138   - if:
139       properties:
140         compatible:
141           contains:
142             const: brcm,bcm7216-usb-phy
143     then:
144       properties:
145         reg:
146           minItems: 3
147           maxItems: 3
148         reg-names:
149           minItems: 3
150           maxItems: 3
151
152 additionalProperties: false
153
154 examples:
155   - |
156     #include <dt-bindings/phy/phy.h>
157
158     usb-phy@f0470200 {
159         compatible = "brcm,brcmstb-usb-phy";
160         reg = <0xf0470200 0xb8>,
161               <0xf0471940 0x6c0>;
162         #phy-cells = <1>;
163         dr_mode = "host";
164         brcm,ioc = <1>;
165         brcm,ipp = <1>;
166         brcm,has-xhci;
167         brcm,has-eohci;
168         clocks = <&usb20>, <&usb30>;
169         clock-names = "sw_usb", "sw_usb3";
170     };
171   - |
172     #include <dt-bindings/phy/phy.h>
173
174     usb-phy@29f0200 {
175         compatible = "brcm,bcm7211-usb-phy";
176         reg = <0x29f0200 0x200>,
177               <0x29c0880 0x30>,
178               <0x29cc100 0x534>,
179               <0x2808000 0x24>,
180               <0x2980080 0x8>;
181         reg-names = "ctrl",
182             "xhci_ec",
183             "xhci_gbl",
184             "usb_phy",
185             "usb_mdio";
186         brcm,ioc = <0x0>;
187         brcm,ipp = <0x0>;
188         interrupts = <0x30>;
189         interrupt-parent = <&vpu_intr1_nosec_intc>;
190         interrupt-names = "wake";
191         #phy-cells = <0x1>;
192         brcm,has-xhci;
193         brcm,syscon-piarbctl = <&syscon_piarbctl>;
194         clocks = <&scmi_clk 256>;
195         clock-names = "sw_usb";
196     };