1dba261f3SOleksij RempelAtheros AR9331 built-in switch
2dba261f3SOleksij Rempel=============================
3dba261f3SOleksij Rempel
4dba261f3SOleksij RempelIt is a switch built-in to Atheros AR9331 WiSoC and addressable over internal
5dba261f3SOleksij RempelMDIO bus. All PHYs are built-in as well.
6dba261f3SOleksij Rempel
7dba261f3SOleksij RempelRequired properties:
8dba261f3SOleksij Rempel
9dba261f3SOleksij Rempel - compatible: should be: "qca,ar9331-switch"
10dba261f3SOleksij Rempel - reg: Address on the MII bus for the switch.
11dba261f3SOleksij Rempel - resets : Must contain an entry for each entry in reset-names.
12dba261f3SOleksij Rempel - reset-names : Must include the following entries: "switch"
13dba261f3SOleksij Rempel - interrupt-parent: Phandle to the parent interrupt controller
14dba261f3SOleksij Rempel - interrupts: IRQ line for the switch
15dba261f3SOleksij Rempel - interrupt-controller: Indicates the switch is itself an interrupt
16dba261f3SOleksij Rempel   controller. This is used for the PHY interrupts.
17dba261f3SOleksij Rempel - #interrupt-cells: must be 1
18dba261f3SOleksij Rempel - mdio: Container of PHY and devices on the switches MDIO bus.
19dba261f3SOleksij Rempel
20dba261f3SOleksij RempelSee Documentation/devicetree/bindings/net/dsa/dsa.txt for a list of additional
21dba261f3SOleksij Rempelrequired and optional properties.
22dba261f3SOleksij RempelExamples:
23dba261f3SOleksij Rempel
24dba261f3SOleksij Rempeleth0: ethernet@19000000 {
25dba261f3SOleksij Rempel	compatible = "qca,ar9330-eth";
26dba261f3SOleksij Rempel	reg = <0x19000000 0x200>;
27dba261f3SOleksij Rempel	interrupts = <4>;
28dba261f3SOleksij Rempel
29dba261f3SOleksij Rempel	resets = <&rst 9>, <&rst 22>;
30dba261f3SOleksij Rempel	reset-names = "mac", "mdio";
31dba261f3SOleksij Rempel	clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
32dba261f3SOleksij Rempel	clock-names = "eth", "mdio";
33dba261f3SOleksij Rempel
34dba261f3SOleksij Rempel	phy-mode = "mii";
35dba261f3SOleksij Rempel	phy-handle = <&phy_port4>;
36dba261f3SOleksij Rempel};
37dba261f3SOleksij Rempel
38dba261f3SOleksij Rempeleth1: ethernet@1a000000 {
39dba261f3SOleksij Rempel	compatible = "qca,ar9330-eth";
40dba261f3SOleksij Rempel	reg = <0x1a000000 0x200>;
41dba261f3SOleksij Rempel	interrupts = <5>;
42dba261f3SOleksij Rempel	resets = <&rst 13>, <&rst 23>;
43dba261f3SOleksij Rempel	reset-names = "mac", "mdio";
44dba261f3SOleksij Rempel	clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
45dba261f3SOleksij Rempel	clock-names = "eth", "mdio";
46dba261f3SOleksij Rempel
47dba261f3SOleksij Rempel	phy-mode = "gmii";
48dba261f3SOleksij Rempel
49dba261f3SOleksij Rempel	fixed-link {
50dba261f3SOleksij Rempel		speed = <1000>;
51dba261f3SOleksij Rempel		full-duplex;
52dba261f3SOleksij Rempel	};
53dba261f3SOleksij Rempel
54dba261f3SOleksij Rempel	mdio {
55dba261f3SOleksij Rempel		#address-cells = <1>;
56dba261f3SOleksij Rempel		#size-cells = <0>;
57dba261f3SOleksij Rempel
58dba261f3SOleksij Rempel		switch10: switch@10 {
59dba261f3SOleksij Rempel			#address-cells = <1>;
60dba261f3SOleksij Rempel			#size-cells = <0>;
61dba261f3SOleksij Rempel
62dba261f3SOleksij Rempel			compatible = "qca,ar9331-switch";
63dba261f3SOleksij Rempel			reg = <0x10>;
64dba261f3SOleksij Rempel			resets = <&rst 8>;
65dba261f3SOleksij Rempel			reset-names = "switch";
66dba261f3SOleksij Rempel
67dba261f3SOleksij Rempel			interrupt-parent = <&miscintc>;
68dba261f3SOleksij Rempel			interrupts = <12>;
69dba261f3SOleksij Rempel
70dba261f3SOleksij Rempel			interrupt-controller;
71dba261f3SOleksij Rempel			#interrupt-cells = <1>;
72dba261f3SOleksij Rempel
73dba261f3SOleksij Rempel			ports {
74dba261f3SOleksij Rempel				#address-cells = <1>;
75dba261f3SOleksij Rempel				#size-cells = <0>;
76dba261f3SOleksij Rempel
77dba261f3SOleksij Rempel				switch_port0: port@0 {
78dba261f3SOleksij Rempel					reg = <0x0>;
79dba261f3SOleksij Rempel					ethernet = <&eth1>;
80dba261f3SOleksij Rempel
81dba261f3SOleksij Rempel					phy-mode = "gmii";
82dba261f3SOleksij Rempel
83dba261f3SOleksij Rempel					fixed-link {
84dba261f3SOleksij Rempel						speed = <1000>;
85dba261f3SOleksij Rempel						full-duplex;
86dba261f3SOleksij Rempel					};
87dba261f3SOleksij Rempel				};
88dba261f3SOleksij Rempel
89dba261f3SOleksij Rempel				switch_port1: port@1 {
90dba261f3SOleksij Rempel					reg = <0x1>;
91dba261f3SOleksij Rempel					phy-handle = <&phy_port0>;
92dba261f3SOleksij Rempel					phy-mode = "internal";
93dba261f3SOleksij Rempel				};
94dba261f3SOleksij Rempel
95dba261f3SOleksij Rempel				switch_port2: port@2 {
96dba261f3SOleksij Rempel					reg = <0x2>;
97dba261f3SOleksij Rempel					phy-handle = <&phy_port1>;
98dba261f3SOleksij Rempel					phy-mode = "internal";
99dba261f3SOleksij Rempel				};
100dba261f3SOleksij Rempel
101dba261f3SOleksij Rempel				switch_port3: port@3 {
102dba261f3SOleksij Rempel					reg = <0x3>;
103dba261f3SOleksij Rempel					phy-handle = <&phy_port2>;
104dba261f3SOleksij Rempel					phy-mode = "internal";
105dba261f3SOleksij Rempel				};
106dba261f3SOleksij Rempel
107dba261f3SOleksij Rempel				switch_port4: port@4 {
108dba261f3SOleksij Rempel					reg = <0x4>;
109dba261f3SOleksij Rempel					phy-handle = <&phy_port3>;
110dba261f3SOleksij Rempel					phy-mode = "internal";
111dba261f3SOleksij Rempel				};
112dba261f3SOleksij Rempel			};
113dba261f3SOleksij Rempel
114dba261f3SOleksij Rempel			mdio {
115dba261f3SOleksij Rempel				#address-cells = <1>;
116dba261f3SOleksij Rempel				#size-cells = <0>;
117dba261f3SOleksij Rempel
118dba261f3SOleksij Rempel				interrupt-parent = <&switch10>;
119dba261f3SOleksij Rempel
120dba261f3SOleksij Rempel				phy_port0: phy@0 {
121dba261f3SOleksij Rempel					reg = <0x0>;
122dba261f3SOleksij Rempel					interrupts = <0>;
123dba261f3SOleksij Rempel				};
124dba261f3SOleksij Rempel
125dba261f3SOleksij Rempel				phy_port1: phy@1 {
126dba261f3SOleksij Rempel					reg = <0x1>;
127dba261f3SOleksij Rempel					interrupts = <0>;
128dba261f3SOleksij Rempel				};
129dba261f3SOleksij Rempel
130dba261f3SOleksij Rempel				phy_port2: phy@2 {
131dba261f3SOleksij Rempel					reg = <0x2>;
132dba261f3SOleksij Rempel					interrupts = <0>;
133dba261f3SOleksij Rempel				};
134dba261f3SOleksij Rempel
135dba261f3SOleksij Rempel				phy_port3: phy@3 {
136dba261f3SOleksij Rempel					reg = <0x3>;
137dba261f3SOleksij Rempel					interrupts = <0>;
138dba261f3SOleksij Rempel				};
139dba261f3SOleksij Rempel
140dba261f3SOleksij Rempel				phy_port4: phy@4 {
141dba261f3SOleksij Rempel					reg = <0x4>;
142dba261f3SOleksij Rempel					interrupts = <0>;
143dba261f3SOleksij Rempel				};
144dba261f3SOleksij Rempel			};
145dba261f3SOleksij Rempel		};
146dba261f3SOleksij Rempel	};
147dba261f3SOleksij Rempel};
148