xref: /linux/arch/arm/boot/dts/broadcom/bcm6855.dtsi (revision 115e74a29b530d121891238e9551c4bcdf7b04b5)
166ae6aedSWilliam Zhang// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
266ae6aedSWilliam Zhang/*
366ae6aedSWilliam Zhang * Copyright 2022 Broadcom Ltd.
466ae6aedSWilliam Zhang */
566ae6aedSWilliam Zhang
666ae6aedSWilliam Zhang#include <dt-bindings/interrupt-controller/arm-gic.h>
766ae6aedSWilliam Zhang#include <dt-bindings/interrupt-controller/irq.h>
866ae6aedSWilliam Zhang
966ae6aedSWilliam Zhang/ {
1066ae6aedSWilliam Zhang	compatible = "brcm,bcm6855", "brcm,bcmbca";
1166ae6aedSWilliam Zhang	#address-cells = <1>;
1266ae6aedSWilliam Zhang	#size-cells = <1>;
1366ae6aedSWilliam Zhang
1466ae6aedSWilliam Zhang	interrupt-parent = <&gic>;
1566ae6aedSWilliam Zhang
1666ae6aedSWilliam Zhang	cpus {
1766ae6aedSWilliam Zhang		#address-cells = <1>;
1866ae6aedSWilliam Zhang		#size-cells = <0>;
1966ae6aedSWilliam Zhang
2066ae6aedSWilliam Zhang		CA7_0: cpu@0 {
2166ae6aedSWilliam Zhang			device_type = "cpu";
2266ae6aedSWilliam Zhang			compatible = "arm,cortex-a7";
2366ae6aedSWilliam Zhang			reg = <0x0>;
2466ae6aedSWilliam Zhang			next-level-cache = <&L2_0>;
2566ae6aedSWilliam Zhang			enable-method = "psci";
2666ae6aedSWilliam Zhang		};
2766ae6aedSWilliam Zhang
2866ae6aedSWilliam Zhang		CA7_1: cpu@1 {
2966ae6aedSWilliam Zhang			device_type = "cpu";
3066ae6aedSWilliam Zhang			compatible = "arm,cortex-a7";
3166ae6aedSWilliam Zhang			reg = <0x1>;
3266ae6aedSWilliam Zhang			next-level-cache = <&L2_0>;
3366ae6aedSWilliam Zhang			enable-method = "psci";
3466ae6aedSWilliam Zhang		};
3566ae6aedSWilliam Zhang
3666ae6aedSWilliam Zhang		CA7_2: cpu@2 {
3766ae6aedSWilliam Zhang			device_type = "cpu";
3866ae6aedSWilliam Zhang			compatible = "arm,cortex-a7";
3966ae6aedSWilliam Zhang			reg = <0x2>;
4066ae6aedSWilliam Zhang			next-level-cache = <&L2_0>;
4166ae6aedSWilliam Zhang			enable-method = "psci";
4266ae6aedSWilliam Zhang		};
4366ae6aedSWilliam Zhang
4466ae6aedSWilliam Zhang		L2_0: l2-cache0 {
4566ae6aedSWilliam Zhang			compatible = "cache";
46b2302467SPierre Gondois			cache-level = <2>;
470db4bb04SKrzysztof Kozlowski			cache-unified;
4866ae6aedSWilliam Zhang		};
4966ae6aedSWilliam Zhang	};
5066ae6aedSWilliam Zhang
5166ae6aedSWilliam Zhang	timer {
5266ae6aedSWilliam Zhang		compatible = "arm,armv7-timer";
5366ae6aedSWilliam Zhang		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
5466ae6aedSWilliam Zhang			<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
5566ae6aedSWilliam Zhang			<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
5666ae6aedSWilliam Zhang			<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>;
5766ae6aedSWilliam Zhang		arm,cpu-registers-not-fw-configured;
5866ae6aedSWilliam Zhang	};
5966ae6aedSWilliam Zhang
6066ae6aedSWilliam Zhang	pmu: pmu {
6166ae6aedSWilliam Zhang		compatible = "arm,cortex-a7-pmu";
6266ae6aedSWilliam Zhang		interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
6366ae6aedSWilliam Zhang			<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
6466ae6aedSWilliam Zhang			<GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
6566ae6aedSWilliam Zhang		interrupt-affinity = <&CA7_0>, <&CA7_1>, <&CA7_2>;
6666ae6aedSWilliam Zhang	};
6766ae6aedSWilliam Zhang
6866ae6aedSWilliam Zhang	clocks: clocks {
6966ae6aedSWilliam Zhang		periph_clk: periph-clk {
7066ae6aedSWilliam Zhang			compatible = "fixed-clock";
7166ae6aedSWilliam Zhang			#clock-cells = <0>;
7266ae6aedSWilliam Zhang			clock-frequency = <200000000>;
7366ae6aedSWilliam Zhang		};
7466ae6aedSWilliam Zhang
7566ae6aedSWilliam Zhang		uart_clk: uart-clk {
7666ae6aedSWilliam Zhang			compatible = "fixed-factor-clock";
7766ae6aedSWilliam Zhang			#clock-cells = <0>;
7866ae6aedSWilliam Zhang			clocks = <&periph_clk>;
7966ae6aedSWilliam Zhang			clock-div = <4>;
8066ae6aedSWilliam Zhang			clock-mult = <1>;
8166ae6aedSWilliam Zhang		};
827858ddedSWilliam Zhang
837858ddedSWilliam Zhang		hsspi_pll: hsspi-pll {
847858ddedSWilliam Zhang			compatible = "fixed-clock";
857858ddedSWilliam Zhang			#clock-cells = <0>;
867858ddedSWilliam Zhang			clock-frequency = <200000000>;
877858ddedSWilliam Zhang		};
8866ae6aedSWilliam Zhang	};
8966ae6aedSWilliam Zhang
9066ae6aedSWilliam Zhang	psci {
9166ae6aedSWilliam Zhang		compatible = "arm,psci-0.2";
9266ae6aedSWilliam Zhang		method = "smc";
9366ae6aedSWilliam Zhang	};
9466ae6aedSWilliam Zhang
9566ae6aedSWilliam Zhang	axi@81000000 {
9666ae6aedSWilliam Zhang		compatible = "simple-bus";
9766ae6aedSWilliam Zhang		#address-cells = <1>;
9866ae6aedSWilliam Zhang		#size-cells = <1>;
9966ae6aedSWilliam Zhang		ranges = <0 0x81000000 0x8000>;
10066ae6aedSWilliam Zhang
10166ae6aedSWilliam Zhang		gic: interrupt-controller@1000 {
10266ae6aedSWilliam Zhang			compatible = "arm,cortex-a7-gic";
10366ae6aedSWilliam Zhang			#interrupt-cells = <3>;
10466ae6aedSWilliam Zhang			interrupt-controller;
10566ae6aedSWilliam Zhang			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>;
10666ae6aedSWilliam Zhang			reg = <0x1000 0x1000>,
10766ae6aedSWilliam Zhang				<0x2000 0x2000>,
10866ae6aedSWilliam Zhang				<0x4000 0x2000>,
10966ae6aedSWilliam Zhang				<0x6000 0x2000>;
11066ae6aedSWilliam Zhang		};
11166ae6aedSWilliam Zhang	};
11266ae6aedSWilliam Zhang
11366ae6aedSWilliam Zhang	bus@ff800000 {
11466ae6aedSWilliam Zhang		compatible = "simple-bus";
11566ae6aedSWilliam Zhang		#address-cells = <1>;
11666ae6aedSWilliam Zhang		#size-cells = <1>;
11766ae6aedSWilliam Zhang		ranges = <0 0xff800000 0x800000>;
11866ae6aedSWilliam Zhang
119*e8a74a2aSLinus Walleij		watchdog@480 {
120*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-wdt";
121*e8a74a2aSLinus Walleij			reg = <0x480 0x10>;
122*e8a74a2aSLinus Walleij		};
123*e8a74a2aSLinus Walleij
124*e8a74a2aSLinus Walleij		watchdog@4c0 {
125*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-wdt";
126*e8a74a2aSLinus Walleij			reg = <0x4c0 0x10>;
127*e8a74a2aSLinus Walleij			status = "disabled";
128*e8a74a2aSLinus Walleij		};
129*e8a74a2aSLinus Walleij
130*e8a74a2aSLinus Walleij		/* GPIOs 0 .. 31 */
131*e8a74a2aSLinus Walleij		gpio0: gpio@500 {
132*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
133*e8a74a2aSLinus Walleij			reg = <0x500 0x04>, <0x520 0x04>;
134*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
135*e8a74a2aSLinus Walleij			gpio-controller;
136*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
137*e8a74a2aSLinus Walleij			status = "disabled";
138*e8a74a2aSLinus Walleij		};
139*e8a74a2aSLinus Walleij
140*e8a74a2aSLinus Walleij		/* GPIOs 32 .. 63 */
141*e8a74a2aSLinus Walleij		gpio1: gpio@504 {
142*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
143*e8a74a2aSLinus Walleij			reg = <0x504 0x04>, <0x524 0x04>;
144*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
145*e8a74a2aSLinus Walleij			gpio-controller;
146*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
147*e8a74a2aSLinus Walleij			status = "disabled";
148*e8a74a2aSLinus Walleij		};
149*e8a74a2aSLinus Walleij
150*e8a74a2aSLinus Walleij		/* GPIOs 64 .. 95 */
151*e8a74a2aSLinus Walleij		gpio2: gpio@508 {
152*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
153*e8a74a2aSLinus Walleij			reg = <0x508 0x04>, <0x528 0x04>;
154*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
155*e8a74a2aSLinus Walleij			gpio-controller;
156*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
157*e8a74a2aSLinus Walleij			status = "disabled";
158*e8a74a2aSLinus Walleij		};
159*e8a74a2aSLinus Walleij
160*e8a74a2aSLinus Walleij		/* GPIOs 96 .. 127 */
161*e8a74a2aSLinus Walleij		gpio3: gpio@50c {
162*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
163*e8a74a2aSLinus Walleij			reg = <0x50c 0x04>, <0x52c 0x04>;
164*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
165*e8a74a2aSLinus Walleij			gpio-controller;
166*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
167*e8a74a2aSLinus Walleij			status = "disabled";
168*e8a74a2aSLinus Walleij		};
169*e8a74a2aSLinus Walleij
170*e8a74a2aSLinus Walleij		/* GPIOs 128 .. 159 */
171*e8a74a2aSLinus Walleij		gpio4: gpio@510 {
172*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
173*e8a74a2aSLinus Walleij			reg = <0x510 0x04>, <0x530 0x04>;
174*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
175*e8a74a2aSLinus Walleij			gpio-controller;
176*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
177*e8a74a2aSLinus Walleij			status = "disabled";
178*e8a74a2aSLinus Walleij		};
179*e8a74a2aSLinus Walleij
180*e8a74a2aSLinus Walleij		/* GPIOs 160 .. 191 */
181*e8a74a2aSLinus Walleij		gpio5: gpio@514 {
182*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
183*e8a74a2aSLinus Walleij			reg = <0x514 0x04>, <0x534 0x04>;
184*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
185*e8a74a2aSLinus Walleij			gpio-controller;
186*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
187*e8a74a2aSLinus Walleij			status = "disabled";
188*e8a74a2aSLinus Walleij		};
189*e8a74a2aSLinus Walleij
190*e8a74a2aSLinus Walleij		/* GPIOs 192 .. 223 */
191*e8a74a2aSLinus Walleij		gpio6: gpio@518 {
192*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
193*e8a74a2aSLinus Walleij			reg = <0x518 0x04>, <0x538 0x04>;
194*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
195*e8a74a2aSLinus Walleij			gpio-controller;
196*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
197*e8a74a2aSLinus Walleij			status = "disabled";
198*e8a74a2aSLinus Walleij		};
199*e8a74a2aSLinus Walleij
200*e8a74a2aSLinus Walleij		/* GPIOs 224 .. 255 */
201*e8a74a2aSLinus Walleij		gpio7: gpio@51c {
202*e8a74a2aSLinus Walleij			compatible = "brcm,bcm6345-gpio";
203*e8a74a2aSLinus Walleij			reg = <0x51c 0x04>, <0x53c 0x04>;
204*e8a74a2aSLinus Walleij			reg-names = "dirout", "dat";
205*e8a74a2aSLinus Walleij			gpio-controller;
206*e8a74a2aSLinus Walleij			#gpio-cells = <2>;
207*e8a74a2aSLinus Walleij			status = "disabled";
208*e8a74a2aSLinus Walleij		};
209*e8a74a2aSLinus Walleij
210*e8a74a2aSLinus Walleij		rng@b80 {
211*e8a74a2aSLinus Walleij			compatible = "brcm,iproc-rng200";
212*e8a74a2aSLinus Walleij			reg = <0xb80 0x28>;
213*e8a74a2aSLinus Walleij			interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
214*e8a74a2aSLinus Walleij		};
215*e8a74a2aSLinus Walleij
2167858ddedSWilliam Zhang		hsspi: spi@1000 {
2177858ddedSWilliam Zhang			#address-cells = <1>;
2187858ddedSWilliam Zhang			#size-cells = <0>;
2197858ddedSWilliam Zhang			compatible = "brcm,bcm6855-hsspi", "brcm,bcmbca-hsspi-v1.1";
2207858ddedSWilliam Zhang			reg = <0x1000 0x600>, <0x2610 0x4>;
2217858ddedSWilliam Zhang			reg-names = "hsspi", "spim-ctrl";
2227858ddedSWilliam Zhang			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
2237858ddedSWilliam Zhang			clocks = <&hsspi_pll &hsspi_pll>;
2247858ddedSWilliam Zhang			clock-names = "hsspi", "pll";
2257858ddedSWilliam Zhang			num-cs = <8>;
2267858ddedSWilliam Zhang			status = "disabled";
2277858ddedSWilliam Zhang		};
2287858ddedSWilliam Zhang
229d42d8e82SWilliam Zhang		nand_controller: nand-controller@1800 {
230d42d8e82SWilliam Zhang			#address-cells = <1>;
231d42d8e82SWilliam Zhang			#size-cells = <0>;
232d42d8e82SWilliam Zhang			compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.1", "brcm,brcmnand";
233d42d8e82SWilliam Zhang			reg = <0x1800 0x600>, <0x2000 0x10>;
234d42d8e82SWilliam Zhang			reg-names = "nand", "nand-int-base";
235d42d8e82SWilliam Zhang			status = "disabled";
236d42d8e82SWilliam Zhang
237d42d8e82SWilliam Zhang			nandcs: nand@0 {
238d42d8e82SWilliam Zhang				compatible = "brcm,nandcs";
239d42d8e82SWilliam Zhang				reg = <0>;
240d42d8e82SWilliam Zhang			};
241d42d8e82SWilliam Zhang		};
242d42d8e82SWilliam Zhang
243*e8a74a2aSLinus Walleij		leds: led-controller@3000 {
244*e8a74a2aSLinus Walleij			#address-cells = <1>;
245*e8a74a2aSLinus Walleij			#size-cells = <0>;
246*e8a74a2aSLinus Walleij			compatible = "brcm,bcm63138-leds";
247*e8a74a2aSLinus Walleij			reg = <0x3000 0xdc>;
248*e8a74a2aSLinus Walleij			status = "disabled";
249*e8a74a2aSLinus Walleij		};
250*e8a74a2aSLinus Walleij
251*e8a74a2aSLinus Walleij		pl081_dma: dma-controller@11000 {
252*e8a74a2aSLinus Walleij			compatible = "arm,pl081", "arm,primecell";
253*e8a74a2aSLinus Walleij			// The magic B105F00D info is missing
254*e8a74a2aSLinus Walleij			arm,primecell-periphid = <0x00041081>;
255*e8a74a2aSLinus Walleij			reg = <0x11000 0x1000>;
256*e8a74a2aSLinus Walleij			interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
257*e8a74a2aSLinus Walleij			memcpy-burst-size = <256>;
258*e8a74a2aSLinus Walleij			memcpy-bus-width = <32>;
259*e8a74a2aSLinus Walleij			clocks = <&periph_clk>;
260*e8a74a2aSLinus Walleij			clock-names = "apb_pclk";
261*e8a74a2aSLinus Walleij			#dma-cells = <2>;
262*e8a74a2aSLinus Walleij		};
263*e8a74a2aSLinus Walleij
26466ae6aedSWilliam Zhang		uart0: serial@12000 {
26566ae6aedSWilliam Zhang			compatible = "arm,pl011", "arm,primecell";
26666ae6aedSWilliam Zhang			reg = <0x12000 0x1000>;
26766ae6aedSWilliam Zhang			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
26866ae6aedSWilliam Zhang			clocks = <&uart_clk>, <&uart_clk>;
26966ae6aedSWilliam Zhang			clock-names = "uartclk", "apb_pclk";
27066ae6aedSWilliam Zhang			status = "disabled";
27166ae6aedSWilliam Zhang		};
272*e8a74a2aSLinus Walleij
273*e8a74a2aSLinus Walleij		uart1: serial@13000 {
274*e8a74a2aSLinus Walleij			compatible = "arm,pl011", "arm,primecell";
275*e8a74a2aSLinus Walleij			reg = <0x13000 0x1000>;
276*e8a74a2aSLinus Walleij			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
277*e8a74a2aSLinus Walleij			clocks = <&uart_clk>, <&uart_clk>;
278*e8a74a2aSLinus Walleij			clock-names = "uartclk", "apb_pclk";
279*e8a74a2aSLinus Walleij			status = "disabled";
280*e8a74a2aSLinus Walleij		};
28166ae6aedSWilliam Zhang	};
28266ae6aedSWilliam Zhang};
283