1c66ec88fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2c66ec88fSEmmanuel Vadot/* Copyright (c) 2017 Microsemi Corporation */
3c66ec88fSEmmanuel Vadot
4c66ec88fSEmmanuel Vadot/ {
5c66ec88fSEmmanuel Vadot	#address-cells = <1>;
6c66ec88fSEmmanuel Vadot	#size-cells = <1>;
7c66ec88fSEmmanuel Vadot	compatible = "mscc,ocelot";
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadot	cpus {
10c66ec88fSEmmanuel Vadot		#address-cells = <1>;
11c66ec88fSEmmanuel Vadot		#size-cells = <0>;
12c66ec88fSEmmanuel Vadot
13c66ec88fSEmmanuel Vadot		cpu@0 {
14c66ec88fSEmmanuel Vadot			compatible = "mips,mips24KEc";
15c66ec88fSEmmanuel Vadot			device_type = "cpu";
16c66ec88fSEmmanuel Vadot			clocks = <&cpu_clk>;
17c66ec88fSEmmanuel Vadot			reg = <0>;
18c66ec88fSEmmanuel Vadot		};
19c66ec88fSEmmanuel Vadot	};
20c66ec88fSEmmanuel Vadot
21c66ec88fSEmmanuel Vadot	aliases {
22c66ec88fSEmmanuel Vadot		serial0 = &uart0;
23c66ec88fSEmmanuel Vadot	};
24c66ec88fSEmmanuel Vadot
25c66ec88fSEmmanuel Vadot	cpuintc: interrupt-controller {
26c66ec88fSEmmanuel Vadot		#address-cells = <0>;
27c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
28c66ec88fSEmmanuel Vadot		interrupt-controller;
29c66ec88fSEmmanuel Vadot		compatible = "mti,cpu-interrupt-controller";
30c66ec88fSEmmanuel Vadot	};
31c66ec88fSEmmanuel Vadot
32c66ec88fSEmmanuel Vadot	cpu_clk: cpu-clock {
33c66ec88fSEmmanuel Vadot		compatible = "fixed-clock";
34c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
35c66ec88fSEmmanuel Vadot		clock-frequency = <500000000>;
36c66ec88fSEmmanuel Vadot	};
37c66ec88fSEmmanuel Vadot
38c66ec88fSEmmanuel Vadot	ahb_clk: ahb-clk {
39c66ec88fSEmmanuel Vadot		compatible = "fixed-factor-clock";
40c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
41c66ec88fSEmmanuel Vadot		clocks = <&cpu_clk>;
42c66ec88fSEmmanuel Vadot		clock-div = <2>;
43c66ec88fSEmmanuel Vadot		clock-mult = <1>;
44c66ec88fSEmmanuel Vadot	};
45c66ec88fSEmmanuel Vadot
46c66ec88fSEmmanuel Vadot	ahb@70000000 {
47c66ec88fSEmmanuel Vadot		compatible = "simple-bus";
48c66ec88fSEmmanuel Vadot		#address-cells = <1>;
49c66ec88fSEmmanuel Vadot		#size-cells = <1>;
50c66ec88fSEmmanuel Vadot		ranges = <0 0x70000000 0x2000000>;
51c66ec88fSEmmanuel Vadot
52c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
53c66ec88fSEmmanuel Vadot
54c66ec88fSEmmanuel Vadot		cpu_ctrl: syscon@0 {
55c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-cpu-syscon", "syscon";
56c66ec88fSEmmanuel Vadot			reg = <0x0 0x2c>;
57c66ec88fSEmmanuel Vadot		};
58c66ec88fSEmmanuel Vadot
59c66ec88fSEmmanuel Vadot		intc: interrupt-controller@70 {
60c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-icpu-intr";
61c66ec88fSEmmanuel Vadot			reg = <0x70 0x70>;
62c66ec88fSEmmanuel Vadot			#interrupt-cells = <1>;
63c66ec88fSEmmanuel Vadot			interrupt-controller;
64c66ec88fSEmmanuel Vadot			interrupt-parent = <&cpuintc>;
65c66ec88fSEmmanuel Vadot			interrupts = <2>;
66c66ec88fSEmmanuel Vadot		};
67c66ec88fSEmmanuel Vadot
68c66ec88fSEmmanuel Vadot		uart0: serial@100000 {
69c66ec88fSEmmanuel Vadot			pinctrl-0 = <&uart_pins>;
70c66ec88fSEmmanuel Vadot			pinctrl-names = "default";
71c66ec88fSEmmanuel Vadot			compatible = "ns16550a";
72c66ec88fSEmmanuel Vadot			reg = <0x100000 0x20>;
73c66ec88fSEmmanuel Vadot			interrupts = <6>;
74c66ec88fSEmmanuel Vadot			clocks = <&ahb_clk>;
75c66ec88fSEmmanuel Vadot			reg-io-width = <4>;
76c66ec88fSEmmanuel Vadot			reg-shift = <2>;
77c66ec88fSEmmanuel Vadot
78c66ec88fSEmmanuel Vadot			status = "disabled";
79c66ec88fSEmmanuel Vadot		};
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel Vadot		i2c: i2c@100400 {
82c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
83c66ec88fSEmmanuel Vadot			pinctrl-0 = <&i2c_pins>;
84c66ec88fSEmmanuel Vadot			pinctrl-names = "default";
85c66ec88fSEmmanuel Vadot			reg = <0x100400 0x100>, <0x198 0x8>;
86c66ec88fSEmmanuel Vadot			#address-cells = <1>;
87c66ec88fSEmmanuel Vadot			#size-cells = <0>;
88c66ec88fSEmmanuel Vadot			interrupts = <8>;
89c66ec88fSEmmanuel Vadot			clocks = <&ahb_clk>;
90c66ec88fSEmmanuel Vadot
91c66ec88fSEmmanuel Vadot			status = "disabled";
92c66ec88fSEmmanuel Vadot		};
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot		uart2: serial@100800 {
95c66ec88fSEmmanuel Vadot			pinctrl-0 = <&uart2_pins>;
96c66ec88fSEmmanuel Vadot			pinctrl-names = "default";
97c66ec88fSEmmanuel Vadot			compatible = "ns16550a";
98c66ec88fSEmmanuel Vadot			reg = <0x100800 0x20>;
99c66ec88fSEmmanuel Vadot			interrupts = <7>;
100c66ec88fSEmmanuel Vadot			clocks = <&ahb_clk>;
101c66ec88fSEmmanuel Vadot			reg-io-width = <4>;
102c66ec88fSEmmanuel Vadot			reg-shift = <2>;
103c66ec88fSEmmanuel Vadot
104c66ec88fSEmmanuel Vadot			status = "disabled";
105c66ec88fSEmmanuel Vadot		};
106c66ec88fSEmmanuel Vadot
107c66ec88fSEmmanuel Vadot		spi: spi@101000 {
108c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-spi", "snps,dw-apb-ssi";
109c66ec88fSEmmanuel Vadot			#address-cells = <1>;
110c66ec88fSEmmanuel Vadot			#size-cells = <0>;
111c66ec88fSEmmanuel Vadot			reg = <0x101000 0x100>, <0x3c 0x18>;
112c66ec88fSEmmanuel Vadot			interrupts = <9>;
113c66ec88fSEmmanuel Vadot			clocks = <&ahb_clk>;
114c66ec88fSEmmanuel Vadot
115c66ec88fSEmmanuel Vadot			status = "disabled";
116c66ec88fSEmmanuel Vadot		};
117c66ec88fSEmmanuel Vadot
118c66ec88fSEmmanuel Vadot		switch@1010000 {
119c66ec88fSEmmanuel Vadot			compatible = "mscc,vsc7514-switch";
120c66ec88fSEmmanuel Vadot			reg = <0x1010000 0x10000>,
121c66ec88fSEmmanuel Vadot			      <0x1030000 0x10000>,
122c66ec88fSEmmanuel Vadot			      <0x1080000 0x100>,
123c66ec88fSEmmanuel Vadot			      <0x10e0000 0x10000>,
124c66ec88fSEmmanuel Vadot			      <0x11e0000 0x100>,
125c66ec88fSEmmanuel Vadot			      <0x11f0000 0x100>,
126c66ec88fSEmmanuel Vadot			      <0x1200000 0x100>,
127c66ec88fSEmmanuel Vadot			      <0x1210000 0x100>,
128c66ec88fSEmmanuel Vadot			      <0x1220000 0x100>,
129c66ec88fSEmmanuel Vadot			      <0x1230000 0x100>,
130c66ec88fSEmmanuel Vadot			      <0x1240000 0x100>,
131c66ec88fSEmmanuel Vadot			      <0x1250000 0x100>,
132c66ec88fSEmmanuel Vadot			      <0x1260000 0x100>,
133c66ec88fSEmmanuel Vadot			      <0x1270000 0x100>,
134c66ec88fSEmmanuel Vadot			      <0x1280000 0x100>,
135c66ec88fSEmmanuel Vadot			      <0x1800000 0x80000>,
136c66ec88fSEmmanuel Vadot			      <0x1880000 0x10000>,
1376be33864SEmmanuel Vadot			      <0x1040000 0x10000>,
1386be33864SEmmanuel Vadot			      <0x1050000 0x10000>,
139*b97ee269SEmmanuel Vadot			      <0x1060000 0x10000>,
140*b97ee269SEmmanuel Vadot			      <0x1a0 0x1c4>;
141c66ec88fSEmmanuel Vadot			reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
142c66ec88fSEmmanuel Vadot				    "port2", "port3", "port4", "port5", "port6",
143c66ec88fSEmmanuel Vadot				    "port7", "port8", "port9", "port10", "qsys",
144*b97ee269SEmmanuel Vadot				    "ana", "s0", "s1", "s2", "fdma";
145*b97ee269SEmmanuel Vadot			interrupts = <18 21 22 16>;
146*b97ee269SEmmanuel Vadot			interrupt-names = "ptp_rdy", "xtr", "inj", "fdma";
147c66ec88fSEmmanuel Vadot
148c66ec88fSEmmanuel Vadot			ethernet-ports {
149c66ec88fSEmmanuel Vadot				#address-cells = <1>;
150c66ec88fSEmmanuel Vadot				#size-cells = <0>;
151c66ec88fSEmmanuel Vadot
152c66ec88fSEmmanuel Vadot				port0: port@0 {
153c66ec88fSEmmanuel Vadot					reg = <0>;
154354d7675SEmmanuel Vadot					status = "disabled";
155c66ec88fSEmmanuel Vadot				};
156c66ec88fSEmmanuel Vadot				port1: port@1 {
157c66ec88fSEmmanuel Vadot					reg = <1>;
158354d7675SEmmanuel Vadot					status = "disabled";
159c66ec88fSEmmanuel Vadot				};
160c66ec88fSEmmanuel Vadot				port2: port@2 {
161c66ec88fSEmmanuel Vadot					reg = <2>;
162354d7675SEmmanuel Vadot					status = "disabled";
163c66ec88fSEmmanuel Vadot				};
164c66ec88fSEmmanuel Vadot				port3: port@3 {
165c66ec88fSEmmanuel Vadot					reg = <3>;
166354d7675SEmmanuel Vadot					status = "disabled";
167c66ec88fSEmmanuel Vadot				};
168c66ec88fSEmmanuel Vadot				port4: port@4 {
169c66ec88fSEmmanuel Vadot					reg = <4>;
170354d7675SEmmanuel Vadot					status = "disabled";
171c66ec88fSEmmanuel Vadot				};
172c66ec88fSEmmanuel Vadot				port5: port@5 {
173c66ec88fSEmmanuel Vadot					reg = <5>;
174354d7675SEmmanuel Vadot					status = "disabled";
175c66ec88fSEmmanuel Vadot				};
176c66ec88fSEmmanuel Vadot				port6: port@6 {
177c66ec88fSEmmanuel Vadot					reg = <6>;
178354d7675SEmmanuel Vadot					status = "disabled";
179c66ec88fSEmmanuel Vadot				};
180c66ec88fSEmmanuel Vadot				port7: port@7 {
181c66ec88fSEmmanuel Vadot					reg = <7>;
182354d7675SEmmanuel Vadot					status = "disabled";
183c66ec88fSEmmanuel Vadot				};
184c66ec88fSEmmanuel Vadot				port8: port@8 {
185c66ec88fSEmmanuel Vadot					reg = <8>;
186354d7675SEmmanuel Vadot					status = "disabled";
187c66ec88fSEmmanuel Vadot				};
188c66ec88fSEmmanuel Vadot				port9: port@9 {
189c66ec88fSEmmanuel Vadot					reg = <9>;
190354d7675SEmmanuel Vadot					status = "disabled";
191c66ec88fSEmmanuel Vadot				};
192c66ec88fSEmmanuel Vadot				port10: port@10 {
193c66ec88fSEmmanuel Vadot					reg = <10>;
194354d7675SEmmanuel Vadot					status = "disabled";
195c66ec88fSEmmanuel Vadot				};
196c66ec88fSEmmanuel Vadot			};
197c66ec88fSEmmanuel Vadot		};
198c66ec88fSEmmanuel Vadot
199c66ec88fSEmmanuel Vadot		reset@1070008 {
200c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-chip-reset";
201c66ec88fSEmmanuel Vadot			reg = <0x1070008 0x4>;
202c66ec88fSEmmanuel Vadot		};
203c66ec88fSEmmanuel Vadot
204c66ec88fSEmmanuel Vadot		gpio: pinctrl@1070034 {
205c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-pinctrl";
206c66ec88fSEmmanuel Vadot			reg = <0x1070034 0x68>;
207c66ec88fSEmmanuel Vadot			gpio-controller;
208c66ec88fSEmmanuel Vadot			#gpio-cells = <2>;
209c66ec88fSEmmanuel Vadot			gpio-ranges = <&gpio 0 0 22>;
210c66ec88fSEmmanuel Vadot			interrupt-controller;
211c66ec88fSEmmanuel Vadot			interrupts = <13>;
212c66ec88fSEmmanuel Vadot			#interrupt-cells = <2>;
213c66ec88fSEmmanuel Vadot
214c66ec88fSEmmanuel Vadot			i2c_pins: i2c-pins {
215c66ec88fSEmmanuel Vadot				pins = "GPIO_16", "GPIO_17";
216c66ec88fSEmmanuel Vadot				function = "twi";
217c66ec88fSEmmanuel Vadot			};
218c66ec88fSEmmanuel Vadot
219c66ec88fSEmmanuel Vadot			uart_pins: uart-pins {
220c66ec88fSEmmanuel Vadot				pins = "GPIO_6", "GPIO_7";
221c66ec88fSEmmanuel Vadot				function = "uart";
222c66ec88fSEmmanuel Vadot			};
223c66ec88fSEmmanuel Vadot
224c66ec88fSEmmanuel Vadot			uart2_pins: uart2-pins {
225c66ec88fSEmmanuel Vadot				pins = "GPIO_12", "GPIO_13";
226c66ec88fSEmmanuel Vadot				function = "uart2";
227c66ec88fSEmmanuel Vadot			};
228c66ec88fSEmmanuel Vadot
229d5b0e70fSEmmanuel Vadot			miim1_pins: miim1-pins {
230c66ec88fSEmmanuel Vadot				pins = "GPIO_14", "GPIO_15";
231c66ec88fSEmmanuel Vadot				function = "miim";
232c66ec88fSEmmanuel Vadot			};
233c66ec88fSEmmanuel Vadot
234c66ec88fSEmmanuel Vadot		};
235c66ec88fSEmmanuel Vadot
236c66ec88fSEmmanuel Vadot		mdio0: mdio@107009c {
237c66ec88fSEmmanuel Vadot			#address-cells = <1>;
238c66ec88fSEmmanuel Vadot			#size-cells = <0>;
239c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-miim";
240c66ec88fSEmmanuel Vadot			reg = <0x107009c 0x24>, <0x10700f0 0x8>;
241c66ec88fSEmmanuel Vadot			interrupts = <14>;
242c66ec88fSEmmanuel Vadot			status = "disabled";
243c66ec88fSEmmanuel Vadot
244c66ec88fSEmmanuel Vadot			phy0: ethernet-phy@0 {
245c66ec88fSEmmanuel Vadot				reg = <0>;
246c66ec88fSEmmanuel Vadot			};
247c66ec88fSEmmanuel Vadot			phy1: ethernet-phy@1 {
248c66ec88fSEmmanuel Vadot				reg = <1>;
249c66ec88fSEmmanuel Vadot			};
250c66ec88fSEmmanuel Vadot			phy2: ethernet-phy@2 {
251c66ec88fSEmmanuel Vadot				reg = <2>;
252c66ec88fSEmmanuel Vadot			};
253c66ec88fSEmmanuel Vadot			phy3: ethernet-phy@3 {
254c66ec88fSEmmanuel Vadot				reg = <3>;
255c66ec88fSEmmanuel Vadot			};
256c66ec88fSEmmanuel Vadot		};
257c66ec88fSEmmanuel Vadot
258c66ec88fSEmmanuel Vadot		mdio1: mdio@10700c0 {
259c66ec88fSEmmanuel Vadot			#address-cells = <1>;
260c66ec88fSEmmanuel Vadot			#size-cells = <0>;
261c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-miim";
262c66ec88fSEmmanuel Vadot			reg = <0x10700c0 0x24>;
263c66ec88fSEmmanuel Vadot			interrupts = <15>;
264c66ec88fSEmmanuel Vadot			pinctrl-names = "default";
265d5b0e70fSEmmanuel Vadot			pinctrl-0 = <&miim1_pins>;
266c66ec88fSEmmanuel Vadot			status = "disabled";
267c66ec88fSEmmanuel Vadot		};
268c66ec88fSEmmanuel Vadot
269c66ec88fSEmmanuel Vadot		hsio: syscon@10d0000 {
270c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-hsio", "syscon", "simple-mfd";
271c66ec88fSEmmanuel Vadot			reg = <0x10d0000 0x10000>;
272c66ec88fSEmmanuel Vadot
273c66ec88fSEmmanuel Vadot			serdes: serdes {
274c66ec88fSEmmanuel Vadot				compatible = "mscc,vsc7514-serdes";
275c66ec88fSEmmanuel Vadot				#phy-cells = <2>;
276c66ec88fSEmmanuel Vadot			};
277c66ec88fSEmmanuel Vadot		};
278c66ec88fSEmmanuel Vadot	};
279c66ec88fSEmmanuel Vadot};
280