blob: 580fbe37b37fa630e734d8257671eb3aff8ff064 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# 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
7title: Broadcom STB USB PHY
8
9description: Broadcom's PHY that handles EHCI/OHCI and/or XHCI
10
11maintainers:
12 - Al Cooper <alcooperx@gmail.com>
13 - Rafał Miłecki <rafal@milecki.pl>
14
15properties:
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
102required:
103 - reg
104 - "#phy-cells"
105
106anyOf:
107 - required:
108 - brcm,has-xhci
109 - required:
110 - brcm,has-eohci
111
112allOf:
113 - if:
114 properties:
115 compatible:
116 contains:
117 enum:
118 - brcm,bcm4908-usb-phy
119 - 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
152additionalProperties: false
153
154examples:
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 };