1 The expected structure of an MDIO MUX device tree node is described here. This
2 is heavily based on current Linux specification.
3 One notable difference to Linux is that mdio-parent-bus is currently required
4 by U-Boot, not optional as is in Linux. Current U-Boot MDIO MUX udevice class
5 implementation does not have specific support for MDIOs with an integrated MUX,
6 the property should be made optional if such support is added.
8 The MDIO buses downstream of the MUX should be described in the device tree as
9 child nodes as indicated below.
12 mdio-parent-bus = a phandle to the MDIO bus used to perform actual I/O. This is
13 typically a real MDIO device, unless there are cascaded MUXes.
14 #address-cells = <1>, each MDIO group is identified by one 32b value.
18 The properties described here are sufficient for MDIO MUX DM class code, but
19 MUX drivers may define additional properties, either required or optional.
21 Required properties in child nodes:
22 reg = value to be configured on the MUX to select the respective downstream
25 Child nodes should normally contain PHY nodes, referenced by phandle from
26 ethernet nodes of the eth interfaces using these PHYs.
28 Example structure, extracted from Linux bindings document:
30 /* The parent MDIO bus. */
31 smi1: mdio@1180000001900 {
32 compatible = "cavium,octeon-3860-mdio";
35 reg = <0x11800 0x00001900 0x0 0x40>;
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
43 compatible = "mdio-mux-gpio";
44 gpios = <&gpio1 3 0>, <&gpio1 4 0>;
45 mdio-parent-bus = <&smi1>;
52 phy11: ethernet-phy@1 {
54 compatible = "marvell,88e1149r";
55 marvell,reg-init = <3 0x10 0 0x5777>,
59 interrupt-parent = <&gpio>;
60 interrupts = <10 8>; /* Pin 10, active low */
62 phy12: ethernet-phy@2 {
64 compatible = "marvell,88e1149r";
65 marvell,reg-init = <3 0x10 0 0x5777>,
69 interrupt-parent = <&gpio>;
70 interrupts = <10 8>; /* Pin 10, active low */
72 phy13: ethernet-phy@3 {
74 compatible = "marvell,88e1149r";
75 marvell,reg-init = <3 0x10 0 0x5777>,
79 interrupt-parent = <&gpio>;
80 interrupts = <10 8>; /* Pin 10, active low */
82 phy14: ethernet-phy@4 {
84 compatible = "marvell,88e1149r";
85 marvell,reg-init = <3 0x10 0 0x5777>,
89 interrupt-parent = <&gpio>;
90 interrupts = <10 8>; /* Pin 10, active low */
97 phy21: ethernet-phy@1 {
99 compatible = "marvell,88e1149r";
100 marvell,reg-init = <3 0x10 0 0x5777>,
104 interrupt-parent = <&gpio>;
105 interrupts = <12 8>; /* Pin 12, active low */
107 phy22: ethernet-phy@2 {
109 compatible = "marvell,88e1149r";
110 marvell,reg-init = <3 0x10 0 0x5777>,
114 interrupt-parent = <&gpio>;
115 interrupts = <12 8>; /* Pin 12, active low */
117 phy23: ethernet-phy@3 {
119 compatible = "marvell,88e1149r";
120 marvell,reg-init = <3 0x10 0 0x5777>,
124 interrupt-parent = <&gpio>;
125 interrupts = <12 8>; /* Pin 12, active low */
127 phy24: ethernet-phy@4 {
129 compatible = "marvell,88e1149r";
130 marvell,reg-init = <3 0x10 0 0x5777>,
134 interrupt-parent = <&gpio>;
135 interrupts = <12 8>; /* Pin 12, active low */