1724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0-only
2724ba675SRob Herring// Copyright (C) 2014 Broadcom Corporation
3724ba675SRob Herring
4724ba675SRob Herring#include <dt-bindings/clock/bcm21664.h>
5724ba675SRob Herring#include <dt-bindings/interrupt-controller/arm-gic.h>
6724ba675SRob Herring#include <dt-bindings/interrupt-controller/irq.h>
7724ba675SRob Herring
8724ba675SRob Herring/ {
9724ba675SRob Herring	#address-cells = <1>;
10724ba675SRob Herring	#size-cells = <1>;
11724ba675SRob Herring	model = "BCM21664 SoC";
12724ba675SRob Herring	compatible = "brcm,bcm21664";
13724ba675SRob Herring	interrupt-parent = <&gic>;
14724ba675SRob Herring
15724ba675SRob Herring	chosen {
16724ba675SRob Herring		bootargs = "console=ttyS0,115200n8";
17724ba675SRob Herring	};
18724ba675SRob Herring
19724ba675SRob Herring	cpus {
20724ba675SRob Herring		#address-cells = <1>;
21724ba675SRob Herring		#size-cells = <0>;
22724ba675SRob Herring
23724ba675SRob Herring		cpu0: cpu@0 {
24724ba675SRob Herring			device_type = "cpu";
25724ba675SRob Herring			compatible = "arm,cortex-a9";
26724ba675SRob Herring			reg = <0>;
27724ba675SRob Herring		};
28724ba675SRob Herring
29724ba675SRob Herring		cpu1: cpu@1 {
30724ba675SRob Herring			device_type = "cpu";
31724ba675SRob Herring			compatible = "arm,cortex-a9";
32724ba675SRob Herring			enable-method = "brcm,bcm11351-cpu-method";
33724ba675SRob Herring			secondary-boot-reg = <0x35004178>;
34724ba675SRob Herring			reg = <1>;
35724ba675SRob Herring		};
36724ba675SRob Herring	};
37724ba675SRob Herring
38724ba675SRob Herring	gic: interrupt-controller@3ff00100 {
39724ba675SRob Herring		compatible = "arm,cortex-a9-gic";
40724ba675SRob Herring		#interrupt-cells = <3>;
41724ba675SRob Herring		#address-cells = <0>;
42724ba675SRob Herring		interrupt-controller;
43724ba675SRob Herring		reg = <0x3ff01000 0x1000>,
44724ba675SRob Herring		      <0x3ff00100 0x100>;
45724ba675SRob Herring	};
46724ba675SRob Herring
47724ba675SRob Herring	smc@3404e000 {
48724ba675SRob Herring		compatible = "brcm,bcm21664-smc", "brcm,kona-smc";
49724ba675SRob Herring		reg = <0x3404e000 0x400>; /* 1 KiB in SRAM */
50724ba675SRob Herring	};
51724ba675SRob Herring
52724ba675SRob Herring	uartb: serial@3e000000 {
53724ba675SRob Herring		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
54724ba675SRob Herring		reg = <0x3e000000 0x118>;
55724ba675SRob Herring		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>;
56724ba675SRob Herring		interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
57724ba675SRob Herring		reg-shift = <2>;
58724ba675SRob Herring		reg-io-width = <4>;
59724ba675SRob Herring		status = "disabled";
60724ba675SRob Herring	};
61724ba675SRob Herring
62724ba675SRob Herring	uartb2: serial@3e001000 {
63724ba675SRob Herring		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
64724ba675SRob Herring		reg = <0x3e001000 0x118>;
65724ba675SRob Herring		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>;
66724ba675SRob Herring		interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
67724ba675SRob Herring		reg-shift = <2>;
68724ba675SRob Herring		reg-io-width = <4>;
69724ba675SRob Herring		status = "disabled";
70724ba675SRob Herring	};
71724ba675SRob Herring
72724ba675SRob Herring	uartb3: serial@3e002000 {
73724ba675SRob Herring		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
74724ba675SRob Herring		reg = <0x3e002000 0x118>;
75724ba675SRob Herring		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>;
76724ba675SRob Herring		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
77724ba675SRob Herring		reg-shift = <2>;
78724ba675SRob Herring		reg-io-width = <4>;
79724ba675SRob Herring		status = "disabled";
80724ba675SRob Herring	};
81724ba675SRob Herring
82724ba675SRob Herring	L2: cache-controller@3ff20000 {
83724ba675SRob Herring		compatible = "arm,pl310-cache";
84724ba675SRob Herring		reg = <0x3ff20000 0x1000>;
85724ba675SRob Herring		cache-unified;
86724ba675SRob Herring		cache-level = <2>;
87724ba675SRob Herring	};
88724ba675SRob Herring
89724ba675SRob Herring	brcm,resetmgr@35001f00 {
90724ba675SRob Herring		compatible = "brcm,bcm21664-resetmgr";
91724ba675SRob Herring		reg = <0x35001f00 0x24>;
92724ba675SRob Herring	};
93724ba675SRob Herring
94724ba675SRob Herring	timer@35006000 {
95724ba675SRob Herring		compatible = "brcm,kona-timer";
96724ba675SRob Herring		reg = <0x35006000 0x1c>;
97724ba675SRob Herring		interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
98724ba675SRob Herring		clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>;
99724ba675SRob Herring	};
100724ba675SRob Herring
101724ba675SRob Herring	gpio: gpio@35003000 {
102724ba675SRob Herring		compatible = "brcm,bcm21664-gpio", "brcm,kona-gpio";
103724ba675SRob Herring		reg = <0x35003000 0x524>;
104*753a1baaSKrzysztof Kozlowski		interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
105*753a1baaSKrzysztof Kozlowski			     <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
106*753a1baaSKrzysztof Kozlowski			     <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
107*753a1baaSKrzysztof Kozlowski			     <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
108724ba675SRob Herring		#gpio-cells = <2>;
109724ba675SRob Herring		#interrupt-cells = <2>;
110724ba675SRob Herring		gpio-controller;
111724ba675SRob Herring		interrupt-controller;
112724ba675SRob Herring	};
113724ba675SRob Herring
114724ba675SRob Herring	sdio1: mmc@3f180000 {
115724ba675SRob Herring		compatible = "brcm,kona-sdhci";
116724ba675SRob Herring		reg = <0x3f180000 0x801c>;
117724ba675SRob Herring		interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
118724ba675SRob Herring		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>;
119724ba675SRob Herring		status = "disabled";
120724ba675SRob Herring	};
121724ba675SRob Herring
122724ba675SRob Herring	sdio2: mmc@3f190000 {
123724ba675SRob Herring		compatible = "brcm,kona-sdhci";
124724ba675SRob Herring		reg = <0x3f190000 0x801c>;
125724ba675SRob Herring		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
126724ba675SRob Herring		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>;
127724ba675SRob Herring		status = "disabled";
128724ba675SRob Herring	};
129724ba675SRob Herring
130724ba675SRob Herring	sdio3: mmc@3f1a0000 {
131724ba675SRob Herring		compatible = "brcm,kona-sdhci";
132724ba675SRob Herring		reg = <0x3f1a0000 0x801c>;
133724ba675SRob Herring		interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
134724ba675SRob Herring		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>;
135724ba675SRob Herring		status = "disabled";
136724ba675SRob Herring	};
137724ba675SRob Herring
138724ba675SRob Herring	sdio4: mmc@3f1b0000 {
139724ba675SRob Herring		compatible = "brcm,kona-sdhci";
140724ba675SRob Herring		reg = <0x3f1b0000 0x801c>;
141724ba675SRob Herring		interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
142724ba675SRob Herring		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>;
143724ba675SRob Herring		status = "disabled";
144724ba675SRob Herring	};
145724ba675SRob Herring
146724ba675SRob Herring	bsc1: i2c@3e016000 {
147724ba675SRob Herring		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
148724ba675SRob Herring		reg = <0x3e016000 0x70>;
149724ba675SRob Herring		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
150724ba675SRob Herring		#address-cells = <1>;
151724ba675SRob Herring		#size-cells = <0>;
152724ba675SRob Herring		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>;
153724ba675SRob Herring		status = "disabled";
154724ba675SRob Herring	};
155724ba675SRob Herring
156724ba675SRob Herring	bsc2: i2c@3e017000 {
157724ba675SRob Herring		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
158724ba675SRob Herring		reg = <0x3e017000 0x70>;
159724ba675SRob Herring		interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
160724ba675SRob Herring		#address-cells = <1>;
161724ba675SRob Herring		#size-cells = <0>;
162724ba675SRob Herring		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>;
163724ba675SRob Herring		status = "disabled";
164724ba675SRob Herring	};
165724ba675SRob Herring
166724ba675SRob Herring	bsc3: i2c@3e018000 {
167724ba675SRob Herring		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
168724ba675SRob Herring		reg = <0x3e018000 0x70>;
169724ba675SRob Herring		interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
170724ba675SRob Herring		#address-cells = <1>;
171724ba675SRob Herring		#size-cells = <0>;
172724ba675SRob Herring		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>;
173724ba675SRob Herring		status = "disabled";
174724ba675SRob Herring	};
175724ba675SRob Herring
176724ba675SRob Herring	bsc4: i2c@3e01c000 {
177724ba675SRob Herring		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
178724ba675SRob Herring		reg = <0x3e01c000 0x70>;
179724ba675SRob Herring		interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
180724ba675SRob Herring		#address-cells = <1>;
181724ba675SRob Herring		#size-cells = <0>;
182724ba675SRob Herring		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>;
183724ba675SRob Herring		status = "disabled";
184724ba675SRob Herring	};
185724ba675SRob Herring
186724ba675SRob Herring	clocks {
187724ba675SRob Herring		#address-cells = <1>;
188724ba675SRob Herring		#size-cells = <1>;
189724ba675SRob Herring		ranges;
190724ba675SRob Herring
191724ba675SRob Herring		/*
192724ba675SRob Herring		 * Fixed clocks are defined before CCUs whose
193724ba675SRob Herring		 * clocks may depend on them.
194724ba675SRob Herring		 */
195724ba675SRob Herring
196724ba675SRob Herring		ref_32k_clk: ref_32k {
197724ba675SRob Herring			#clock-cells = <0>;
198724ba675SRob Herring			compatible = "fixed-clock";
199724ba675SRob Herring			clock-frequency = <32768>;
200724ba675SRob Herring		};
201724ba675SRob Herring
202724ba675SRob Herring		bbl_32k_clk: bbl_32k {
203724ba675SRob Herring			#clock-cells = <0>;
204724ba675SRob Herring			compatible = "fixed-clock";
205724ba675SRob Herring			clock-frequency = <32768>;
206724ba675SRob Herring		};
207724ba675SRob Herring
208724ba675SRob Herring		ref_13m_clk: ref_13m {
209724ba675SRob Herring			#clock-cells = <0>;
210724ba675SRob Herring			compatible = "fixed-clock";
211724ba675SRob Herring			clock-frequency = <13000000>;
212724ba675SRob Herring		};
213724ba675SRob Herring
214724ba675SRob Herring		var_13m_clk: var_13m {
215724ba675SRob Herring			#clock-cells = <0>;
216724ba675SRob Herring			compatible = "fixed-clock";
217724ba675SRob Herring			clock-frequency = <13000000>;
218724ba675SRob Herring		};
219724ba675SRob Herring
220724ba675SRob Herring		dft_19_5m_clk: dft_19_5m {
221724ba675SRob Herring			#clock-cells = <0>;
222724ba675SRob Herring			compatible = "fixed-clock";
223724ba675SRob Herring			clock-frequency = <19500000>;
224724ba675SRob Herring		};
225724ba675SRob Herring
226724ba675SRob Herring		ref_crystal_clk: ref_crystal {
227724ba675SRob Herring			#clock-cells = <0>;
228724ba675SRob Herring			compatible = "fixed-clock";
229724ba675SRob Herring			clock-frequency = <26000000>;
230724ba675SRob Herring		};
231724ba675SRob Herring
232724ba675SRob Herring		ref_52m_clk: ref_52m {
233724ba675SRob Herring			#clock-cells = <0>;
234724ba675SRob Herring			compatible = "fixed-clock";
235724ba675SRob Herring			clock-frequency = <52000000>;
236724ba675SRob Herring		};
237724ba675SRob Herring
238724ba675SRob Herring		var_52m_clk: var_52m {
239724ba675SRob Herring			#clock-cells = <0>;
240724ba675SRob Herring			compatible = "fixed-clock";
241724ba675SRob Herring			clock-frequency = <52000000>;
242724ba675SRob Herring		};
243724ba675SRob Herring
244724ba675SRob Herring		usb_otg_ahb_clk: usb_otg_ahb {
245724ba675SRob Herring			#clock-cells = <0>;
246724ba675SRob Herring			compatible = "fixed-clock";
247724ba675SRob Herring			clock-frequency = <52000000>;
248724ba675SRob Herring		};
249724ba675SRob Herring
250724ba675SRob Herring		ref_96m_clk: ref_96m {
251724ba675SRob Herring			#clock-cells = <0>;
252724ba675SRob Herring			compatible = "fixed-clock";
253724ba675SRob Herring			clock-frequency = <96000000>;
254724ba675SRob Herring		};
255724ba675SRob Herring
256724ba675SRob Herring		var_96m_clk: var_96m {
257724ba675SRob Herring			#clock-cells = <0>;
258724ba675SRob Herring			compatible = "fixed-clock";
259724ba675SRob Herring			clock-frequency = <96000000>;
260724ba675SRob Herring		};
261724ba675SRob Herring
262724ba675SRob Herring		ref_104m_clk: ref_104m {
263724ba675SRob Herring			#clock-cells = <0>;
264724ba675SRob Herring			compatible = "fixed-clock";
265724ba675SRob Herring			clock-frequency = <104000000>;
266724ba675SRob Herring		};
267724ba675SRob Herring
268724ba675SRob Herring		var_104m_clk: var_104m {
269724ba675SRob Herring			#clock-cells = <0>;
270724ba675SRob Herring			compatible = "fixed-clock";
271724ba675SRob Herring			clock-frequency = <104000000>;
272724ba675SRob Herring		};
273724ba675SRob Herring
274724ba675SRob Herring		ref_156m_clk: ref_156m {
275724ba675SRob Herring			#clock-cells = <0>;
276724ba675SRob Herring			compatible = "fixed-clock";
277724ba675SRob Herring			clock-frequency = <156000000>;
278724ba675SRob Herring		};
279724ba675SRob Herring
280724ba675SRob Herring		var_156m_clk: var_156m {
281724ba675SRob Herring			#clock-cells = <0>;
282724ba675SRob Herring			compatible = "fixed-clock";
283724ba675SRob Herring			clock-frequency = <156000000>;
284724ba675SRob Herring		};
285724ba675SRob Herring
286724ba675SRob Herring		root_ccu: root_ccu@35001000 {
287724ba675SRob Herring			compatible = "brcm,bcm21664-root-ccu";
288724ba675SRob Herring			reg = <0x35001000 0x0f00>;
289724ba675SRob Herring			#clock-cells = <1>;
290724ba675SRob Herring			clock-output-names = "frac_1m";
291724ba675SRob Herring		};
292724ba675SRob Herring
293724ba675SRob Herring		aon_ccu: aon_ccu@35002000 {
294724ba675SRob Herring			compatible = "brcm,bcm21664-aon-ccu";
295724ba675SRob Herring			reg = <0x35002000 0x0f00>;
296724ba675SRob Herring			#clock-cells = <1>;
297724ba675SRob Herring			clock-output-names = "hub_timer";
298724ba675SRob Herring		};
299724ba675SRob Herring
300724ba675SRob Herring		master_ccu: master_ccu@3f001000 {
301724ba675SRob Herring			compatible = "brcm,bcm21664-master-ccu";
302724ba675SRob Herring			reg = <0x3f001000 0x0f00>;
303724ba675SRob Herring			#clock-cells = <1>;
304724ba675SRob Herring			clock-output-names = "sdio1",
305724ba675SRob Herring					     "sdio2",
306724ba675SRob Herring					     "sdio3",
307724ba675SRob Herring					     "sdio4",
308724ba675SRob Herring					     "sdio1_sleep",
309724ba675SRob Herring					     "sdio2_sleep",
310724ba675SRob Herring					     "sdio3_sleep",
311724ba675SRob Herring					     "sdio4_sleep";
312724ba675SRob Herring		};
313724ba675SRob Herring
314724ba675SRob Herring		slave_ccu: slave_ccu@3e011000 {
315724ba675SRob Herring			compatible = "brcm,bcm21664-slave-ccu";
316724ba675SRob Herring			reg = <0x3e011000 0x0f00>;
317724ba675SRob Herring			#clock-cells = <1>;
318724ba675SRob Herring			clock-output-names = "uartb",
319724ba675SRob Herring					     "uartb2",
320724ba675SRob Herring					     "uartb3",
321724ba675SRob Herring					     "bsc1",
322724ba675SRob Herring					     "bsc2",
323724ba675SRob Herring					     "bsc3",
324724ba675SRob Herring					     "bsc4";
325724ba675SRob Herring		};
326724ba675SRob Herring	};
327724ba675SRob Herring
328724ba675SRob Herring	usbotg: usb@3f120000 {
329724ba675SRob Herring		compatible = "snps,dwc2";
330724ba675SRob Herring		reg = <0x3f120000 0x10000>;
331724ba675SRob Herring		interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
332724ba675SRob Herring		clocks = <&usb_otg_ahb_clk>;
333724ba675SRob Herring		clock-names = "otg";
334724ba675SRob Herring		phys = <&usbphy>;
335724ba675SRob Herring		phy-names = "usb2-phy";
336724ba675SRob Herring		status = "disabled";
337724ba675SRob Herring	};
338724ba675SRob Herring
339724ba675SRob Herring	usbphy: usb-phy@3f130000 {
340724ba675SRob Herring		compatible = "brcm,kona-usb2-phy";
341724ba675SRob Herring		reg = <0x3f130000 0x28>;
342724ba675SRob Herring		#phy-cells = <0>;
343724ba675SRob Herring		status = "disabled";
344724ba675SRob Herring	};
345724ba675SRob Herring};
346