Commit | Line | Data |
---|---|---|
d27509f1 HM |
1 | /* |
2 | * Broadcom BCM470X / BCM5301X ARM platform code. | |
3 | * Generic DTS part for all BCM53010, BCM53011, BCM53012, BCM53014, BCM53015, | |
4 | * BCM53016, BCM53017, BCM53018, BCM4707, BCM4708 and BCM4709 SoCs | |
5 | * | |
6 | * Copyright 2013-2014 Hauke Mehrtens <hauke@hauke-m.de> | |
7 | * | |
8 | * Licensed under the GNU/GPL. See COPYING for details. | |
9 | */ | |
10 | ||
cdc36b22 | 11 | #include <dt-bindings/clock/bcm-nsp.h> |
fb026d3d | 12 | #include <dt-bindings/gpio/gpio.h> |
f6f82344 | 13 | #include <dt-bindings/input/input.h> |
d27509f1 HM |
14 | #include <dt-bindings/interrupt-controller/irq.h> |
15 | #include <dt-bindings/interrupt-controller/arm-gic.h> | |
16 | #include "skeleton.dtsi" | |
17 | ||
18 | / { | |
19 | interrupt-parent = <&gic>; | |
20 | ||
21 | chipcommonA { | |
22 | compatible = "simple-bus"; | |
23 | ranges = <0x00000000 0x18000000 0x00001000>; | |
24 | #address-cells = <1>; | |
25 | #size-cells = <1>; | |
26 | ||
27 | uart0: serial@0300 { | |
28 | compatible = "ns16550"; | |
29 | reg = <0x0300 0x100>; | |
30 | interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; | |
cdc36b22 | 31 | clocks = <&iprocslow>; |
d27509f1 HM |
32 | status = "disabled"; |
33 | }; | |
34 | ||
35 | uart1: serial@0400 { | |
36 | compatible = "ns16550"; | |
37 | reg = <0x0400 0x100>; | |
38 | interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; | |
cdc36b22 | 39 | clocks = <&iprocslow>; |
d27509f1 HM |
40 | status = "disabled"; |
41 | }; | |
42 | }; | |
43 | ||
44 | mpcore { | |
45 | compatible = "simple-bus"; | |
cdc36b22 | 46 | ranges = <0x00000000 0x19000000 0x00023000>; |
d27509f1 HM |
47 | #address-cells = <1>; |
48 | #size-cells = <1>; | |
49 | ||
cdc36b22 JM |
50 | a9pll: arm_clk@00000 { |
51 | #clock-cells = <0>; | |
52 | compatible = "brcm,nsp-armpll"; | |
53 | clocks = <&osc>; | |
54 | reg = <0x00000 0x1000>; | |
55 | }; | |
56 | ||
57 | scu@20000 { | |
d27509f1 | 58 | compatible = "arm,cortex-a9-scu"; |
cdc36b22 | 59 | reg = <0x20000 0x100>; |
d27509f1 HM |
60 | }; |
61 | ||
cdc36b22 | 62 | timer@20200 { |
d27509f1 | 63 | compatible = "arm,cortex-a9-global-timer"; |
cdc36b22 | 64 | reg = <0x20200 0x100>; |
0e34079c | 65 | interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>; |
cdc36b22 | 66 | clocks = <&periph_clk>; |
d27509f1 HM |
67 | }; |
68 | ||
f22c635e | 69 | timer@20600 { |
d27509f1 | 70 | compatible = "arm,cortex-a9-twd-timer"; |
f22c635e JM |
71 | reg = <0x20600 0x20>; |
72 | interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | | |
73 | IRQ_TYPE_EDGE_RISING)>; | |
74 | clocks = <&periph_clk>; | |
75 | }; | |
76 | ||
77 | watchdog@20620 { | |
78 | compatible = "arm,cortex-a9-twd-wdt"; | |
79 | reg = <0x20620 0x20>; | |
80 | interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | | |
81 | IRQ_TYPE_EDGE_RISING)>; | |
cdc36b22 | 82 | clocks = <&periph_clk>; |
d27509f1 HM |
83 | }; |
84 | ||
cdc36b22 | 85 | gic: interrupt-controller@21000 { |
d27509f1 HM |
86 | compatible = "arm,cortex-a9-gic"; |
87 | #interrupt-cells = <3>; | |
88 | #address-cells = <0>; | |
89 | interrupt-controller; | |
cdc36b22 JM |
90 | reg = <0x21000 0x1000>, |
91 | <0x20100 0x100>; | |
d27509f1 HM |
92 | }; |
93 | ||
cdc36b22 | 94 | L2: cache-controller@22000 { |
d27509f1 | 95 | compatible = "arm,pl310-cache"; |
cdc36b22 | 96 | reg = <0x22000 0x1000>; |
d27509f1 | 97 | cache-unified; |
db44f134 HM |
98 | arm,shared-override; |
99 | prefetch-data = <1>; | |
100 | prefetch-instr = <1>; | |
d27509f1 HM |
101 | cache-level = <2>; |
102 | }; | |
103 | }; | |
104 | ||
1ff80363 FF |
105 | pmu { |
106 | compatible = "arm,cortex-a9-pmu"; | |
107 | interrupts = | |
108 | <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, | |
109 | <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; | |
110 | }; | |
111 | ||
d27509f1 HM |
112 | clocks { |
113 | #address-cells = <1>; | |
cdc36b22 JM |
114 | #size-cells = <1>; |
115 | ranges; | |
d27509f1 | 116 | |
cdc36b22 JM |
117 | osc: oscillator { |
118 | #clock-cells = <0>; | |
d27509f1 | 119 | compatible = "fixed-clock"; |
cdc36b22 JM |
120 | clock-frequency = <25000000>; |
121 | }; | |
122 | ||
123 | iprocmed: iprocmed { | |
124 | #clock-cells = <0>; | |
125 | compatible = "fixed-factor-clock"; | |
126 | clocks = <&genpll BCM_NSP_GENPLL_IPROCFAST_CLK>; | |
127 | clock-div = <2>; | |
128 | clock-mult = <1>; | |
129 | }; | |
130 | ||
131 | iprocslow: iprocslow { | |
132 | #clock-cells = <0>; | |
133 | compatible = "fixed-factor-clock"; | |
134 | clocks = <&genpll BCM_NSP_GENPLL_IPROCFAST_CLK>; | |
135 | clock-div = <4>; | |
136 | clock-mult = <1>; | |
137 | }; | |
138 | ||
139 | periph_clk: periph_clk { | |
d27509f1 | 140 | #clock-cells = <0>; |
cdc36b22 JM |
141 | compatible = "fixed-factor-clock"; |
142 | clocks = <&a9pll>; | |
143 | clock-div = <2>; | |
144 | clock-mult = <1>; | |
d27509f1 HM |
145 | }; |
146 | }; | |
fb026d3d | 147 | |
2709d393 RM |
148 | usb2_phy: usb2-phy { |
149 | compatible = "brcm,ns-usb2-phy"; | |
150 | reg = <0x1800c000 0x1000>; | |
151 | reg-names = "dmu"; | |
152 | #phy-cells = <0>; | |
153 | clocks = <&genpll BCM_NSP_GENPLL_USB_PHY_REF_CLK>; | |
154 | clock-names = "phy-ref-clk"; | |
155 | }; | |
156 | ||
92b7b6ad RM |
157 | usb3_phy: usb3-phy { |
158 | compatible = "brcm,ns-ax-usb3-phy"; | |
159 | reg = <0x18105000 0x1000>, <0x18003000 0x1000>; | |
160 | reg-names = "dmp", "ccb-mii"; | |
161 | #phy-cells = <0>; | |
162 | }; | |
163 | ||
fb026d3d RM |
164 | axi@18000000 { |
165 | compatible = "brcm,bus-axi"; | |
166 | reg = <0x18000000 0x1000>; | |
167 | ranges = <0x00000000 0x18000000 0x00100000>; | |
168 | #address-cells = <1>; | |
169 | #size-cells = <1>; | |
170 | ||
dec37882 HM |
171 | #interrupt-cells = <1>; |
172 | interrupt-map-mask = <0x000fffff 0xffff>; | |
173 | interrupt-map = | |
174 | /* ChipCommon */ | |
175 | <0x00000000 0 &gic GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>, | |
176 | ||
2cd0c020 FF |
177 | /* Switch Register Access Block */ |
178 | <0x00007000 0 &gic GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>, | |
179 | <0x00007000 1 &gic GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>, | |
180 | <0x00007000 2 &gic GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>, | |
181 | <0x00007000 3 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, | |
182 | <0x00007000 4 &gic GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>, | |
183 | <0x00007000 5 &gic GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>, | |
184 | <0x00007000 6 &gic GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>, | |
185 | <0x00007000 7 &gic GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, | |
186 | <0x00007000 8 &gic GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>, | |
187 | <0x00007000 9 &gic GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, | |
188 | <0x00007000 10 &gic GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>, | |
189 | <0x00007000 11 &gic GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>, | |
190 | <0x00007000 12 &gic GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>, | |
191 | ||
1f80de68 HM |
192 | /* PCIe Controller 0 */ |
193 | <0x00012000 0 &gic GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>, | |
194 | <0x00012000 1 &gic GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>, | |
195 | <0x00012000 2 &gic GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>, | |
196 | <0x00012000 3 &gic GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>, | |
197 | <0x00012000 4 &gic GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>, | |
198 | <0x00012000 5 &gic GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, | |
199 | ||
200 | /* PCIe Controller 1 */ | |
201 | <0x00013000 0 &gic GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>, | |
202 | <0x00013000 1 &gic GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>, | |
203 | <0x00013000 2 &gic GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>, | |
204 | <0x00013000 3 &gic GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>, | |
205 | <0x00013000 4 &gic GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, | |
206 | <0x00013000 5 &gic GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>, | |
207 | ||
208 | /* PCIe Controller 2 */ | |
209 | <0x00014000 0 &gic GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>, | |
210 | <0x00014000 1 &gic GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>, | |
211 | <0x00014000 2 &gic GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>, | |
212 | <0x00014000 3 &gic GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>, | |
213 | <0x00014000 4 &gic GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>, | |
214 | <0x00014000 5 &gic GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>, | |
215 | ||
dec37882 HM |
216 | /* USB 2.0 Controller */ |
217 | <0x00021000 0 &gic GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>, | |
218 | ||
219 | /* USB 3.0 Controller */ | |
220 | <0x00023000 0 &gic GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>, | |
221 | ||
222 | /* Ethernet Controller 0 */ | |
223 | <0x00024000 0 &gic GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, | |
224 | ||
225 | /* Ethernet Controller 1 */ | |
226 | <0x00025000 0 &gic GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>, | |
227 | ||
228 | /* Ethernet Controller 2 */ | |
229 | <0x00026000 0 &gic GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>, | |
230 | ||
231 | /* Ethernet Controller 3 */ | |
232 | <0x00027000 0 &gic GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>, | |
233 | ||
234 | /* NAND Controller */ | |
235 | <0x00028000 0 &gic GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>, | |
236 | <0x00028000 1 &gic GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, | |
237 | <0x00028000 2 &gic GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>, | |
238 | <0x00028000 3 &gic GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>, | |
239 | <0x00028000 4 &gic GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>, | |
240 | <0x00028000 5 &gic GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>, | |
241 | <0x00028000 6 &gic GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>, | |
242 | <0x00028000 7 &gic GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; | |
243 | ||
fb026d3d RM |
244 | chipcommon: chipcommon@0 { |
245 | reg = <0x00000000 0x1000>; | |
246 | ||
247 | gpio-controller; | |
248 | #gpio-cells = <2>; | |
249 | }; | |
dd70ccfa | 250 | |
5d1f2d2c RM |
251 | pcie0: pcie@12000 { |
252 | reg = <0x00012000 0x1000>; | |
253 | }; | |
254 | ||
255 | pcie1: pcie@13000 { | |
256 | reg = <0x00013000 0x1000>; | |
257 | }; | |
258 | ||
dd70ccfa RM |
259 | usb2: usb2@21000 { |
260 | reg = <0x00021000 0x1000>; | |
261 | ||
262 | #address-cells = <1>; | |
263 | #size-cells = <1>; | |
0725c842 | 264 | ranges; |
2709d393 | 265 | |
0725c842 RM |
266 | interrupt-parent = <&gic>; |
267 | ||
268 | ehci: ehci@21000 { | |
269 | #usb-cells = <0>; | |
270 | ||
271 | compatible = "generic-ehci"; | |
272 | reg = <0x00021000 0x1000>; | |
273 | interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>; | |
274 | phys = <&usb2_phy>; | |
275 | }; | |
276 | ||
277 | ohci: ohci@22000 { | |
278 | #usb-cells = <0>; | |
279 | ||
280 | compatible = "generic-ohci"; | |
281 | reg = <0x00022000 0x1000>; | |
282 | interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>; | |
283 | }; | |
dd70ccfa RM |
284 | }; |
285 | ||
286 | usb3: usb3@23000 { | |
287 | reg = <0x00023000 0x1000>; | |
288 | ||
289 | #address-cells = <1>; | |
290 | #size-cells = <1>; | |
0725c842 RM |
291 | ranges; |
292 | ||
293 | interrupt-parent = <&gic>; | |
294 | ||
295 | xhci: xhci@23000 { | |
296 | #usb-cells = <0>; | |
297 | ||
298 | compatible = "generic-xhci"; | |
299 | reg = <0x00023000 0x1000>; | |
300 | interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; | |
301 | phys = <&usb3_phy>; | |
302 | phy-names = "usb"; | |
303 | }; | |
dd70ccfa | 304 | }; |
1b47b98a | 305 | |
59f0ce1a FF |
306 | gmac0: ethernet@24000 { |
307 | reg = <0x24000 0x800>; | |
308 | }; | |
309 | ||
310 | gmac1: ethernet@25000 { | |
311 | reg = <0x25000 0x800>; | |
312 | }; | |
313 | ||
314 | gmac2: ethernet@26000 { | |
315 | reg = <0x26000 0x800>; | |
316 | }; | |
317 | ||
318 | gmac3: ethernet@27000 { | |
319 | reg = <0x27000 0x800>; | |
320 | }; | |
fb026d3d | 321 | }; |
9faa5960 | 322 | |
23f1eca6 RM |
323 | mdio: mdio@18003000 { |
324 | compatible = "brcm,iproc-mdio"; | |
325 | reg = <0x18003000 0x8>; | |
326 | #size-cells = <1>; | |
327 | #address-cells = <0>; | |
328 | status = "disabled"; | |
329 | }; | |
330 | ||
bb097e3e JM |
331 | i2c0: i2c@18009000 { |
332 | compatible = "brcm,iproc-i2c"; | |
333 | reg = <0x18009000 0x50>; | |
334 | interrupts = <GIC_SPI 121 IRQ_TYPE_NONE>; | |
335 | #address-cells = <1>; | |
336 | #size-cells = <0>; | |
337 | clock-frequency = <100000>; | |
338 | status = "disabled"; | |
339 | }; | |
340 | ||
cdc36b22 JM |
341 | lcpll0: lcpll0@1800c100 { |
342 | #clock-cells = <1>; | |
343 | compatible = "brcm,nsp-lcpll0"; | |
344 | reg = <0x1800c100 0x14>; | |
345 | clocks = <&osc>; | |
346 | clock-output-names = "lcpll0", "pcie_phy", "sdio", | |
347 | "ddr_phy"; | |
348 | }; | |
349 | ||
350 | genpll: genpll@1800c140 { | |
351 | #clock-cells = <1>; | |
352 | compatible = "brcm,nsp-genpll"; | |
353 | reg = <0x1800c140 0x24>; | |
354 | clocks = <&osc>; | |
355 | clock-output-names = "genpll", "phy", "ethernetclk", | |
356 | "usbclk", "iprocfast", "sata1", | |
357 | "sata2"; | |
358 | }; | |
359 | ||
36c2cb18 RM |
360 | thermal: thermal@1800c2c0 { |
361 | compatible = "brcm,ns-thermal"; | |
362 | reg = <0x1800c2c0 0x10>; | |
363 | #thermal-sensor-cells = <0>; | |
364 | }; | |
365 | ||
59f0ce1a FF |
366 | srab: srab@18007000 { |
367 | compatible = "brcm,bcm5301x-srab"; | |
368 | reg = <0x18007000 0x1000>; | |
369 | #address-cells = <1>; | |
370 | #size-cells = <0>; | |
371 | ||
372 | status = "disabled"; | |
373 | ||
374 | /* ports are defined in board DTS */ | |
375 | }; | |
376 | ||
36e55669 FF |
377 | rng: rng@18004000 { |
378 | compatible = "brcm,bcm5301x-rng"; | |
379 | reg = <0x18004000 0x14>; | |
380 | }; | |
381 | ||
9faa5960 HM |
382 | nand: nand@18028000 { |
383 | compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1", "brcm,brcmnand"; | |
384 | reg = <0x18028000 0x600>, <0x1811a408 0x600>, <0x18028f00 0x20>; | |
385 | reg-names = "nand", "iproc-idm", "iproc-ext"; | |
386 | interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; | |
387 | ||
388 | #address-cells = <1>; | |
389 | #size-cells = <0>; | |
390 | ||
391 | brcm,nand-has-wp; | |
392 | }; | |
1c8f4065 JM |
393 | |
394 | spi@18029200 { | |
395 | compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; | |
396 | reg = <0x18029200 0x184>, | |
397 | <0x18029000 0x124>, | |
398 | <0x1811b408 0x004>, | |
399 | <0x180293a0 0x01c>; | |
400 | reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg"; | |
401 | interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, | |
402 | <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, | |
403 | <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>, | |
404 | <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, | |
405 | <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, | |
406 | <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, | |
407 | <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; | |
408 | interrupt-names = "spi_lr_fullness_reached", | |
409 | "spi_lr_session_aborted", | |
410 | "spi_lr_impatient", | |
411 | "spi_lr_session_done", | |
412 | "spi_lr_overhead", | |
413 | "mspi_done", | |
414 | "mspi_halted"; | |
415 | clocks = <&iprocmed>; | |
416 | clock-names = "iprocmed"; | |
417 | num-cs = <2>; | |
418 | #address-cells = <1>; | |
419 | #size-cells = <0>; | |
420 | ||
421 | spi_nor: spi-nor@0 { | |
422 | compatible = "jedec,spi-nor"; | |
423 | reg = <0>; | |
424 | spi-max-frequency = <20000000>; | |
425 | linux,part-probe = "ofpart", "bcm47xxpart"; | |
426 | status = "disabled"; | |
427 | }; | |
428 | }; | |
36c2cb18 RM |
429 | |
430 | thermal-zones { | |
431 | cpu_thermal: cpu-thermal { | |
432 | polling-delay-passive = <0>; | |
433 | polling-delay = <1000>; | |
434 | coefficients = <(-556) 418000>; | |
435 | thermal-sensors = <&thermal>; | |
436 | ||
437 | trips { | |
438 | cpu-crit { | |
439 | temperature = <125000>; | |
440 | hysteresis = <0>; | |
441 | type = "critical"; | |
442 | }; | |
443 | }; | |
444 | ||
445 | cooling-maps { | |
446 | }; | |
447 | }; | |
448 | }; | |
d27509f1 | 449 | }; |