xref: /freebsd-src/sys/contrib/device-tree/Bindings/net/mdio-mux-gpio.yaml (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1*5956d97fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
2*5956d97fSEmmanuel Vadot%YAML 1.2
3*5956d97fSEmmanuel Vadot---
4*5956d97fSEmmanuel Vadot$id: http://devicetree.org/schemas/net/mdio-mux-gpio.yaml#
5*5956d97fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*5956d97fSEmmanuel Vadot
7*5956d97fSEmmanuel Vadottitle: Properties for an MDIO bus multiplexer/switch controlled by GPIO pins.
8*5956d97fSEmmanuel Vadot
9*5956d97fSEmmanuel Vadotmaintainers:
10*5956d97fSEmmanuel Vadot  - Andrew Lunn <andrew@lunn.ch>
11*5956d97fSEmmanuel Vadot
12*5956d97fSEmmanuel Vadotdescription:
13*5956d97fSEmmanuel Vadot  This is a special case of a MDIO bus multiplexer.  One or more GPIO
14*5956d97fSEmmanuel Vadot  lines are used to control which child bus is connected.
15*5956d97fSEmmanuel Vadot
16*5956d97fSEmmanuel VadotallOf:
17*5956d97fSEmmanuel Vadot  - $ref: /schemas/net/mdio-mux.yaml#
18*5956d97fSEmmanuel Vadot
19*5956d97fSEmmanuel Vadotproperties:
20*5956d97fSEmmanuel Vadot  compatible:
21*5956d97fSEmmanuel Vadot    const: mdio-mux-gpio
22*5956d97fSEmmanuel Vadot
23*5956d97fSEmmanuel Vadot  gpios:
24*5956d97fSEmmanuel Vadot    description:
25*5956d97fSEmmanuel Vadot      List of GPIOs used to control the multiplexer, least significant bit first.
26*5956d97fSEmmanuel Vadot    minItems: 1
27*5956d97fSEmmanuel Vadot    maxItems: 32
28*5956d97fSEmmanuel Vadot
29*5956d97fSEmmanuel Vadotrequired:
30*5956d97fSEmmanuel Vadot  - compatible
31*5956d97fSEmmanuel Vadot  - gpios
32*5956d97fSEmmanuel Vadot
33*5956d97fSEmmanuel VadotunevaluatedProperties: false
34*5956d97fSEmmanuel Vadot
35*5956d97fSEmmanuel Vadotexamples:
36*5956d97fSEmmanuel Vadot  - |
37*5956d97fSEmmanuel Vadot    /*
38*5956d97fSEmmanuel Vadot     An NXP sn74cbtlv3253 dual 1-of-4 switch controlled by a
39*5956d97fSEmmanuel Vadot     pair of GPIO lines.  Child busses 2 and 3 populated with 4
40*5956d97fSEmmanuel Vadot     PHYs each.
41*5956d97fSEmmanuel Vadot     */
42*5956d97fSEmmanuel Vadot    mdio-mux {
43*5956d97fSEmmanuel Vadot        compatible = "mdio-mux-gpio";
44*5956d97fSEmmanuel Vadot        gpios = <&gpio1 3 0>, <&gpio1 4 0>;
45*5956d97fSEmmanuel Vadot        mdio-parent-bus = <&smi1>;
46*5956d97fSEmmanuel Vadot        #address-cells = <1>;
47*5956d97fSEmmanuel Vadot        #size-cells = <0>;
48*5956d97fSEmmanuel Vadot
49*5956d97fSEmmanuel Vadot        mdio@2 {
50*5956d97fSEmmanuel Vadot            reg = <2>;
51*5956d97fSEmmanuel Vadot            #address-cells = <1>;
52*5956d97fSEmmanuel Vadot            #size-cells = <0>;
53*5956d97fSEmmanuel Vadot
54*5956d97fSEmmanuel Vadot            ethernet-phy@1 {
55*5956d97fSEmmanuel Vadot                reg = <1>;
56*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
57*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
58*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
59*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
60*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
61*5956d97fSEmmanuel Vadot                interrupts = <10 8>; /* Pin 10, active low */
62*5956d97fSEmmanuel Vadot            };
63*5956d97fSEmmanuel Vadot            ethernet-phy@2 {
64*5956d97fSEmmanuel Vadot                reg = <2>;
65*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
66*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
67*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
68*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
69*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
70*5956d97fSEmmanuel Vadot                interrupts = <10 8>; /* Pin 10, active low */
71*5956d97fSEmmanuel Vadot            };
72*5956d97fSEmmanuel Vadot            ethernet-phy@3 {
73*5956d97fSEmmanuel Vadot                reg = <3>;
74*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
75*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
76*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
77*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
78*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
79*5956d97fSEmmanuel Vadot                interrupts = <10 8>; /* Pin 10, active low */
80*5956d97fSEmmanuel Vadot            };
81*5956d97fSEmmanuel Vadot            ethernet-phy@4 {
82*5956d97fSEmmanuel Vadot                reg = <4>;
83*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
84*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
85*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
86*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
87*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
88*5956d97fSEmmanuel Vadot                interrupts = <10 8>; /* Pin 10, active low */
89*5956d97fSEmmanuel Vadot            };
90*5956d97fSEmmanuel Vadot        };
91*5956d97fSEmmanuel Vadot
92*5956d97fSEmmanuel Vadot        mdio@3 {
93*5956d97fSEmmanuel Vadot            reg = <3>;
94*5956d97fSEmmanuel Vadot            #address-cells = <1>;
95*5956d97fSEmmanuel Vadot            #size-cells = <0>;
96*5956d97fSEmmanuel Vadot
97*5956d97fSEmmanuel Vadot            ethernet-phy@1 {
98*5956d97fSEmmanuel Vadot                reg = <1>;
99*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
100*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
101*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
102*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
103*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
104*5956d97fSEmmanuel Vadot                interrupts = <12 8>; /* Pin 12, active low */
105*5956d97fSEmmanuel Vadot            };
106*5956d97fSEmmanuel Vadot            ethernet-phy@2 {
107*5956d97fSEmmanuel Vadot                reg = <2>;
108*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
109*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
110*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
111*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
112*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
113*5956d97fSEmmanuel Vadot                interrupts = <12 8>; /* Pin 12, active low */
114*5956d97fSEmmanuel Vadot            };
115*5956d97fSEmmanuel Vadot            ethernet-phy@3 {
116*5956d97fSEmmanuel Vadot                reg = <3>;
117*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
118*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
119*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
120*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
121*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
122*5956d97fSEmmanuel Vadot                interrupts = <12 8>; /* Pin 12, active low */
123*5956d97fSEmmanuel Vadot            };
124*5956d97fSEmmanuel Vadot            ethernet-phy@4 {
125*5956d97fSEmmanuel Vadot                reg = <4>;
126*5956d97fSEmmanuel Vadot                marvell,reg-init = <3 0x10 0 0x5777>,
127*5956d97fSEmmanuel Vadot                  <3 0x11 0 0x00aa>,
128*5956d97fSEmmanuel Vadot                  <3 0x12 0 0x4105>,
129*5956d97fSEmmanuel Vadot                  <3 0x13 0 0x0a60>;
130*5956d97fSEmmanuel Vadot                interrupt-parent = <&gpio>;
131*5956d97fSEmmanuel Vadot                interrupts = <12 8>; /* Pin 12, active low */
132*5956d97fSEmmanuel Vadot            };
133*5956d97fSEmmanuel Vadot        };
134*5956d97fSEmmanuel Vadot    };
135*5956d97fSEmmanuel Vadot...
136