1d843dd53SAlexandre Belloni// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2d843dd53SAlexandre Belloni/* Copyright (c) 2017 Microsemi Corporation */
3d843dd53SAlexandre Belloni
4d843dd53SAlexandre Belloni/ {
5d843dd53SAlexandre Belloni	#address-cells = <1>;
6d843dd53SAlexandre Belloni	#size-cells = <1>;
7d843dd53SAlexandre Belloni	compatible = "mscc,ocelot";
8d843dd53SAlexandre Belloni
9d843dd53SAlexandre Belloni	cpus {
10d843dd53SAlexandre Belloni		#address-cells = <1>;
11d843dd53SAlexandre Belloni		#size-cells = <0>;
12d843dd53SAlexandre Belloni
13d843dd53SAlexandre Belloni		cpu@0 {
14d843dd53SAlexandre Belloni			compatible = "mips,mips24KEc";
15d843dd53SAlexandre Belloni			device_type = "cpu";
16d843dd53SAlexandre Belloni			clocks = <&cpu_clk>;
17d843dd53SAlexandre Belloni			reg = <0>;
18d843dd53SAlexandre Belloni		};
19d843dd53SAlexandre Belloni	};
20d843dd53SAlexandre Belloni
21d843dd53SAlexandre Belloni	aliases {
22d843dd53SAlexandre Belloni		serial0 = &uart0;
23d843dd53SAlexandre Belloni	};
24d843dd53SAlexandre Belloni
25d843dd53SAlexandre Belloni	cpuintc: interrupt-controller {
26d843dd53SAlexandre Belloni		#address-cells = <0>;
27d843dd53SAlexandre Belloni		#interrupt-cells = <1>;
28d843dd53SAlexandre Belloni		interrupt-controller;
29d843dd53SAlexandre Belloni		compatible = "mti,cpu-interrupt-controller";
30d843dd53SAlexandre Belloni	};
31d843dd53SAlexandre Belloni
32d843dd53SAlexandre Belloni	cpu_clk: cpu-clock {
33d843dd53SAlexandre Belloni		compatible = "fixed-clock";
34d843dd53SAlexandre Belloni		#clock-cells = <0>;
35d843dd53SAlexandre Belloni		clock-frequency = <500000000>;
36d843dd53SAlexandre Belloni	};
37d843dd53SAlexandre Belloni
38d843dd53SAlexandre Belloni	ahb_clk: ahb-clk {
39d843dd53SAlexandre Belloni		compatible = "fixed-factor-clock";
40d843dd53SAlexandre Belloni		#clock-cells = <0>;
41d843dd53SAlexandre Belloni		clocks = <&cpu_clk>;
42d843dd53SAlexandre Belloni		clock-div = <2>;
43d843dd53SAlexandre Belloni		clock-mult = <1>;
44d843dd53SAlexandre Belloni	};
45d843dd53SAlexandre Belloni
46d843dd53SAlexandre Belloni	ahb@70000000 {
47d843dd53SAlexandre Belloni		compatible = "simple-bus";
48d843dd53SAlexandre Belloni		#address-cells = <1>;
49d843dd53SAlexandre Belloni		#size-cells = <1>;
50d843dd53SAlexandre Belloni		ranges = <0 0x70000000 0x2000000>;
51d843dd53SAlexandre Belloni
52d843dd53SAlexandre Belloni		interrupt-parent = <&intc>;
53d843dd53SAlexandre Belloni
54d843dd53SAlexandre Belloni		cpu_ctrl: syscon@0 {
55d843dd53SAlexandre Belloni			compatible = "mscc,ocelot-cpu-syscon", "syscon";
56d843dd53SAlexandre Belloni			reg = <0x0 0x2c>;
57d843dd53SAlexandre Belloni		};
58d843dd53SAlexandre Belloni
59d843dd53SAlexandre Belloni		intc: interrupt-controller@70 {
60d843dd53SAlexandre Belloni			compatible = "mscc,ocelot-icpu-intr";
61d843dd53SAlexandre Belloni			reg = <0x70 0x70>;
62d843dd53SAlexandre Belloni			#interrupt-cells = <1>;
63d843dd53SAlexandre Belloni			interrupt-controller;
64d843dd53SAlexandre Belloni			interrupt-parent = <&cpuintc>;
65d843dd53SAlexandre Belloni			interrupts = <2>;
66d843dd53SAlexandre Belloni		};
67d843dd53SAlexandre Belloni
68d843dd53SAlexandre Belloni		uart0: serial@100000 {
69d843dd53SAlexandre Belloni			pinctrl-0 = <&uart_pins>;
70d843dd53SAlexandre Belloni			pinctrl-names = "default";
71d843dd53SAlexandre Belloni			compatible = "ns16550a";
72d843dd53SAlexandre Belloni			reg = <0x100000 0x20>;
73d843dd53SAlexandre Belloni			interrupts = <6>;
74d843dd53SAlexandre Belloni			clocks = <&ahb_clk>;
75d843dd53SAlexandre Belloni			reg-io-width = <4>;
76d843dd53SAlexandre Belloni			reg-shift = <2>;
77d843dd53SAlexandre Belloni
78d843dd53SAlexandre Belloni			status = "disabled";
79d843dd53SAlexandre Belloni		};
80d843dd53SAlexandre Belloni
819ca953a3SAlexandre Belloni		i2c: i2c@100400 {
829ca953a3SAlexandre Belloni			compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
839ca953a3SAlexandre Belloni			pinctrl-0 = <&i2c_pins>;
849ca953a3SAlexandre Belloni			pinctrl-names = "default";
859ca953a3SAlexandre Belloni			reg = <0x100400 0x100>, <0x198 0x8>;
869ca953a3SAlexandre Belloni			#address-cells = <1>;
879ca953a3SAlexandre Belloni			#size-cells = <0>;
889ca953a3SAlexandre Belloni			interrupts = <8>;
899ca953a3SAlexandre Belloni			clocks = <&ahb_clk>;
909ca953a3SAlexandre Belloni
919ca953a3SAlexandre Belloni			status = "disabled";
929ca953a3SAlexandre Belloni		};
939ca953a3SAlexandre Belloni
94d843dd53SAlexandre Belloni		uart2: serial@100800 {
95d843dd53SAlexandre Belloni			pinctrl-0 = <&uart2_pins>;
96d843dd53SAlexandre Belloni			pinctrl-names = "default";
97d843dd53SAlexandre Belloni			compatible = "ns16550a";
98d843dd53SAlexandre Belloni			reg = <0x100800 0x20>;
99d843dd53SAlexandre Belloni			interrupts = <7>;
100d843dd53SAlexandre Belloni			clocks = <&ahb_clk>;
101d843dd53SAlexandre Belloni			reg-io-width = <4>;
102d843dd53SAlexandre Belloni			reg-shift = <2>;
103d843dd53SAlexandre Belloni
104d843dd53SAlexandre Belloni			status = "disabled";
105d843dd53SAlexandre Belloni		};
106d843dd53SAlexandre Belloni
1079eaf3ba5SAlexandre Belloni		spi: spi@101000 {
1089eaf3ba5SAlexandre Belloni			compatible = "mscc,ocelot-spi", "snps,dw-apb-ssi";
1099eaf3ba5SAlexandre Belloni			#address-cells = <1>;
1109eaf3ba5SAlexandre Belloni			#size-cells = <0>;
1119eaf3ba5SAlexandre Belloni			reg = <0x101000 0x100>, <0x3c 0x18>;
1129eaf3ba5SAlexandre Belloni			interrupts = <9>;
1139eaf3ba5SAlexandre Belloni			clocks = <&ahb_clk>;
1149eaf3ba5SAlexandre Belloni
1159eaf3ba5SAlexandre Belloni			status = "disabled";
1169eaf3ba5SAlexandre Belloni		};
1179eaf3ba5SAlexandre Belloni
11849b03169SAlexandre Belloni		switch@1010000 {
11949b03169SAlexandre Belloni			compatible = "mscc,vsc7514-switch";
12049b03169SAlexandre Belloni			reg = <0x1010000 0x10000>,
12149b03169SAlexandre Belloni			      <0x1030000 0x10000>,
12249b03169SAlexandre Belloni			      <0x1080000 0x100>,
123048dc3abSAntoine Tenart			      <0x10e0000 0x10000>,
12449b03169SAlexandre Belloni			      <0x11e0000 0x100>,
12549b03169SAlexandre Belloni			      <0x11f0000 0x100>,
12649b03169SAlexandre Belloni			      <0x1200000 0x100>,
12749b03169SAlexandre Belloni			      <0x1210000 0x100>,
12849b03169SAlexandre Belloni			      <0x1220000 0x100>,
12949b03169SAlexandre Belloni			      <0x1230000 0x100>,
13049b03169SAlexandre Belloni			      <0x1240000 0x100>,
13149b03169SAlexandre Belloni			      <0x1250000 0x100>,
13249b03169SAlexandre Belloni			      <0x1260000 0x100>,
13349b03169SAlexandre Belloni			      <0x1270000 0x100>,
13449b03169SAlexandre Belloni			      <0x1280000 0x100>,
13549b03169SAlexandre Belloni			      <0x1800000 0x80000>,
136b5962294SHoratiu Vultur			      <0x1880000 0x10000>,
137e3aea296SVladimir Oltean			      <0x1040000 0x10000>,
138a61e365dSVladimir Oltean			      <0x1050000 0x10000>,
139*5f7e2f3eSAlexandre Belloni			      <0x1060000 0x10000>,
140*5f7e2f3eSAlexandre Belloni			      <0x1a0 0x1c4>;
141048dc3abSAntoine Tenart			reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
1423df0e680SQuentin Schulz				    "port2", "port3", "port4", "port5", "port6",
1433df0e680SQuentin Schulz				    "port7", "port8", "port9", "port10", "qsys",
144*5f7e2f3eSAlexandre Belloni				    "ana", "s0", "s1", "s2", "fdma";
145*5f7e2f3eSAlexandre Belloni			interrupts = <18 21 22 16>;
146*5f7e2f3eSAlexandre Belloni			interrupt-names = "ptp_rdy", "xtr", "inj", "fdma";
14749b03169SAlexandre Belloni
14849b03169SAlexandre Belloni			ethernet-ports {
14949b03169SAlexandre Belloni				#address-cells = <1>;
15049b03169SAlexandre Belloni				#size-cells = <0>;
15149b03169SAlexandre Belloni
15249b03169SAlexandre Belloni				port0: port@0 {
15349b03169SAlexandre Belloni					reg = <0>;
1540181f6f1SVladimir Oltean					status = "disabled";
15549b03169SAlexandre Belloni				};
15649b03169SAlexandre Belloni				port1: port@1 {
15749b03169SAlexandre Belloni					reg = <1>;
1580181f6f1SVladimir Oltean					status = "disabled";
15949b03169SAlexandre Belloni				};
16049b03169SAlexandre Belloni				port2: port@2 {
16149b03169SAlexandre Belloni					reg = <2>;
1620181f6f1SVladimir Oltean					status = "disabled";
16349b03169SAlexandre Belloni				};
16449b03169SAlexandre Belloni				port3: port@3 {
16549b03169SAlexandre Belloni					reg = <3>;
1660181f6f1SVladimir Oltean					status = "disabled";
16749b03169SAlexandre Belloni				};
16849b03169SAlexandre Belloni				port4: port@4 {
16949b03169SAlexandre Belloni					reg = <4>;
1700181f6f1SVladimir Oltean					status = "disabled";
17149b03169SAlexandre Belloni				};
17249b03169SAlexandre Belloni				port5: port@5 {
17349b03169SAlexandre Belloni					reg = <5>;
1740181f6f1SVladimir Oltean					status = "disabled";
17549b03169SAlexandre Belloni				};
17649b03169SAlexandre Belloni				port6: port@6 {
17749b03169SAlexandre Belloni					reg = <6>;
1780181f6f1SVladimir Oltean					status = "disabled";
17949b03169SAlexandre Belloni				};
18049b03169SAlexandre Belloni				port7: port@7 {
18149b03169SAlexandre Belloni					reg = <7>;
1820181f6f1SVladimir Oltean					status = "disabled";
18349b03169SAlexandre Belloni				};
18449b03169SAlexandre Belloni				port8: port@8 {
18549b03169SAlexandre Belloni					reg = <8>;
1860181f6f1SVladimir Oltean					status = "disabled";
18749b03169SAlexandre Belloni				};
18849b03169SAlexandre Belloni				port9: port@9 {
18949b03169SAlexandre Belloni					reg = <9>;
1900181f6f1SVladimir Oltean					status = "disabled";
19149b03169SAlexandre Belloni				};
19249b03169SAlexandre Belloni				port10: port@10 {
19349b03169SAlexandre Belloni					reg = <10>;
1940181f6f1SVladimir Oltean					status = "disabled";
19549b03169SAlexandre Belloni				};
19649b03169SAlexandre Belloni			};
19749b03169SAlexandre Belloni		};
19849b03169SAlexandre Belloni
199d843dd53SAlexandre Belloni		reset@1070008 {
200d843dd53SAlexandre Belloni			compatible = "mscc,ocelot-chip-reset";
201d843dd53SAlexandre Belloni			reg = <0x1070008 0x4>;
202d843dd53SAlexandre Belloni		};
203d843dd53SAlexandre Belloni
204d843dd53SAlexandre Belloni		gpio: pinctrl@1070034 {
205d843dd53SAlexandre Belloni			compatible = "mscc,ocelot-pinctrl";
206d843dd53SAlexandre Belloni			reg = <0x1070034 0x68>;
207d843dd53SAlexandre Belloni			gpio-controller;
208d843dd53SAlexandre Belloni			#gpio-cells = <2>;
209d843dd53SAlexandre Belloni			gpio-ranges = <&gpio 0 0 22>;
2106386889aSQuentin Schulz			interrupt-controller;
2116386889aSQuentin Schulz			interrupts = <13>;
2126386889aSQuentin Schulz			#interrupt-cells = <2>;
213d843dd53SAlexandre Belloni
2149ca953a3SAlexandre Belloni			i2c_pins: i2c-pins {
2159ca953a3SAlexandre Belloni				pins = "GPIO_16", "GPIO_17";
2169ca953a3SAlexandre Belloni				function = "twi";
2179ca953a3SAlexandre Belloni			};
2189ca953a3SAlexandre Belloni
219d843dd53SAlexandre Belloni			uart_pins: uart-pins {
220d843dd53SAlexandre Belloni				pins = "GPIO_6", "GPIO_7";
221d843dd53SAlexandre Belloni				function = "uart";
222d843dd53SAlexandre Belloni			};
223d843dd53SAlexandre Belloni
224d843dd53SAlexandre Belloni			uart2_pins: uart2-pins {
225d843dd53SAlexandre Belloni				pins = "GPIO_12", "GPIO_13";
226d843dd53SAlexandre Belloni				function = "uart2";
227d843dd53SAlexandre Belloni			};
228a0553e01SQuentin Schulz
229ee5930c9SMichael Walle			miim1_pins: miim1-pins {
230a0553e01SQuentin Schulz				pins = "GPIO_14", "GPIO_15";
231d203c2d3SLars Povlsen				function = "miim";
232a0553e01SQuentin Schulz			};
2339ca953a3SAlexandre Belloni
234d843dd53SAlexandre Belloni		};
23549b03169SAlexandre Belloni
23649b03169SAlexandre Belloni		mdio0: mdio@107009c {
23749b03169SAlexandre Belloni			#address-cells = <1>;
23849b03169SAlexandre Belloni			#size-cells = <0>;
23949b03169SAlexandre Belloni			compatible = "mscc,ocelot-miim";
24049e5bb13SQuentin Schulz			reg = <0x107009c 0x24>, <0x10700f0 0x8>;
24149b03169SAlexandre Belloni			interrupts = <14>;
24249b03169SAlexandre Belloni			status = "disabled";
24349b03169SAlexandre Belloni
24449b03169SAlexandre Belloni			phy0: ethernet-phy@0 {
24549b03169SAlexandre Belloni				reg = <0>;
24649b03169SAlexandre Belloni			};
24749b03169SAlexandre Belloni			phy1: ethernet-phy@1 {
24849b03169SAlexandre Belloni				reg = <1>;
24949b03169SAlexandre Belloni			};
25049b03169SAlexandre Belloni			phy2: ethernet-phy@2 {
25149b03169SAlexandre Belloni				reg = <2>;
25249b03169SAlexandre Belloni			};
25349b03169SAlexandre Belloni			phy3: ethernet-phy@3 {
25449b03169SAlexandre Belloni				reg = <3>;
25549b03169SAlexandre Belloni			};
25649b03169SAlexandre Belloni		};
257a0553e01SQuentin Schulz
258a0553e01SQuentin Schulz		mdio1: mdio@10700c0 {
259a0553e01SQuentin Schulz			#address-cells = <1>;
260a0553e01SQuentin Schulz			#size-cells = <0>;
261a0553e01SQuentin Schulz			compatible = "mscc,ocelot-miim";
262a0553e01SQuentin Schulz			reg = <0x10700c0 0x24>;
263a0553e01SQuentin Schulz			interrupts = <15>;
264a0553e01SQuentin Schulz			pinctrl-names = "default";
265ee5930c9SMichael Walle			pinctrl-0 = <&miim1_pins>;
266a0553e01SQuentin Schulz			status = "disabled";
267a0553e01SQuentin Schulz		};
2683df0e680SQuentin Schulz
2693df0e680SQuentin Schulz		hsio: syscon@10d0000 {
2703df0e680SQuentin Schulz			compatible = "mscc,ocelot-hsio", "syscon", "simple-mfd";
2713df0e680SQuentin Schulz			reg = <0x10d0000 0x10000>;
2721d6a632cSQuentin Schulz
2731d6a632cSQuentin Schulz			serdes: serdes {
2741d6a632cSQuentin Schulz				compatible = "mscc,vsc7514-serdes";
2751d6a632cSQuentin Schulz				#phy-cells = <2>;
2761d6a632cSQuentin Schulz			};
2773df0e680SQuentin Schulz		};
278d843dd53SAlexandre Belloni	};
279d843dd53SAlexandre Belloni};
280