blob: 0f7c29568772435af78723cef752958f4aee2984 [file] [log] [blame]
Alex Marginean8d95dfb2019-07-16 11:21:18 +03001Device tree structures used by register based MDIO muxes is described here.
2This binding is based on reg-mux.txt binding in Linux and is currently used by
3mdio-mux-i2creg driver in U-Boot.
4
5Required properties:
6#mux-control-cells = <1> indicates how many registers are used for mux
7 selection. mux-reg-mask property described below must
8 include this number of pairs.
9mux-reg-masks = <reg mask> describes pairs of register offset and register mask.
10 Register bits enabled in mask are set to the selection
11 value defined in reg property of child MDIOs to control
12 selection.
13Properties described in mdio-mux.txt also apply.
14
15Example structure, used on Freescale LS1028A QDS board:
16
17&i2c0 {
18 status = "okay";
Simon Glass07a8b622023-02-13 08:56:35 -070019 bootph-all;
Alex Marginean8d95dfb2019-07-16 11:21:18 +030020
21 fpga@66 {
22 #address-cells = <1>;
23 #size-cells = <0>;
24 compatible = "simple-mfd";
25 reg = <0x66>;
26
27 mux-mdio@54 {
28 #address-cells = <1>;
29 #size-cells = <0>;
30 compatible = "mdio-mux-i2creg";
31 reg = <0x54>;
32 #mux-control-cells = <1>;
33 mux-reg-masks = <0x54 0xf0>;
34 mdio-parent-bus = <&mdio0>;
35
36 /* on-board MDIO with a single RGMII PHY */
37 mdio@00 {
38 #address-cells = <1>;
39 #size-cells = <0>;
40 reg = <0x00>;
41
42 /* on-board 1G RGMII PHY */
43 qds_phy0: phy@5 {
44 reg = <5>;
45 };
46 };
47 /* card slot 1 */
48 mdio@40 {
49 #address-cells = <1>;
50 #size-cells = <0>;
51 reg = <0x40>;
52 /* VSC8234 1G SGMII card */
53 sgmii_port0: phy@1c {
54 reg = <0x1c>;
55 };
56 };
57 /* card slot 2 */
58 mdio@50 {
59 #address-cells = <1>;
60 #size-cells = <0>;
61 reg = <0x50>;
62 };
63 /* card slot 3 */
64 mdio@60 {
65 #address-cells = <1>;
66 #size-cells = <0>;
67 reg = <0x60>;
68 };
69 /* card slot 4 */
70 mdio@70 {
71 #address-cells = <1>;
72 #size-cells = <0>;
73 reg = <0x70>;
74 };
75 };
76 };
77};
78
79/* Parent MDIO, defined in SoC .dtsi file, just enabled here */
80&mdio0 {
81 status = "okay";
82};