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