11.1.1.4Sjmcneill// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
21.1Sjmcneill/*
31.1Sjmcneill * Device Tree Include file for Marvell 98dx3236 family SoC
41.1Sjmcneill *
51.1Sjmcneill * Copyright (C) 2016 Allied Telesis Labs
61.1Sjmcneill *
71.1Sjmcneill * Contains definitions specific to the 98dx3236 SoC that are not
81.1Sjmcneill * common to all Armada XP SoCs.
91.1Sjmcneill */
101.1Sjmcneill
111.1.1.2Sjmcneill#include "armada-370-xp.dtsi"
121.1Sjmcneill
131.1Sjmcneill/ {
141.1.1.2Sjmcneill	#address-cells = <2>;
151.1.1.2Sjmcneill	#size-cells = <2>;
161.1.1.2Sjmcneill
171.1Sjmcneill	model = "Marvell 98DX3236 SoC";
181.1.1.2Sjmcneill	compatible = "marvell,armadaxp-98dx3236", "marvell,armada-370-xp";
191.1Sjmcneill
201.1Sjmcneill	aliases {
211.1Sjmcneill		gpio0 = &gpio0;
221.1Sjmcneill		gpio1 = &gpio1;
231.1Sjmcneill		gpio2 = &gpio2;
241.1Sjmcneill	};
251.1Sjmcneill
261.1Sjmcneill	cpus {
271.1Sjmcneill		#address-cells = <1>;
281.1Sjmcneill		#size-cells = <0>;
291.1Sjmcneill		enable-method = "marvell,98dx3236-smp";
301.1Sjmcneill
311.1Sjmcneill		cpu@0 {
321.1Sjmcneill			device_type = "cpu";
331.1Sjmcneill			compatible = "marvell,sheeva-v7";
341.1Sjmcneill			reg = <0>;
351.1Sjmcneill			clocks = <&cpuclk 0>;
361.1Sjmcneill			clock-latency = <1000000>;
371.1Sjmcneill		};
381.1Sjmcneill	};
391.1Sjmcneill
401.1Sjmcneill	soc {
411.1.1.2Sjmcneill		compatible = "marvell,armadaxp-mbus", "simple-bus";
421.1.1.2Sjmcneill
431.1Sjmcneill		ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
441.1Sjmcneill			  MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
451.1Sjmcneill			  MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
461.1Sjmcneill			  MBUS_ID(0x03, 0x00) 0 0 0xa8000000 0x4000000
471.1Sjmcneill			  MBUS_ID(0x08, 0x00) 0 0 0xac000000 0x100000>;
481.1Sjmcneill
491.1.1.2Sjmcneill		bootrom {
501.1.1.2Sjmcneill			compatible = "marvell,bootrom";
511.1.1.2Sjmcneill			reg = <MBUS_ID(0x01, 0x1d) 0 0x100000>;
521.1.1.2Sjmcneill		};
531.1.1.2Sjmcneill
541.1Sjmcneill		/*
551.1Sjmcneill		 * 98DX3236 has 1 x1 PCIe unit Gen2.0
561.1Sjmcneill		 */
571.1.1.3Sjmcneill		pciec: pcie@82000000 {
581.1Sjmcneill			compatible = "marvell,armada-xp-pcie";
591.1Sjmcneill			status = "disabled";
601.1Sjmcneill			device_type = "pci";
611.1Sjmcneill
621.1Sjmcneill			#address-cells = <3>;
631.1Sjmcneill			#size-cells = <2>;
641.1Sjmcneill
651.1Sjmcneill			msi-parent = <&mpic>;
661.1Sjmcneill			bus-range = <0x00 0xff>;
671.1Sjmcneill
681.1Sjmcneill			ranges =
691.1Sjmcneill			       <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000   /* Port 0.0 registers */
701.1Sjmcneill				0x82000000 0x1 0       MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
711.1.1.2Sjmcneill				0x81000000 0x1 0       MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO  */>;
721.1Sjmcneill
731.1Sjmcneill			pcie1: pcie@1,0 {
741.1Sjmcneill				device_type = "pci";
751.1Sjmcneill				assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
761.1Sjmcneill				reg = <0x0800 0 0 0 0>;
771.1Sjmcneill				#address-cells = <3>;
781.1Sjmcneill				#size-cells = <2>;
791.1Sjmcneill				#interrupt-cells = <1>;
801.1Sjmcneill				ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
811.1Sjmcneill					  0x81000000 0 0 0x81000000 0x1 0 1 0>;
821.1.1.3Sjmcneill				bus-range = <0x00 0xff>;
831.1Sjmcneill				interrupt-map-mask = <0 0 0 0>;
841.1Sjmcneill				interrupt-map = <0 0 0 0 &mpic 58>;
851.1Sjmcneill				marvell,pcie-port = <0>;
861.1Sjmcneill				marvell,pcie-lane = <0>;
871.1Sjmcneill				clocks = <&gateclk 5>;
881.1Sjmcneill				status = "disabled";
891.1Sjmcneill			};
901.1Sjmcneill		};
911.1Sjmcneill
921.1Sjmcneill		internal-regs {
931.1.1.7Sskrll			sdramc: sdramc@1400 {
941.1.1.2Sjmcneill				compatible = "marvell,armada-xp-sdram-controller";
951.1.1.2Sjmcneill				reg = <0x1400 0x500>;
961.1.1.2Sjmcneill			};
971.1.1.2Sjmcneill
981.1.1.2Sjmcneill			L2: l2-cache@8000 {
991.1.1.2Sjmcneill				compatible = "marvell,aurora-system-cache";
1001.1.1.2Sjmcneill				reg = <0x08000 0x1000>;
1011.1.1.2Sjmcneill				cache-id-part = <0x100>;
1021.1.1.2Sjmcneill				cache-level = <2>;
1031.1.1.2Sjmcneill				cache-unified;
1041.1.1.2Sjmcneill				wt-override;
1051.1.1.2Sjmcneill			};
1061.1.1.2Sjmcneill
1071.1.1.2Sjmcneill			gpio0: gpio@18100 {
1081.1.1.2Sjmcneill				compatible = "marvell,orion-gpio";
1091.1.1.2Sjmcneill				reg = <0x18100 0x40>;
1101.1.1.2Sjmcneill				ngpios = <32>;
1111.1.1.2Sjmcneill				gpio-controller;
1121.1.1.2Sjmcneill				#gpio-cells = <2>;
1131.1.1.2Sjmcneill				interrupt-controller;
1141.1.1.2Sjmcneill				#interrupt-cells = <2>;
1151.1.1.2Sjmcneill				interrupts = <82>, <83>, <84>, <85>;
1161.1.1.2Sjmcneill			};
1171.1.1.2Sjmcneill
1181.1.1.2Sjmcneill			/* does not exist */
1191.1.1.2Sjmcneill			gpio1: gpio@18140 {
1201.1.1.2Sjmcneill				compatible = "marvell,orion-gpio";
1211.1.1.2Sjmcneill				reg = <0x18140 0x40>;
1221.1.1.2Sjmcneill				status = "disabled";
1231.1.1.2Sjmcneill			};
1241.1.1.2Sjmcneill
1251.1.1.2Sjmcneill			gpio2: gpio@18180 { /* rework some properties */
1261.1.1.2Sjmcneill				compatible = "marvell,orion-gpio";
1271.1.1.2Sjmcneill				reg = <0x18180 0x40>;
1281.1.1.2Sjmcneill				ngpios = <1>; /* only gpio #32 */
1291.1.1.2Sjmcneill				gpio-controller;
1301.1.1.2Sjmcneill				#gpio-cells = <2>;
1311.1.1.2Sjmcneill				interrupt-controller;
1321.1.1.2Sjmcneill				#interrupt-cells = <2>;
1331.1.1.2Sjmcneill				interrupts = <87>;
1341.1.1.2Sjmcneill			};
1351.1.1.2Sjmcneill
1361.1.1.2Sjmcneill			systemc: system-controller@18200 {
1371.1.1.2Sjmcneill				compatible = "marvell,armada-370-xp-system-controller";
1381.1.1.2Sjmcneill				reg = <0x18200 0x500>;
1391.1.1.2Sjmcneill			};
1401.1.1.2Sjmcneill
1411.1.1.2Sjmcneill			gateclk: clock-gating-control@18220 {
1421.1.1.2Sjmcneill				compatible = "marvell,mv98dx3236-gating-clock";
1431.1.1.2Sjmcneill				reg = <0x18220 0x4>;
1441.1.1.2Sjmcneill				clocks = <&coreclk 0>;
1451.1.1.2Sjmcneill				#clock-cells = <1>;
1461.1Sjmcneill			};
1471.1Sjmcneill
1481.1Sjmcneill			cpuclk: clock-complex@18700 {
1491.1.1.2Sjmcneill				#clock-cells = <1>;
1501.1Sjmcneill				compatible = "marvell,mv98dx3236-cpu-clock";
1511.1.1.2Sjmcneill				reg = <0x18700 0x24>, <0x1c054 0x10>;
1521.1.1.2Sjmcneill				clocks = <&coreclk 1>;
1531.1Sjmcneill			};
1541.1Sjmcneill
1551.1Sjmcneill			corediv-clock@18740 {
1561.1Sjmcneill				status = "disabled";
1571.1Sjmcneill			};
1581.1Sjmcneill
1591.1.1.2Sjmcneill			cpu-config@21000 {
1601.1.1.2Sjmcneill				compatible = "marvell,armada-xp-cpu-config";
1611.1.1.2Sjmcneill				reg = <0x21000 0x8>;
1621.1Sjmcneill			};
1631.1Sjmcneill
1641.1.1.2Sjmcneill			ethernet@70000 {
1651.1.1.2Sjmcneill				compatible = "marvell,armada-xp-neta";
1661.1Sjmcneill			};
1671.1Sjmcneill
1681.1.1.2Sjmcneill			ethernet@74000 {
1691.1.1.2Sjmcneill				compatible = "marvell,armada-xp-neta";
1701.1Sjmcneill			};
1711.1Sjmcneill
1721.1.1.2Sjmcneill			xor1: xor@f0800 {
1731.1Sjmcneill				compatible = "marvell,orion-xor";
1741.1Sjmcneill				reg = <0xf0800 0x100
1751.1Sjmcneill				       0xf0a00 0x100>;
1761.1Sjmcneill				clocks = <&gateclk 22>;
1771.1Sjmcneill				status = "okay";
1781.1Sjmcneill
1791.1Sjmcneill				xor10 {
1801.1Sjmcneill					interrupts = <51>;
1811.1Sjmcneill					dmacap,memcpy;
1821.1Sjmcneill					dmacap,xor;
1831.1Sjmcneill				};
1841.1Sjmcneill				xor11 {
1851.1Sjmcneill					interrupts = <52>;
1861.1Sjmcneill					dmacap,memcpy;
1871.1Sjmcneill					dmacap,xor;
1881.1Sjmcneill					dmacap,memset;
1891.1Sjmcneill				};
1901.1Sjmcneill			};
1911.1Sjmcneill
1921.1.1.6Sjmcneill			nand_controller: nand-controller@d0000 {
1931.1.1.2Sjmcneill				clocks = <&dfx_coredivclk 0>;
1941.1Sjmcneill			};
1951.1Sjmcneill
1961.1.1.2Sjmcneill			xor0: xor@f0900 {
1971.1.1.2Sjmcneill				compatible = "marvell,orion-xor";
1981.1.1.2Sjmcneill				reg = <0xF0900 0x100
1991.1.1.2Sjmcneill				       0xF0B00 0x100>;
2001.1.1.2Sjmcneill				clocks = <&gateclk 28>;
2011.1.1.2Sjmcneill				status = "okay";
2021.1Sjmcneill
2031.1.1.2Sjmcneill				xor00 {
2041.1.1.2Sjmcneill					interrupts = <94>;
2051.1.1.2Sjmcneill					dmacap,memcpy;
2061.1.1.2Sjmcneill					dmacap,xor;
2071.1.1.2Sjmcneill				};
2081.1.1.2Sjmcneill				xor01 {
2091.1.1.2Sjmcneill					interrupts = <95>;
2101.1.1.2Sjmcneill					dmacap,memcpy;
2111.1.1.2Sjmcneill					dmacap,xor;
2121.1.1.2Sjmcneill					dmacap,memset;
2131.1.1.2Sjmcneill				};
2141.1Sjmcneill			};
2151.1Sjmcneill		};
2161.1Sjmcneill
2171.1.1.2Sjmcneill		dfx: dfx-server@ac000000 {
2181.1.1.2Sjmcneill			compatible = "marvell,dfx-server", "simple-bus";
2191.1Sjmcneill			#address-cells = <1>;
2201.1Sjmcneill			#size-cells = <1>;
2211.1Sjmcneill			ranges = <0 MBUS_ID(0x08, 0x00) 0 0x100000>;
2221.1.1.2Sjmcneill			reg = <MBUS_ID(0x08, 0x00) 0 0x100000>;
2231.1.1.2Sjmcneill
2241.1.1.2Sjmcneill			coreclk: mvebu-sar@f8204 {
2251.1.1.2Sjmcneill				compatible = "marvell,mv98dx3236-core-clock";
2261.1.1.2Sjmcneill				reg = <0xf8204 0x4>;
2271.1.1.2Sjmcneill				#clock-cells = <1>;
2281.1.1.2Sjmcneill			};
2291.1Sjmcneill
2301.1Sjmcneill			dfx_coredivclk: corediv-clock@f8268 {
2311.1Sjmcneill				compatible = "marvell,mv98dx3236-corediv-clock";
2321.1Sjmcneill				reg = <0xf8268 0xc>;
2331.1Sjmcneill				#clock-cells = <1>;
2341.1Sjmcneill				clocks = <&mainpll>;
2351.1Sjmcneill				clock-output-names = "nand";
2361.1Sjmcneill			};
2371.1Sjmcneill		};
2381.1Sjmcneill
2391.1Sjmcneill		switch: switch@a8000000 {
2401.1Sjmcneill			compatible = "simple-bus";
2411.1Sjmcneill			#address-cells = <1>;
2421.1Sjmcneill			#size-cells = <1>;
2431.1Sjmcneill			ranges = <0 MBUS_ID(0x03, 0x00) 0 0x100000>;
2441.1Sjmcneill
2451.1Sjmcneill			pp0: packet-processor@0 {
2461.1.1.6Sjmcneill				compatible = "marvell,prestera-98dx3236", "marvell,prestera";
2471.1Sjmcneill				reg = <0 0x4000000>;
2481.1Sjmcneill				interrupts = <33>, <34>, <35>;
2491.1Sjmcneill				dfx = <&dfx>;
2501.1Sjmcneill			};
2511.1Sjmcneill		};
2521.1Sjmcneill	};
2531.1.1.2Sjmcneill
2541.1.1.2Sjmcneill	clocks {
2551.1.1.2Sjmcneill		/* 25 MHz reference crystal */
2561.1.1.2Sjmcneill		refclk: oscillator {
2571.1.1.2Sjmcneill			compatible = "fixed-clock";
2581.1.1.2Sjmcneill			#clock-cells = <0>;
2591.1.1.2Sjmcneill			clock-frequency = <25000000>;
2601.1.1.2Sjmcneill		};
2611.1.1.2Sjmcneill	};
2621.1.1.2Sjmcneill};
2631.1.1.2Sjmcneill
2641.1.1.2Sjmcneill&i2c0 {
2651.1.1.2Sjmcneill	compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
2661.1.1.2Sjmcneill	reg = <0x11000 0x100>;
2671.1.1.8Sjmcneill	pinctrl-names = "default";
2681.1.1.8Sjmcneill	pinctrl-0 = <&i2c0_pins>;
2691.1.1.2Sjmcneill};
2701.1.1.2Sjmcneill
2711.1.1.2Sjmcneill&mpic {
2721.1.1.2Sjmcneill	reg = <0x20a00 0x2d0>, <0x21070 0x58>;
2731.1.1.2Sjmcneill};
2741.1.1.2Sjmcneill
2751.1.1.3Sjmcneill&rtc {
2761.1.1.3Sjmcneill	status = "disabled";
2771.1.1.3Sjmcneill};
2781.1.1.3Sjmcneill
2791.1.1.2Sjmcneill&timer {
2801.1.1.2Sjmcneill	compatible = "marvell,armada-xp-timer";
2811.1.1.2Sjmcneill	clocks = <&coreclk 2>, <&refclk>;
2821.1.1.2Sjmcneill	clock-names = "nbclk", "fixed";
2831.1.1.2Sjmcneill};
2841.1.1.2Sjmcneill
2851.1.1.2Sjmcneill&watchdog {
2861.1.1.2Sjmcneill	compatible = "marvell,armada-xp-wdt";
2871.1.1.2Sjmcneill	clocks = <&coreclk 2>, <&refclk>;
2881.1.1.2Sjmcneill	clock-names = "nbclk", "fixed";
2891.1.1.2Sjmcneill};
2901.1.1.2Sjmcneill
2911.1.1.2Sjmcneill&cpurst {
2921.1.1.2Sjmcneill	reg = <0x20800 0x20>;
2931.1.1.2Sjmcneill};
2941.1.1.2Sjmcneill
2951.1.1.2Sjmcneill&usb0 {
2961.1.1.2Sjmcneill	clocks = <&gateclk 18>;
2971.1.1.2Sjmcneill};
2981.1.1.2Sjmcneill
2991.1.1.2Sjmcneill&usb1 {
3001.1.1.2Sjmcneill	clocks = <&gateclk 19>;
3011.1Sjmcneill};
3021.1Sjmcneill
3031.1Sjmcneill&pinctrl {
3041.1Sjmcneill	compatible = "marvell,98dx3236-pinctrl";
3051.1Sjmcneill
3061.1.1.5Sjmcneill	nand_pins: nand-pins {
3071.1.1.5Sjmcneill		marvell,pins = "mpp20", "mpp21", "mpp22",
3081.1.1.5Sjmcneill			       "mpp23", "mpp24", "mpp25",
3091.1.1.5Sjmcneill			       "mpp26", "mpp27", "mpp28",
3101.1.1.5Sjmcneill			       "mpp29", "mpp30";
3111.1.1.5Sjmcneill		marvell,function = "dev";
3121.1.1.5Sjmcneill	};
3131.1.1.5Sjmcneill
3141.1.1.5Sjmcneill	nand_rb: nand-rb {
3151.1.1.5Sjmcneill		marvell,pins = "mpp19";
3161.1.1.5Sjmcneill		marvell,function = "nand";
3171.1.1.5Sjmcneill	};
3181.1.1.5Sjmcneill
3191.1Sjmcneill	spi0_pins: spi0-pins {
3201.1Sjmcneill		marvell,pins = "mpp0", "mpp1",
3211.1Sjmcneill			       "mpp2", "mpp3";
3221.1Sjmcneill		marvell,function = "spi0";
3231.1Sjmcneill	};
3241.1.1.8Sjmcneill
3251.1.1.8Sjmcneill	i2c0_pins: i2c-pins-0 {
3261.1.1.8Sjmcneill		marvell,pins = "mpp14", "mpp15";
3271.1.1.8Sjmcneill		marvell,function = "i2c0";
3281.1.1.8Sjmcneill	};
3291.1Sjmcneill};
3301.1Sjmcneill
3311.1.1.2Sjmcneill&spi0 {
3321.1.1.2Sjmcneill	compatible = "marvell,armada-xp-spi", "marvell,orion-spi";
3331.1.1.2Sjmcneill	pinctrl-0 = <&spi0_pins>;
3341.1.1.2Sjmcneill	pinctrl-names = "default";
3351.1Sjmcneill};
3361.1Sjmcneill
3371.1.1.2Sjmcneill&sdio {
3381.1Sjmcneill	status = "disabled";
3391.1Sjmcneill};
3401.1Sjmcneill
3411.1.1.7Sskrll&uart0 {
3421.1.1.7Sskrll	compatible = "marvell,armada-38x-uart";
3431.1.1.7Sskrll};
3441.1.1.7Sskrll
3451.1.1.7Sskrll&uart1 {
3461.1.1.7Sskrll	compatible = "marvell,armada-38x-uart";
3471.1.1.7Sskrll};
3481.1.1.7Sskrll
349