18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci#include <dt-bindings/clock/ath79-clk.h>
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci/ {
58c2ecf20Sopenharmony_ci	compatible = "qca,ar9331";
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci	#address-cells = <1>;
88c2ecf20Sopenharmony_ci	#size-cells = <1>;
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci	cpus {
118c2ecf20Sopenharmony_ci		#address-cells = <1>;
128c2ecf20Sopenharmony_ci		#size-cells = <0>;
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci		cpu@0 {
158c2ecf20Sopenharmony_ci			device_type = "cpu";
168c2ecf20Sopenharmony_ci			compatible = "mips,mips24Kc";
178c2ecf20Sopenharmony_ci			clocks = <&pll ATH79_CLK_CPU>;
188c2ecf20Sopenharmony_ci			reg = <0>;
198c2ecf20Sopenharmony_ci		};
208c2ecf20Sopenharmony_ci	};
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci	cpuintc: interrupt-controller {
238c2ecf20Sopenharmony_ci		compatible = "qca,ar7100-cpu-intc";
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci		interrupt-controller;
268c2ecf20Sopenharmony_ci		#interrupt-cells = <1>;
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci		qca,ddr-wb-channel-interrupts = <2>, <3>;
298c2ecf20Sopenharmony_ci		qca,ddr-wb-channels = <&ddr_ctrl 3>, <&ddr_ctrl 2>;
308c2ecf20Sopenharmony_ci	};
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci	ref: ref {
338c2ecf20Sopenharmony_ci		compatible = "fixed-clock";
348c2ecf20Sopenharmony_ci		#clock-cells = <0>;
358c2ecf20Sopenharmony_ci	};
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci	ahb {
388c2ecf20Sopenharmony_ci		compatible = "simple-bus";
398c2ecf20Sopenharmony_ci		ranges;
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci		#address-cells = <1>;
428c2ecf20Sopenharmony_ci		#size-cells = <1>;
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci		interrupt-parent = <&cpuintc>;
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci		apb {
478c2ecf20Sopenharmony_ci			compatible = "simple-bus";
488c2ecf20Sopenharmony_ci			ranges;
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci			#address-cells = <1>;
518c2ecf20Sopenharmony_ci			#size-cells = <1>;
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci			interrupt-parent = <&miscintc>;
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci			ddr_ctrl: memory-controller@18000000 {
568c2ecf20Sopenharmony_ci				compatible = "qca,ar7240-ddr-controller";
578c2ecf20Sopenharmony_ci				reg = <0x18000000 0x100>;
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci				#qca,ddr-wb-channel-cells = <1>;
608c2ecf20Sopenharmony_ci			};
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci			uart: serial@18020000 {
638c2ecf20Sopenharmony_ci				compatible = "qca,ar9330-uart";
648c2ecf20Sopenharmony_ci				reg = <0x18020000 0x14>;
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci				interrupts = <3>;
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci				clocks = <&ref>;
698c2ecf20Sopenharmony_ci				clock-names = "uart";
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci				status = "disabled";
728c2ecf20Sopenharmony_ci			};
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci			gpio: gpio@18040000 {
758c2ecf20Sopenharmony_ci				compatible = "qca,ar7100-gpio";
768c2ecf20Sopenharmony_ci				reg = <0x18040000 0x34>;
778c2ecf20Sopenharmony_ci				interrupts = <2>;
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci				ngpios = <30>;
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci				gpio-controller;
828c2ecf20Sopenharmony_ci				#gpio-cells = <2>;
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci				interrupt-controller;
858c2ecf20Sopenharmony_ci				#interrupt-cells = <2>;
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci				status = "disabled";
888c2ecf20Sopenharmony_ci			};
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci			pll: pll-controller@18050000 {
918c2ecf20Sopenharmony_ci				compatible = "qca,ar9330-pll";
928c2ecf20Sopenharmony_ci				reg = <0x18050000 0x100>;
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci				clocks = <&ref>;
958c2ecf20Sopenharmony_ci				clock-names = "ref";
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci				#clock-cells = <1>;
988c2ecf20Sopenharmony_ci			};
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci			miscintc: interrupt-controller@18060010 {
1018c2ecf20Sopenharmony_ci				compatible = "qca,ar7240-misc-intc";
1028c2ecf20Sopenharmony_ci				reg = <0x18060010 0x8>;
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ci				interrupt-parent = <&cpuintc>;
1058c2ecf20Sopenharmony_ci				interrupts = <6>;
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci				interrupt-controller;
1088c2ecf20Sopenharmony_ci				#interrupt-cells = <1>;
1098c2ecf20Sopenharmony_ci			};
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci			rst: reset-controller@1806001c {
1128c2ecf20Sopenharmony_ci				compatible = "qca,ar7100-reset";
1138c2ecf20Sopenharmony_ci				reg = <0x1806001c 0x4>;
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci				#reset-cells = <1>;
1168c2ecf20Sopenharmony_ci			};
1178c2ecf20Sopenharmony_ci		};
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ci		eth0: ethernet@19000000 {
1208c2ecf20Sopenharmony_ci			compatible = "qca,ar9330-eth";
1218c2ecf20Sopenharmony_ci			reg = <0x19000000 0x200>;
1228c2ecf20Sopenharmony_ci			interrupts = <4>;
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ci			resets = <&rst 9>, <&rst 22>;
1258c2ecf20Sopenharmony_ci			reset-names = "mac", "mdio";
1268c2ecf20Sopenharmony_ci			clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
1278c2ecf20Sopenharmony_ci			clock-names = "eth", "mdio";
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ci			phy-mode = "mii";
1308c2ecf20Sopenharmony_ci			phy-handle = <&phy_port4>;
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_ci			status = "disabled";
1338c2ecf20Sopenharmony_ci		};
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci		eth1: ethernet@1a000000 {
1368c2ecf20Sopenharmony_ci			compatible = "qca,ar9330-eth";
1378c2ecf20Sopenharmony_ci			reg = <0x1a000000 0x200>;
1388c2ecf20Sopenharmony_ci			interrupts = <5>;
1398c2ecf20Sopenharmony_ci			resets = <&rst 13>, <&rst 23>;
1408c2ecf20Sopenharmony_ci			reset-names = "mac", "mdio";
1418c2ecf20Sopenharmony_ci			clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
1428c2ecf20Sopenharmony_ci			clock-names = "eth", "mdio";
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci			phy-mode = "gmii";
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_ci			status = "disabled";
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci			fixed-link {
1498c2ecf20Sopenharmony_ci				speed = <1000>;
1508c2ecf20Sopenharmony_ci				full-duplex;
1518c2ecf20Sopenharmony_ci			};
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ci			mdio {
1548c2ecf20Sopenharmony_ci				#address-cells = <1>;
1558c2ecf20Sopenharmony_ci				#size-cells = <0>;
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci				switch10: switch@10 {
1588c2ecf20Sopenharmony_ci					#address-cells = <1>;
1598c2ecf20Sopenharmony_ci					#size-cells = <0>;
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci					compatible = "qca,ar9331-switch";
1628c2ecf20Sopenharmony_ci					reg = <0x10>;
1638c2ecf20Sopenharmony_ci					resets = <&rst 8>;
1648c2ecf20Sopenharmony_ci					reset-names = "switch";
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ci					interrupt-parent = <&miscintc>;
1678c2ecf20Sopenharmony_ci					interrupts = <12>;
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_ci					interrupt-controller;
1708c2ecf20Sopenharmony_ci					#interrupt-cells = <1>;
1718c2ecf20Sopenharmony_ci
1728c2ecf20Sopenharmony_ci					ports {
1738c2ecf20Sopenharmony_ci						#address-cells = <1>;
1748c2ecf20Sopenharmony_ci						#size-cells = <0>;
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci						switch_port0: port@0 {
1778c2ecf20Sopenharmony_ci							reg = <0x0>;
1788c2ecf20Sopenharmony_ci							label = "cpu";
1798c2ecf20Sopenharmony_ci							ethernet = <&eth1>;
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci							phy-mode = "gmii";
1828c2ecf20Sopenharmony_ci
1838c2ecf20Sopenharmony_ci							fixed-link {
1848c2ecf20Sopenharmony_ci								speed = <1000>;
1858c2ecf20Sopenharmony_ci								full-duplex;
1868c2ecf20Sopenharmony_ci							};
1878c2ecf20Sopenharmony_ci						};
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ci						switch_port1: port@1 {
1908c2ecf20Sopenharmony_ci							reg = <0x1>;
1918c2ecf20Sopenharmony_ci							phy-handle = <&phy_port0>;
1928c2ecf20Sopenharmony_ci							phy-mode = "internal";
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ci							status = "disabled";
1958c2ecf20Sopenharmony_ci						};
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci						switch_port2: port@2 {
1988c2ecf20Sopenharmony_ci							reg = <0x2>;
1998c2ecf20Sopenharmony_ci							phy-handle = <&phy_port1>;
2008c2ecf20Sopenharmony_ci							phy-mode = "internal";
2018c2ecf20Sopenharmony_ci
2028c2ecf20Sopenharmony_ci							status = "disabled";
2038c2ecf20Sopenharmony_ci						};
2048c2ecf20Sopenharmony_ci
2058c2ecf20Sopenharmony_ci						switch_port3: port@3 {
2068c2ecf20Sopenharmony_ci							reg = <0x3>;
2078c2ecf20Sopenharmony_ci							phy-handle = <&phy_port2>;
2088c2ecf20Sopenharmony_ci							phy-mode = "internal";
2098c2ecf20Sopenharmony_ci
2108c2ecf20Sopenharmony_ci							status = "disabled";
2118c2ecf20Sopenharmony_ci						};
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci						switch_port4: port@4 {
2148c2ecf20Sopenharmony_ci							reg = <0x4>;
2158c2ecf20Sopenharmony_ci							phy-handle = <&phy_port3>;
2168c2ecf20Sopenharmony_ci							phy-mode = "internal";
2178c2ecf20Sopenharmony_ci
2188c2ecf20Sopenharmony_ci							status = "disabled";
2198c2ecf20Sopenharmony_ci						};
2208c2ecf20Sopenharmony_ci					};
2218c2ecf20Sopenharmony_ci
2228c2ecf20Sopenharmony_ci					mdio {
2238c2ecf20Sopenharmony_ci						#address-cells = <1>;
2248c2ecf20Sopenharmony_ci						#size-cells = <0>;
2258c2ecf20Sopenharmony_ci
2268c2ecf20Sopenharmony_ci						interrupt-parent = <&switch10>;
2278c2ecf20Sopenharmony_ci
2288c2ecf20Sopenharmony_ci						phy_port0: phy@0 {
2298c2ecf20Sopenharmony_ci							reg = <0x0>;
2308c2ecf20Sopenharmony_ci							interrupts = <0>;
2318c2ecf20Sopenharmony_ci							status = "disabled";
2328c2ecf20Sopenharmony_ci						};
2338c2ecf20Sopenharmony_ci
2348c2ecf20Sopenharmony_ci						phy_port1: phy@1 {
2358c2ecf20Sopenharmony_ci							reg = <0x1>;
2368c2ecf20Sopenharmony_ci							interrupts = <0>;
2378c2ecf20Sopenharmony_ci							status = "disabled";
2388c2ecf20Sopenharmony_ci						};
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ci						phy_port2: phy@2 {
2418c2ecf20Sopenharmony_ci							reg = <0x2>;
2428c2ecf20Sopenharmony_ci							interrupts = <0>;
2438c2ecf20Sopenharmony_ci							status = "disabled";
2448c2ecf20Sopenharmony_ci						};
2458c2ecf20Sopenharmony_ci
2468c2ecf20Sopenharmony_ci						phy_port3: phy@3 {
2478c2ecf20Sopenharmony_ci							reg = <0x3>;
2488c2ecf20Sopenharmony_ci							interrupts = <0>;
2498c2ecf20Sopenharmony_ci							status = "disabled";
2508c2ecf20Sopenharmony_ci						};
2518c2ecf20Sopenharmony_ci
2528c2ecf20Sopenharmony_ci						phy_port4: phy@4 {
2538c2ecf20Sopenharmony_ci							reg = <0x4>;
2548c2ecf20Sopenharmony_ci							interrupts = <0>;
2558c2ecf20Sopenharmony_ci							status = "disabled";
2568c2ecf20Sopenharmony_ci						};
2578c2ecf20Sopenharmony_ci					};
2588c2ecf20Sopenharmony_ci				};
2598c2ecf20Sopenharmony_ci			};
2608c2ecf20Sopenharmony_ci		};
2618c2ecf20Sopenharmony_ci
2628c2ecf20Sopenharmony_ci		usb: usb@1b000100 {
2638c2ecf20Sopenharmony_ci			compatible = "chipidea,usb2";
2648c2ecf20Sopenharmony_ci			reg = <0x1b000000 0x200>;
2658c2ecf20Sopenharmony_ci
2668c2ecf20Sopenharmony_ci			interrupts = <3>;
2678c2ecf20Sopenharmony_ci			resets = <&rst 5>;
2688c2ecf20Sopenharmony_ci
2698c2ecf20Sopenharmony_ci			phy-names = "usb-phy";
2708c2ecf20Sopenharmony_ci			phys = <&usb_phy>;
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_ci			status = "disabled";
2738c2ecf20Sopenharmony_ci		};
2748c2ecf20Sopenharmony_ci
2758c2ecf20Sopenharmony_ci		spi: spi@1f000000 {
2768c2ecf20Sopenharmony_ci			compatible = "qca,ar7100-spi";
2778c2ecf20Sopenharmony_ci			reg = <0x1f000000 0x10>;
2788c2ecf20Sopenharmony_ci
2798c2ecf20Sopenharmony_ci			clocks = <&pll ATH79_CLK_AHB>;
2808c2ecf20Sopenharmony_ci			clock-names = "ahb";
2818c2ecf20Sopenharmony_ci
2828c2ecf20Sopenharmony_ci			#address-cells = <1>;
2838c2ecf20Sopenharmony_ci			#size-cells = <0>;
2848c2ecf20Sopenharmony_ci
2858c2ecf20Sopenharmony_ci			status = "disabled";
2868c2ecf20Sopenharmony_ci		};
2878c2ecf20Sopenharmony_ci	};
2888c2ecf20Sopenharmony_ci
2898c2ecf20Sopenharmony_ci	usb_phy: usb-phy {
2908c2ecf20Sopenharmony_ci		compatible = "qca,ar7100-usb-phy";
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci		reset-names = "phy", "suspend-override";
2938c2ecf20Sopenharmony_ci		resets = <&rst 4>, <&rst 3>;
2948c2ecf20Sopenharmony_ci
2958c2ecf20Sopenharmony_ci		#phy-cells = <0>;
2968c2ecf20Sopenharmony_ci
2978c2ecf20Sopenharmony_ci		status = "disabled";
2988c2ecf20Sopenharmony_ci	};
2998c2ecf20Sopenharmony_ci};
300