blob: 2016b72a8fb78e47610bc759d614a924d113e606 [file] [log] [blame]
Markus Mayer2eba9052014-03-06 17:18:14 +08001/*
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
Alex Elder8d90c5a2014-04-21 16:26:27 -050017#include "dt-bindings/clock/bcm21664.h"
18
Markus Mayer2eba9052014-03-06 17:18:14 +080019#include "skeleton.dtsi"
20
21/ {
22 model = "BCM21664 SoC";
23 compatible = "brcm,bcm21664";
24 interrupt-parent = <&gic>;
25
26 chosen {
27 bootargs = "console=ttyS0,115200n8";
28 };
29
Alex Elder1d3138b2014-06-30 17:15:40 -050030 cpus {
31 #address-cells = <1>;
32 #size-cells = <0>;
33 enable-method = "brcm,bcm11351-cpu-method";
34 secondary-boot-reg = <0x35004178>;
35
36 cpu0: cpu@0 {
37 device_type = "cpu";
38 compatible = "arm,cortex-a9";
39 reg = <0>;
40 };
41
42 cpu1: cpu@1 {
43 device_type = "cpu";
44 compatible = "arm,cortex-a9";
45 reg = <1>;
46 };
47 };
48
Markus Mayer2eba9052014-03-06 17:18:14 +080049 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@0x3404e000 {
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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -050067 clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>;
Markus Mayer2eba9052014-03-06 17:18:14 +080068 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -050077 clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>;
Markus Mayer2eba9052014-03-06 17:18:14 +080078 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -050087 clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>;
Markus Mayer2eba9052014-03-06 17:18:14 +080088 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
89 reg-shift = <2>;
90 reg-io-width = <4>;
91 };
92
93 L2: l2-cache {
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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500109 clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800110 };
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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500130 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800131 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500138 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800139 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500146 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800147 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500154 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800155 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500164 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800165 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500174 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800175 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500184 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800185 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>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500194 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800195 status = "disabled";
196 };
197
198 clocks {
Alex Elder8d90c5a2014-04-21 16:26:27 -0500199 #address-cells = <1>;
200 #size-cells = <1>;
201 ranges;
Markus Mayer2eba9052014-03-06 17:18:14 +0800202
Alex Elder8d90c5a2014-04-21 16:26:27 -0500203 /*
204 * Fixed clocks are defined before CCUs whose
205 * clocks may depend on them.
206 */
Markus Mayer2eba9052014-03-06 17:18:14 +0800207
Alex Elder8d90c5a2014-04-21 16:26:27 -0500208 ref_32k_clk: ref_32k {
Markus Mayer2eba9052014-03-06 17:18:14 +0800209 #clock-cells = <0>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800210 compatible = "fixed-clock";
211 clock-frequency = <32768>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800212 };
213
Alex Elder8d90c5a2014-04-21 16:26:27 -0500214 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>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800240 compatible = "fixed-clock";
241 clock-frequency = <26000000>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800242 };
243
Alex Elder8d90c5a2014-04-21 16:26:27 -0500244 ref_52m_clk: ref_52m {
Markus Mayer2eba9052014-03-06 17:18:14 +0800245 #clock-cells = <0>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500246 compatible = "fixed-clock";
247 clock-frequency = <52000000>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800248 };
249
Alex Elder8d90c5a2014-04-21 16:26:27 -0500250 var_52m_clk: var_52m {
Markus Mayer2eba9052014-03-06 17:18:14 +0800251 #clock-cells = <0>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800252 compatible = "fixed-clock";
Alex Elder8d90c5a2014-04-21 16:26:27 -0500253 clock-frequency = <52000000>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800254 };
255
256 usb_otg_ahb_clk: usb_otg_ahb {
Alex Elder8d90c5a2014-04-21 16:26:27 -0500257 #clock-cells = <0>;
Markus Mayer2eba9052014-03-06 17:18:14 +0800258 compatible = "fixed-clock";
259 clock-frequency = <52000000>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500260 };
261
262 ref_96m_clk: ref_96m {
Markus Mayer2eba9052014-03-06 17:18:14 +0800263 #clock-cells = <0>;
Alex Elder8d90c5a2014-04-21 16:26:27 -0500264 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 {
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 {
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 {
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 {
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";
Markus Mayer2eba9052014-03-06 17:18:14 +0800337 };
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};