xref: /openbmc/linux/arch/mips/boot/dts/brcm/bcm7420.dtsi (revision c1144d29f405ce1f4e6ede6482beb3d0d09750c6)
1b2441318SGreg Kroah-Hartman// SPDX-License-Identifier: GPL-2.0
28945e37eSKevin Cernekee/ {
38945e37eSKevin Cernekee	#address-cells = <1>;
48945e37eSKevin Cernekee	#size-cells = <1>;
58945e37eSKevin Cernekee	compatible = "brcm,bcm7420";
68945e37eSKevin Cernekee
78945e37eSKevin Cernekee	cpus {
88945e37eSKevin Cernekee		#address-cells = <1>;
98945e37eSKevin Cernekee		#size-cells = <0>;
108945e37eSKevin Cernekee
118945e37eSKevin Cernekee		mips-hpt-frequency = <93750000>;
128945e37eSKevin Cernekee
138945e37eSKevin Cernekee		cpu@0 {
148945e37eSKevin Cernekee			compatible = "brcm,bmips5000";
158945e37eSKevin Cernekee			device_type = "cpu";
168945e37eSKevin Cernekee			reg = <0>;
178945e37eSKevin Cernekee		};
188945e37eSKevin Cernekee
198945e37eSKevin Cernekee		cpu@1 {
208945e37eSKevin Cernekee			compatible = "brcm,bmips5000";
218945e37eSKevin Cernekee			device_type = "cpu";
228945e37eSKevin Cernekee			reg = <1>;
238945e37eSKevin Cernekee		};
248945e37eSKevin Cernekee	};
258945e37eSKevin Cernekee
268945e37eSKevin Cernekee	aliases {
278945e37eSKevin Cernekee		uart0 = &uart0;
288945e37eSKevin Cernekee	};
298945e37eSKevin Cernekee
30a2c510a2SJaedon Shin	cpu_intc: interrupt-controller {
318945e37eSKevin Cernekee		#address-cells = <0>;
328945e37eSKevin Cernekee		compatible = "mti,cpu-interrupt-controller";
338945e37eSKevin Cernekee
348945e37eSKevin Cernekee		interrupt-controller;
358945e37eSKevin Cernekee		#interrupt-cells = <1>;
368945e37eSKevin Cernekee	};
378945e37eSKevin Cernekee
388945e37eSKevin Cernekee	clocks {
398945e37eSKevin Cernekee		uart_clk: uart_clk {
408945e37eSKevin Cernekee			compatible = "fixed-clock";
418945e37eSKevin Cernekee			#clock-cells = <0>;
428945e37eSKevin Cernekee			clock-frequency = <81000000>;
438945e37eSKevin Cernekee		};
447bbe59ddSJaedon Shin
457bbe59ddSJaedon Shin		upg_clk: upg_clk {
467bbe59ddSJaedon Shin			compatible = "fixed-clock";
477bbe59ddSJaedon Shin			#clock-cells = <0>;
487bbe59ddSJaedon Shin			clock-frequency = <27000000>;
497bbe59ddSJaedon Shin		};
508945e37eSKevin Cernekee	};
518945e37eSKevin Cernekee
528945e37eSKevin Cernekee	rdb {
538945e37eSKevin Cernekee		#address-cells = <1>;
548945e37eSKevin Cernekee		#size-cells = <1>;
558945e37eSKevin Cernekee
568945e37eSKevin Cernekee		compatible = "simple-bus";
578945e37eSKevin Cernekee		ranges = <0 0x10000000 0x01000000>;
588945e37eSKevin Cernekee
59a2c510a2SJaedon Shin		periph_intc: interrupt-controller@441400 {
608945e37eSKevin Cernekee			compatible = "brcm,bcm7038-l1-intc";
618945e37eSKevin Cernekee			reg = <0x441400 0x30>, <0x441600 0x30>;
628945e37eSKevin Cernekee
638945e37eSKevin Cernekee			interrupt-controller;
648945e37eSKevin Cernekee			#interrupt-cells = <1>;
658945e37eSKevin Cernekee
668945e37eSKevin Cernekee			interrupt-parent = <&cpu_intc>;
678945e37eSKevin Cernekee			interrupts = <2>, <3>;
688945e37eSKevin Cernekee		};
698945e37eSKevin Cernekee
70a2c510a2SJaedon Shin		sun_l2_intc: interrupt-controller@401800 {
718945e37eSKevin Cernekee			compatible = "brcm,l2-intc";
728945e37eSKevin Cernekee			reg = <0x401800 0x30>;
738945e37eSKevin Cernekee			interrupt-controller;
748945e37eSKevin Cernekee			#interrupt-cells = <1>;
758945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
768945e37eSKevin Cernekee			interrupts = <23>;
778945e37eSKevin Cernekee		};
788945e37eSKevin Cernekee
798945e37eSKevin Cernekee		gisb-arb@400000 {
808945e37eSKevin Cernekee			compatible = "brcm,bcm7400-gisb-arb";
818945e37eSKevin Cernekee			reg = <0x400000 0xdc>;
828945e37eSKevin Cernekee			native-endian;
838945e37eSKevin Cernekee			interrupt-parent = <&sun_l2_intc>;
848945e37eSKevin Cernekee			interrupts = <0>, <2>;
858945e37eSKevin Cernekee			brcm,gisb-arb-master-mask = <0x3ff>;
868945e37eSKevin Cernekee			brcm,gisb-arb-master-names = "ssp_0", "cpu_0", "pci_0",
878945e37eSKevin Cernekee						     "pcie_0", "bsp_0", "rdc_0",
888945e37eSKevin Cernekee						     "rptd_0", "avd_0", "avd_1",
898945e37eSKevin Cernekee						     "jtag_0";
908945e37eSKevin Cernekee		};
918945e37eSKevin Cernekee
92a2c510a2SJaedon Shin		upg_irq0_intc: interrupt-controller@406780 {
938945e37eSKevin Cernekee			compatible = "brcm,bcm7120-l2-intc";
948945e37eSKevin Cernekee			reg = <0x406780 0x8>;
958945e37eSKevin Cernekee
96d783738cSJaedon Shin			brcm,int-map-mask = <0x44>, <0x1f000000>, <0x100000>;
978945e37eSKevin Cernekee			brcm,int-fwd-mask = <0x70000>;
988945e37eSKevin Cernekee
998945e37eSKevin Cernekee			interrupt-controller;
1008945e37eSKevin Cernekee			#interrupt-cells = <1>;
1018945e37eSKevin Cernekee
1028945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
103d783738cSJaedon Shin			interrupts = <18>, <19>, <20>;
104d783738cSJaedon Shin			interrupt-names = "upg_main", "upg_bsc", "upg_spi";
1058945e37eSKevin Cernekee		};
1068945e37eSKevin Cernekee
1078945e37eSKevin Cernekee		sun_top_ctrl: syscon@404000 {
1088945e37eSKevin Cernekee			compatible = "brcm,bcm7420-sun-top-ctrl", "syscon";
1098945e37eSKevin Cernekee			reg = <0x404000 0x60c>;
11025d6463eSMark Brown			native-endian;
1118945e37eSKevin Cernekee		};
1128945e37eSKevin Cernekee
1138945e37eSKevin Cernekee		reboot {
1148945e37eSKevin Cernekee			compatible = "brcm,bcm7038-reboot";
1158945e37eSKevin Cernekee			syscon = <&sun_top_ctrl 0x8 0x14>;
1168945e37eSKevin Cernekee		};
1178945e37eSKevin Cernekee
1188945e37eSKevin Cernekee		uart0: serial@406b00 {
1198945e37eSKevin Cernekee			compatible = "ns16550a";
1208945e37eSKevin Cernekee			reg = <0x406b00 0x20>;
1218945e37eSKevin Cernekee			reg-io-width = <0x4>;
1228945e37eSKevin Cernekee			reg-shift = <0x2>;
1238945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
1248945e37eSKevin Cernekee			interrupts = <21>;
1258945e37eSKevin Cernekee			clocks = <&uart_clk>;
1268945e37eSKevin Cernekee			status = "disabled";
1278945e37eSKevin Cernekee		};
1288945e37eSKevin Cernekee
1295c40d493SJaedon Shin		uart1: serial@406b40 {
1305c40d493SJaedon Shin			compatible = "ns16550a";
1315c40d493SJaedon Shin			reg = <0x406b40 0x20>;
1325c40d493SJaedon Shin			reg-io-width = <0x4>;
1335c40d493SJaedon Shin			reg-shift = <0x2>;
1345c40d493SJaedon Shin			interrupt-parent = <&periph_intc>;
1355c40d493SJaedon Shin			interrupts = <64>;
1365c40d493SJaedon Shin			clocks = <&uart_clk>;
1375c40d493SJaedon Shin			status = "disabled";
1385c40d493SJaedon Shin		};
1395c40d493SJaedon Shin
1405c40d493SJaedon Shin		uart2: serial@406b80 {
1415c40d493SJaedon Shin			compatible = "ns16550a";
1425c40d493SJaedon Shin			reg = <0x406b80 0x20>;
1435c40d493SJaedon Shin			reg-io-width = <0x4>;
1445c40d493SJaedon Shin			reg-shift = <0x2>;
1455c40d493SJaedon Shin			interrupt-parent = <&periph_intc>;
1465c40d493SJaedon Shin			interrupts = <65>;
1475c40d493SJaedon Shin			clocks = <&uart_clk>;
1485c40d493SJaedon Shin			status = "disabled";
1495c40d493SJaedon Shin		};
1505c40d493SJaedon Shin
1515c40d493SJaedon Shin		bsca: i2c@406200 {
1525c40d493SJaedon Shin		      clock-frequency = <390000>;
1535c40d493SJaedon Shin		      compatible = "brcm,brcmstb-i2c";
1545c40d493SJaedon Shin		      interrupt-parent = <&upg_irq0_intc>;
1555c40d493SJaedon Shin		      reg = <0x406200 0x58>;
1565c40d493SJaedon Shin		      interrupts = <24>;
1575c40d493SJaedon Shin		      interrupt-names = "upg_bsca";
1585c40d493SJaedon Shin		      status = "disabled";
1595c40d493SJaedon Shin		};
1605c40d493SJaedon Shin
1615c40d493SJaedon Shin		bscb: i2c@406280 {
1625c40d493SJaedon Shin		      clock-frequency = <390000>;
1635c40d493SJaedon Shin		      compatible = "brcm,brcmstb-i2c";
1645c40d493SJaedon Shin		      interrupt-parent = <&upg_irq0_intc>;
1655c40d493SJaedon Shin		      reg = <0x406280 0x58>;
1665c40d493SJaedon Shin		      interrupts = <25>;
1675c40d493SJaedon Shin		      interrupt-names = "upg_bscb";
1685c40d493SJaedon Shin		      status = "disabled";
1695c40d493SJaedon Shin		};
1705c40d493SJaedon Shin
1715c40d493SJaedon Shin		bscc: i2c@406300 {
1725c40d493SJaedon Shin		      clock-frequency = <390000>;
1735c40d493SJaedon Shin		      compatible = "brcm,brcmstb-i2c";
1745c40d493SJaedon Shin		      interrupt-parent = <&upg_irq0_intc>;
1755c40d493SJaedon Shin		      reg = <0x406300 0x58>;
1765c40d493SJaedon Shin		      interrupts = <26>;
1775c40d493SJaedon Shin		      interrupt-names = "upg_bscc";
1785c40d493SJaedon Shin		      status = "disabled";
1795c40d493SJaedon Shin		};
1805c40d493SJaedon Shin
1815c40d493SJaedon Shin		bscd: i2c@406380 {
1825c40d493SJaedon Shin		      clock-frequency = <390000>;
1835c40d493SJaedon Shin		      compatible = "brcm,brcmstb-i2c";
1845c40d493SJaedon Shin		      interrupt-parent = <&upg_irq0_intc>;
1855c40d493SJaedon Shin		      reg = <0x406380 0x58>;
1865c40d493SJaedon Shin		      interrupts = <27>;
1875c40d493SJaedon Shin		      interrupt-names = "upg_bscd";
1885c40d493SJaedon Shin		      status = "disabled";
1895c40d493SJaedon Shin		};
1905c40d493SJaedon Shin
1915c40d493SJaedon Shin		bsce: i2c@406800 {
1925c40d493SJaedon Shin		      clock-frequency = <390000>;
1935c40d493SJaedon Shin		      compatible = "brcm,brcmstb-i2c";
1945c40d493SJaedon Shin		      interrupt-parent = <&upg_irq0_intc>;
1955c40d493SJaedon Shin		      reg = <0x406800 0x58>;
1965c40d493SJaedon Shin		      interrupts = <28>;
1975c40d493SJaedon Shin		      interrupt-names = "upg_bsce";
1985c40d493SJaedon Shin		      status = "disabled";
1995c40d493SJaedon Shin		};
2005c40d493SJaedon Shin
2017bbe59ddSJaedon Shin		pwma: pwm@406580 {
2027bbe59ddSJaedon Shin			compatible = "brcm,bcm7038-pwm";
2037bbe59ddSJaedon Shin			reg = <0x406580 0x28>;
2047bbe59ddSJaedon Shin			#pwm-cells = <2>;
2057bbe59ddSJaedon Shin			clocks = <&upg_clk>;
2067bbe59ddSJaedon Shin			status = "disabled";
2077bbe59ddSJaedon Shin		};
2087bbe59ddSJaedon Shin
2097bbe59ddSJaedon Shin		pwmb: pwm@406880 {
2107bbe59ddSJaedon Shin			compatible = "brcm,bcm7038-pwm";
2117bbe59ddSJaedon Shin			reg = <0x406880 0x28>;
2127bbe59ddSJaedon Shin			#pwm-cells = <2>;
2137bbe59ddSJaedon Shin			clocks = <&upg_clk>;
2147bbe59ddSJaedon Shin			status = "disabled";
2157bbe59ddSJaedon Shin		};
2167bbe59ddSJaedon Shin
217*b68c2575SJaedon Shin		watchdog: watchdog@4067e8 {
218*b68c2575SJaedon Shin			clocks = <&upg_clk>;
219*b68c2575SJaedon Shin			compatible = "brcm,bcm7038-wdt";
220*b68c2575SJaedon Shin			reg = <0x4067e8 0x14>;
221*b68c2575SJaedon Shin			status = "disabled";
222*b68c2575SJaedon Shin		};
223*b68c2575SJaedon Shin
224c707844dSJaedon Shin		upg_gio: gpio@406700 {
225c707844dSJaedon Shin			compatible = "brcm,brcmstb-gpio";
226c707844dSJaedon Shin			reg = <0x406700 0x80>;
227c707844dSJaedon Shin			#gpio-cells = <2>;
228c707844dSJaedon Shin			#interrupt-cells = <2>;
229c707844dSJaedon Shin			gpio-controller;
230c707844dSJaedon Shin			interrupt-controller;
231c707844dSJaedon Shin			interrupt-parent = <&upg_irq0_intc>;
232c707844dSJaedon Shin			interrupts = <6>;
233c707844dSJaedon Shin			brcm,gpio-bank-widths = <32 32 32 27>;
234c707844dSJaedon Shin		};
235c707844dSJaedon Shin
2368945e37eSKevin Cernekee		enet0: ethernet@468000 {
2378945e37eSKevin Cernekee			phy-mode = "internal";
2388945e37eSKevin Cernekee			phy-handle = <&phy1>;
2398945e37eSKevin Cernekee			mac-address = [ 00 10 18 36 23 1a ];
2408945e37eSKevin Cernekee			compatible = "brcm,genet-v1";
2418945e37eSKevin Cernekee			#address-cells = <0x1>;
2428945e37eSKevin Cernekee			#size-cells = <0x1>;
2438945e37eSKevin Cernekee			reg = <0x468000 0x3c8c>;
2448945e37eSKevin Cernekee			interrupts = <69>, <79>;
2458945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
2468945e37eSKevin Cernekee			status = "disabled";
2478945e37eSKevin Cernekee
2488945e37eSKevin Cernekee			mdio@e14 {
2498945e37eSKevin Cernekee				compatible = "brcm,genet-mdio-v1";
2508945e37eSKevin Cernekee				#address-cells = <0x1>;
2518945e37eSKevin Cernekee				#size-cells = <0x0>;
2528945e37eSKevin Cernekee				reg = <0xe14 0x8>;
2538945e37eSKevin Cernekee
2548945e37eSKevin Cernekee				phy1: ethernet-phy@1 {
2558945e37eSKevin Cernekee					max-speed = <100>;
2568945e37eSKevin Cernekee					reg = <0x1>;
2578945e37eSKevin Cernekee					compatible = "brcm,65nm-ephy",
2588945e37eSKevin Cernekee						"ethernet-phy-ieee802.3-c22";
2598945e37eSKevin Cernekee				};
2608945e37eSKevin Cernekee			};
2618945e37eSKevin Cernekee		};
2628945e37eSKevin Cernekee
2638945e37eSKevin Cernekee		ehci0: usb@488300 {
2648945e37eSKevin Cernekee			compatible = "brcm,bcm7420-ehci", "generic-ehci";
2658945e37eSKevin Cernekee			reg = <0x488300 0x100>;
2668945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
2678945e37eSKevin Cernekee			interrupts = <60>;
2688945e37eSKevin Cernekee			status = "disabled";
2698945e37eSKevin Cernekee		};
2708945e37eSKevin Cernekee
2718945e37eSKevin Cernekee		ohci0: usb@488400 {
2728945e37eSKevin Cernekee			compatible = "brcm,bcm7420-ohci", "generic-ohci";
2738945e37eSKevin Cernekee			reg = <0x488400 0x100>;
2748945e37eSKevin Cernekee			native-endian;
2758945e37eSKevin Cernekee			no-big-frame-no;
2768945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
2778945e37eSKevin Cernekee			interrupts = <61>;
2788945e37eSKevin Cernekee			status = "disabled";
2798945e37eSKevin Cernekee		};
2808945e37eSKevin Cernekee
2818945e37eSKevin Cernekee		ehci1: usb@488500 {
2828945e37eSKevin Cernekee			compatible = "brcm,bcm7420-ehci", "generic-ehci";
2838945e37eSKevin Cernekee			reg = <0x488500 0x100>;
2848945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
2858945e37eSKevin Cernekee			interrupts = <55>;
2868945e37eSKevin Cernekee			status = "disabled";
2878945e37eSKevin Cernekee		};
2888945e37eSKevin Cernekee
2898945e37eSKevin Cernekee		ohci1: usb@488600 {
2908945e37eSKevin Cernekee			compatible = "brcm,bcm7420-ohci", "generic-ohci";
2918945e37eSKevin Cernekee			reg = <0x488600 0x100>;
2928945e37eSKevin Cernekee			native-endian;
2938945e37eSKevin Cernekee			no-big-frame-no;
2948945e37eSKevin Cernekee			interrupt-parent = <&periph_intc>;
2958945e37eSKevin Cernekee			interrupts = <62>;
2968945e37eSKevin Cernekee			status = "disabled";
2978945e37eSKevin Cernekee		};
298d783738cSJaedon Shin
299d783738cSJaedon Shin		spi_l2_intc: interrupt-controller@411d00 {
300d783738cSJaedon Shin			compatible = "brcm,l2-intc";
301d783738cSJaedon Shin			reg = <0x411d00 0x30>;
302d783738cSJaedon Shin			interrupt-controller;
303d783738cSJaedon Shin			#interrupt-cells = <1>;
304d783738cSJaedon Shin			interrupt-parent = <&periph_intc>;
305d783738cSJaedon Shin			interrupts = <78>;
306d783738cSJaedon Shin		};
307d783738cSJaedon Shin
308d783738cSJaedon Shin		qspi: spi@443000 {
309d783738cSJaedon Shin			#address-cells = <0x1>;
310d783738cSJaedon Shin			#size-cells = <0x0>;
311d783738cSJaedon Shin			compatible = "brcm,spi-bcm-qspi",
312d783738cSJaedon Shin				     "brcm,spi-brcmstb-qspi";
313d783738cSJaedon Shin			clocks = <&upg_clk>;
314d783738cSJaedon Shin			reg = <0x440920 0x4 0x443200 0x188 0x443000 0x50>;
315d783738cSJaedon Shin			reg-names = "cs_reg", "hif_mspi", "bspi";
316d783738cSJaedon Shin			interrupts = <0x0 0x1 0x2 0x3 0x4 0x5 0x6>;
317d783738cSJaedon Shin			interrupt-parent = <&spi_l2_intc>;
318d783738cSJaedon Shin			interrupt-names = "spi_lr_fullness_reached",
319d783738cSJaedon Shin					  "spi_lr_session_aborted",
320d783738cSJaedon Shin					  "spi_lr_impatient",
321d783738cSJaedon Shin					  "spi_lr_session_done",
322d783738cSJaedon Shin					  "spi_lr_overread",
323d783738cSJaedon Shin					  "mspi_done",
324d783738cSJaedon Shin					  "mspi_halted";
325d783738cSJaedon Shin			status = "disabled";
326d783738cSJaedon Shin		};
327d783738cSJaedon Shin
328d783738cSJaedon Shin		mspi: spi@406400 {
329d783738cSJaedon Shin			#address-cells = <1>;
330d783738cSJaedon Shin			#size-cells = <0>;
331d783738cSJaedon Shin			compatible = "brcm,spi-bcm-qspi",
332d783738cSJaedon Shin				     "brcm,spi-brcmstb-mspi";
333d783738cSJaedon Shin			clocks = <&upg_clk>;
334d783738cSJaedon Shin			reg = <0x406400 0x180>;
335d783738cSJaedon Shin			reg-names = "mspi";
336d783738cSJaedon Shin			interrupts = <0x14>;
337d783738cSJaedon Shin			interrupt-parent = <&upg_irq0_intc>;
338d783738cSJaedon Shin			interrupt-names = "mspi_done";
339d783738cSJaedon Shin			status = "disabled";
340d783738cSJaedon Shin		};
3418945e37eSKevin Cernekee	};
3428945e37eSKevin Cernekee};
343