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>,
139c66ec88fSEmmanuel Vadot			      <0x1060000 0x10000>;
140c66ec88fSEmmanuel Vadot			reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
141c66ec88fSEmmanuel Vadot				    "port2", "port3", "port4", "port5", "port6",
142c66ec88fSEmmanuel Vadot				    "port7", "port8", "port9", "port10", "qsys",
1436be33864SEmmanuel Vadot				    "ana", "s0", "s1", "s2";
144c66ec88fSEmmanuel Vadot			interrupts = <18 21 22>;
145c66ec88fSEmmanuel Vadot			interrupt-names = "ptp_rdy", "xtr", "inj";
146c66ec88fSEmmanuel Vadot
147c66ec88fSEmmanuel Vadot			ethernet-ports {
148c66ec88fSEmmanuel Vadot				#address-cells = <1>;
149c66ec88fSEmmanuel Vadot				#size-cells = <0>;
150c66ec88fSEmmanuel Vadot
151c66ec88fSEmmanuel Vadot				port0: port@0 {
152c66ec88fSEmmanuel Vadot					reg = <0>;
153*354d7675SEmmanuel Vadot					status = "disabled";
154c66ec88fSEmmanuel Vadot				};
155c66ec88fSEmmanuel Vadot				port1: port@1 {
156c66ec88fSEmmanuel Vadot					reg = <1>;
157*354d7675SEmmanuel Vadot					status = "disabled";
158c66ec88fSEmmanuel Vadot				};
159c66ec88fSEmmanuel Vadot				port2: port@2 {
160c66ec88fSEmmanuel Vadot					reg = <2>;
161*354d7675SEmmanuel Vadot					status = "disabled";
162c66ec88fSEmmanuel Vadot				};
163c66ec88fSEmmanuel Vadot				port3: port@3 {
164c66ec88fSEmmanuel Vadot					reg = <3>;
165*354d7675SEmmanuel Vadot					status = "disabled";
166c66ec88fSEmmanuel Vadot				};
167c66ec88fSEmmanuel Vadot				port4: port@4 {
168c66ec88fSEmmanuel Vadot					reg = <4>;
169*354d7675SEmmanuel Vadot					status = "disabled";
170c66ec88fSEmmanuel Vadot				};
171c66ec88fSEmmanuel Vadot				port5: port@5 {
172c66ec88fSEmmanuel Vadot					reg = <5>;
173*354d7675SEmmanuel Vadot					status = "disabled";
174c66ec88fSEmmanuel Vadot				};
175c66ec88fSEmmanuel Vadot				port6: port@6 {
176c66ec88fSEmmanuel Vadot					reg = <6>;
177*354d7675SEmmanuel Vadot					status = "disabled";
178c66ec88fSEmmanuel Vadot				};
179c66ec88fSEmmanuel Vadot				port7: port@7 {
180c66ec88fSEmmanuel Vadot					reg = <7>;
181*354d7675SEmmanuel Vadot					status = "disabled";
182c66ec88fSEmmanuel Vadot				};
183c66ec88fSEmmanuel Vadot				port8: port@8 {
184c66ec88fSEmmanuel Vadot					reg = <8>;
185*354d7675SEmmanuel Vadot					status = "disabled";
186c66ec88fSEmmanuel Vadot				};
187c66ec88fSEmmanuel Vadot				port9: port@9 {
188c66ec88fSEmmanuel Vadot					reg = <9>;
189*354d7675SEmmanuel Vadot					status = "disabled";
190c66ec88fSEmmanuel Vadot				};
191c66ec88fSEmmanuel Vadot				port10: port@10 {
192c66ec88fSEmmanuel Vadot					reg = <10>;
193*354d7675SEmmanuel Vadot					status = "disabled";
194c66ec88fSEmmanuel Vadot				};
195c66ec88fSEmmanuel Vadot			};
196c66ec88fSEmmanuel Vadot		};
197c66ec88fSEmmanuel Vadot
198c66ec88fSEmmanuel Vadot		reset@1070008 {
199c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-chip-reset";
200c66ec88fSEmmanuel Vadot			reg = <0x1070008 0x4>;
201c66ec88fSEmmanuel Vadot		};
202c66ec88fSEmmanuel Vadot
203c66ec88fSEmmanuel Vadot		gpio: pinctrl@1070034 {
204c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-pinctrl";
205c66ec88fSEmmanuel Vadot			reg = <0x1070034 0x68>;
206c66ec88fSEmmanuel Vadot			gpio-controller;
207c66ec88fSEmmanuel Vadot			#gpio-cells = <2>;
208c66ec88fSEmmanuel Vadot			gpio-ranges = <&gpio 0 0 22>;
209c66ec88fSEmmanuel Vadot			interrupt-controller;
210c66ec88fSEmmanuel Vadot			interrupts = <13>;
211c66ec88fSEmmanuel Vadot			#interrupt-cells = <2>;
212c66ec88fSEmmanuel Vadot
213c66ec88fSEmmanuel Vadot			i2c_pins: i2c-pins {
214c66ec88fSEmmanuel Vadot				pins = "GPIO_16", "GPIO_17";
215c66ec88fSEmmanuel Vadot				function = "twi";
216c66ec88fSEmmanuel Vadot			};
217c66ec88fSEmmanuel Vadot
218c66ec88fSEmmanuel Vadot			uart_pins: uart-pins {
219c66ec88fSEmmanuel Vadot				pins = "GPIO_6", "GPIO_7";
220c66ec88fSEmmanuel Vadot				function = "uart";
221c66ec88fSEmmanuel Vadot			};
222c66ec88fSEmmanuel Vadot
223c66ec88fSEmmanuel Vadot			uart2_pins: uart2-pins {
224c66ec88fSEmmanuel Vadot				pins = "GPIO_12", "GPIO_13";
225c66ec88fSEmmanuel Vadot				function = "uart2";
226c66ec88fSEmmanuel Vadot			};
227c66ec88fSEmmanuel Vadot
228c66ec88fSEmmanuel Vadot			miim1: miim1 {
229c66ec88fSEmmanuel Vadot				pins = "GPIO_14", "GPIO_15";
230c66ec88fSEmmanuel Vadot				function = "miim";
231c66ec88fSEmmanuel Vadot			};
232c66ec88fSEmmanuel Vadot
233c66ec88fSEmmanuel Vadot		};
234c66ec88fSEmmanuel Vadot
235c66ec88fSEmmanuel Vadot		mdio0: mdio@107009c {
236c66ec88fSEmmanuel Vadot			#address-cells = <1>;
237c66ec88fSEmmanuel Vadot			#size-cells = <0>;
238c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-miim";
239c66ec88fSEmmanuel Vadot			reg = <0x107009c 0x24>, <0x10700f0 0x8>;
240c66ec88fSEmmanuel Vadot			interrupts = <14>;
241c66ec88fSEmmanuel Vadot			status = "disabled";
242c66ec88fSEmmanuel Vadot
243c66ec88fSEmmanuel Vadot			phy0: ethernet-phy@0 {
244c66ec88fSEmmanuel Vadot				reg = <0>;
245c66ec88fSEmmanuel Vadot			};
246c66ec88fSEmmanuel Vadot			phy1: ethernet-phy@1 {
247c66ec88fSEmmanuel Vadot				reg = <1>;
248c66ec88fSEmmanuel Vadot			};
249c66ec88fSEmmanuel Vadot			phy2: ethernet-phy@2 {
250c66ec88fSEmmanuel Vadot				reg = <2>;
251c66ec88fSEmmanuel Vadot			};
252c66ec88fSEmmanuel Vadot			phy3: ethernet-phy@3 {
253c66ec88fSEmmanuel Vadot				reg = <3>;
254c66ec88fSEmmanuel Vadot			};
255c66ec88fSEmmanuel Vadot		};
256c66ec88fSEmmanuel Vadot
257c66ec88fSEmmanuel Vadot		mdio1: mdio@10700c0 {
258c66ec88fSEmmanuel Vadot			#address-cells = <1>;
259c66ec88fSEmmanuel Vadot			#size-cells = <0>;
260c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-miim";
261c66ec88fSEmmanuel Vadot			reg = <0x10700c0 0x24>;
262c66ec88fSEmmanuel Vadot			interrupts = <15>;
263c66ec88fSEmmanuel Vadot			pinctrl-names = "default";
264c66ec88fSEmmanuel Vadot			pinctrl-0 = <&miim1>;
265c66ec88fSEmmanuel Vadot			status = "disabled";
266c66ec88fSEmmanuel Vadot		};
267c66ec88fSEmmanuel Vadot
268c66ec88fSEmmanuel Vadot		hsio: syscon@10d0000 {
269c66ec88fSEmmanuel Vadot			compatible = "mscc,ocelot-hsio", "syscon", "simple-mfd";
270c66ec88fSEmmanuel Vadot			reg = <0x10d0000 0x10000>;
271c66ec88fSEmmanuel Vadot
272c66ec88fSEmmanuel Vadot			serdes: serdes {
273c66ec88fSEmmanuel Vadot				compatible = "mscc,vsc7514-serdes";
274c66ec88fSEmmanuel Vadot				#phy-cells = <2>;
275c66ec88fSEmmanuel Vadot			};
276c66ec88fSEmmanuel Vadot		};
277c66ec88fSEmmanuel Vadot	};
278c66ec88fSEmmanuel Vadot};
279