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