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