1/*
2 * Copyright (C) 2014 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation version 2.
7 *
8 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9 * kind, whether express or implied; without even the implied warranty
10 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 * GNU General Public License for more details.
12 */
13
14#include <dt-bindings/interrupt-controller/arm-gic.h>
15#include <dt-bindings/interrupt-controller/irq.h>
16
17#include "dt-bindings/clock/bcm21664.h"
18
19/ {
20	#address-cells = <1>;
21	#size-cells = <1>;
22	model = "BCM21664 SoC";
23	compatible = "brcm,bcm21664";
24	interrupt-parent = <&gic>;
25
26	chosen {
27		bootargs = "console=ttyS0,115200n8";
28	};
29
30	cpus {
31		#address-cells = <1>;
32		#size-cells = <0>;
33
34		cpu0: cpu@0 {
35			device_type = "cpu";
36			compatible = "arm,cortex-a9";
37			reg = <0>;
38		};
39
40		cpu1: cpu@1 {
41			device_type = "cpu";
42			compatible = "arm,cortex-a9";
43			enable-method = "brcm,bcm11351-cpu-method";
44			secondary-boot-reg = <0x35004178>;
45			reg = <1>;
46		};
47	};
48
49	gic: interrupt-controller@3ff00100 {
50		compatible = "arm,cortex-a9-gic";
51		#interrupt-cells = <3>;
52		#address-cells = <0>;
53		interrupt-controller;
54		reg = <0x3ff01000 0x1000>,
55		      <0x3ff00100 0x100>;
56	};
57
58	smc@3404e000 {
59		compatible = "brcm,bcm21664-smc", "brcm,kona-smc";
60		reg = <0x3404e000 0x400>; /* 1 KiB in SRAM */
61	};
62
63	uart@3e000000 {
64		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
65		status = "disabled";
66		reg = <0x3e000000 0x118>;
67		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>;
68		interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
69		reg-shift = <2>;
70		reg-io-width = <4>;
71	};
72
73	uart@3e001000 {
74		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
75		status = "disabled";
76		reg = <0x3e001000 0x118>;
77		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>;
78		interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
79		reg-shift = <2>;
80		reg-io-width = <4>;
81	};
82
83	uart@3e002000 {
84		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
85		status = "disabled";
86		reg = <0x3e002000 0x118>;
87		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>;
88		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
89		reg-shift = <2>;
90		reg-io-width = <4>;
91	};
92
93	L2: cache-controller@3ff20000 {
94		compatible = "arm,pl310-cache";
95		reg = <0x3ff20000 0x1000>;
96		cache-unified;
97		cache-level = <2>;
98	};
99
100	brcm,resetmgr@35001f00 {
101		compatible = "brcm,bcm21664-resetmgr";
102		reg = <0x35001f00 0x24>;
103	};
104
105	timer@35006000 {
106		compatible = "brcm,kona-timer";
107		reg = <0x35006000 0x1c>;
108		interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
109		clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>;
110	};
111
112	gpio: gpio@35003000 {
113		compatible = "brcm,bcm21664-gpio", "brcm,kona-gpio";
114		reg = <0x35003000 0x524>;
115		interrupts =
116		       <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH
117			GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH
118			GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH
119			GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
120		#gpio-cells = <2>;
121		#interrupt-cells = <2>;
122		gpio-controller;
123		interrupt-controller;
124	};
125
126	sdio1: sdio@3f180000 {
127		compatible = "brcm,kona-sdhci";
128		reg = <0x3f180000 0x801c>;
129		interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
130		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>;
131		status = "disabled";
132	};
133
134	sdio2: sdio@3f190000 {
135		compatible = "brcm,kona-sdhci";
136		reg = <0x3f190000 0x801c>;
137		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
138		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>;
139		status = "disabled";
140	};
141
142	sdio3: sdio@3f1a0000 {
143		compatible = "brcm,kona-sdhci";
144		reg = <0x3f1a0000 0x801c>;
145		interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
146		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>;
147		status = "disabled";
148	};
149
150	sdio4: sdio@3f1b0000 {
151		compatible = "brcm,kona-sdhci";
152		reg = <0x3f1b0000 0x801c>;
153		interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
154		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>;
155		status = "disabled";
156	};
157
158	i2c@3e016000 {
159		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
160		reg = <0x3e016000 0x70>;
161		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
162		#address-cells = <1>;
163		#size-cells = <0>;
164		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>;
165		status = "disabled";
166	};
167
168	i2c@3e017000 {
169		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
170		reg = <0x3e017000 0x70>;
171		interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
172		#address-cells = <1>;
173		#size-cells = <0>;
174		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>;
175		status = "disabled";
176	};
177
178	i2c@3e018000 {
179		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
180		reg = <0x3e018000 0x70>;
181		interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
182		#address-cells = <1>;
183		#size-cells = <0>;
184		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>;
185		status = "disabled";
186	};
187
188	i2c@3e01c000 {
189		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
190		reg = <0x3e01c000 0x70>;
191		interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
192		#address-cells = <1>;
193		#size-cells = <0>;
194		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>;
195		status = "disabled";
196	};
197
198	clocks {
199		#address-cells = <1>;
200		#size-cells = <1>;
201		ranges;
202
203		/*
204		 * Fixed clocks are defined before CCUs whose
205		 * clocks may depend on them.
206		 */
207
208		ref_32k_clk: ref_32k {
209			#clock-cells = <0>;
210			compatible = "fixed-clock";
211			clock-frequency = <32768>;
212		};
213
214		bbl_32k_clk: bbl_32k {
215			#clock-cells = <0>;
216			compatible = "fixed-clock";
217			clock-frequency = <32768>;
218		};
219
220		ref_13m_clk: ref_13m {
221			#clock-cells = <0>;
222			compatible = "fixed-clock";
223			clock-frequency = <13000000>;
224		};
225
226		var_13m_clk: var_13m {
227			#clock-cells = <0>;
228			compatible = "fixed-clock";
229			clock-frequency = <13000000>;
230		};
231
232		dft_19_5m_clk: dft_19_5m {
233			#clock-cells = <0>;
234			compatible = "fixed-clock";
235			clock-frequency = <19500000>;
236		};
237
238		ref_crystal_clk: ref_crystal {
239			#clock-cells = <0>;
240			compatible = "fixed-clock";
241			clock-frequency = <26000000>;
242		};
243
244		ref_52m_clk: ref_52m {
245			#clock-cells = <0>;
246			compatible = "fixed-clock";
247			clock-frequency = <52000000>;
248		};
249
250		var_52m_clk: var_52m {
251			#clock-cells = <0>;
252			compatible = "fixed-clock";
253			clock-frequency = <52000000>;
254		};
255
256		usb_otg_ahb_clk: usb_otg_ahb {
257			#clock-cells = <0>;
258			compatible = "fixed-clock";
259			clock-frequency = <52000000>;
260		};
261
262		ref_96m_clk: ref_96m {
263			#clock-cells = <0>;
264			compatible = "fixed-clock";
265			clock-frequency = <96000000>;
266		};
267
268		var_96m_clk: var_96m {
269			#clock-cells = <0>;
270			compatible = "fixed-clock";
271			clock-frequency = <96000000>;
272		};
273
274		ref_104m_clk: ref_104m {
275			#clock-cells = <0>;
276			compatible = "fixed-clock";
277			clock-frequency = <104000000>;
278		};
279
280		var_104m_clk: var_104m {
281			#clock-cells = <0>;
282			compatible = "fixed-clock";
283			clock-frequency = <104000000>;
284		};
285
286		ref_156m_clk: ref_156m {
287			#clock-cells = <0>;
288			compatible = "fixed-clock";
289			clock-frequency = <156000000>;
290		};
291
292		var_156m_clk: var_156m {
293			#clock-cells = <0>;
294			compatible = "fixed-clock";
295			clock-frequency = <156000000>;
296		};
297
298		root_ccu: root_ccu@35001000 {
299			compatible = BCM21664_DT_ROOT_CCU_COMPAT;
300			reg = <0x35001000 0x0f00>;
301			#clock-cells = <1>;
302			clock-output-names = "frac_1m";
303		};
304
305		aon_ccu: aon_ccu@35002000 {
306			compatible = BCM21664_DT_AON_CCU_COMPAT;
307			reg = <0x35002000 0x0f00>;
308			#clock-cells = <1>;
309			clock-output-names = "hub_timer";
310		};
311
312		master_ccu: master_ccu@3f001000 {
313			compatible = BCM21664_DT_MASTER_CCU_COMPAT;
314			reg = <0x3f001000 0x0f00>;
315			#clock-cells = <1>;
316			clock-output-names = "sdio1",
317					     "sdio2",
318					     "sdio3",
319					     "sdio4",
320					     "sdio1_sleep",
321					     "sdio2_sleep",
322					     "sdio3_sleep",
323					     "sdio4_sleep";
324		};
325
326		slave_ccu: slave_ccu@3e011000 {
327			compatible = BCM21664_DT_SLAVE_CCU_COMPAT;
328			reg = <0x3e011000 0x0f00>;
329			#clock-cells = <1>;
330			clock-output-names = "uartb",
331					     "uartb2",
332					     "uartb3",
333					     "bsc1",
334					     "bsc2",
335					     "bsc3",
336					     "bsc4";
337		};
338	};
339
340	usbotg: usb@3f120000 {
341		compatible = "snps,dwc2";
342		reg = <0x3f120000 0x10000>;
343		interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
344		clocks = <&usb_otg_ahb_clk>;
345		clock-names = "otg";
346		phys = <&usbphy>;
347		phy-names = "usb2-phy";
348		status = "disabled";
349	};
350
351	usbphy: usb-phy@3f130000 {
352		compatible = "brcm,kona-usb2-phy";
353		reg = <0x3f130000 0x28>;
354		#phy-cells = <0>;
355		status = "disabled";
356	};
357};
358