Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 1 | /* |
| 2 | * BSD LICENSE |
| 3 | * |
| 4 | * Copyright(c) 2017 Broadcom. All rights reserved. |
| 5 | * |
| 6 | * Redistribution and use in source and binary forms, with or without |
| 7 | * modification, are permitted provided that the following conditions |
| 8 | * are met: |
| 9 | * |
| 10 | * * Redistributions of source code must retain the above copyright |
| 11 | * notice, this list of conditions and the following disclaimer. |
| 12 | * * Redistributions in binary form must reproduce the above copyright |
| 13 | * notice, this list of conditions and the following disclaimer in |
| 14 | * the documentation and/or other materials provided with the |
| 15 | * distribution. |
| 16 | * * Neither the name of Broadcom Corporation nor the names of its |
| 17 | * contributors may be used to endorse or promote products derived |
| 18 | * from this software without specific prior written permission. |
| 19 | * |
| 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 31 | */ |
| 32 | |
| 33 | #include <dt-bindings/interrupt-controller/arm-gic.h> |
| 34 | #include <dt-bindings/interrupt-controller/irq.h> |
| 35 | |
| 36 | / { |
| 37 | compatible = "brcm,hr2"; |
| 38 | model = "Broadcom Hurricane 2 SoC"; |
| 39 | interrupt-parent = <&gic>; |
| 40 | #address-cells = <1>; |
| 41 | #size-cells = <1>; |
| 42 | |
| 43 | cpus { |
| 44 | #address-cells = <1>; |
| 45 | #size-cells = <0>; |
| 46 | |
| 47 | cpu0: cpu@0 { |
| 48 | device_type = "cpu"; |
| 49 | compatible = "arm,cortex-a9"; |
| 50 | next-level-cache = <&L2>; |
| 51 | reg = <0x0>; |
| 52 | }; |
| 53 | }; |
| 54 | |
| 55 | pmu { |
| 56 | compatible = "arm,cortex-a9-pmu"; |
| 57 | interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH |
| 58 | GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; |
| 59 | interrupt-affinity = <&cpu0>; |
| 60 | }; |
| 61 | |
| 62 | mpcore@19000000 { |
| 63 | compatible = "simple-bus"; |
| 64 | ranges = <0x00000000 0x19000000 0x00023000>; |
| 65 | #address-cells = <1>; |
| 66 | #size-cells = <1>; |
| 67 | |
| 68 | a9pll: arm_clk@0 { |
| 69 | #clock-cells = <0>; |
| 70 | compatible = "brcm,hr2-armpll"; |
| 71 | clocks = <&osc>; |
| 72 | reg = <0x0 0x1000>; |
| 73 | }; |
| 74 | |
| 75 | timer@20200 { |
| 76 | compatible = "arm,cortex-a9-global-timer"; |
| 77 | reg = <0x20200 0x100>; |
Hamish Martin | be0ec06 | 2020-05-20 16:30:42 +1200 | [diff] [blame] | 78 | interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 79 | clocks = <&periph_clk>; |
| 80 | }; |
| 81 | |
| 82 | twd-timer@20600 { |
| 83 | compatible = "arm,cortex-a9-twd-timer"; |
| 84 | reg = <0x20600 0x20>; |
| 85 | interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | |
Hamish Martin | be0ec06 | 2020-05-20 16:30:42 +1200 | [diff] [blame] | 86 | IRQ_TYPE_EDGE_RISING)>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 87 | clocks = <&periph_clk>; |
| 88 | }; |
| 89 | |
| 90 | twd-watchdog@20620 { |
| 91 | compatible = "arm,cortex-a9-twd-wdt"; |
| 92 | reg = <0x20620 0x20>; |
| 93 | interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | |
Hamish Martin | be0ec06 | 2020-05-20 16:30:42 +1200 | [diff] [blame] | 94 | IRQ_TYPE_EDGE_RISING)>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 95 | clocks = <&periph_clk>; |
| 96 | }; |
| 97 | |
| 98 | gic: interrupt-controller@21000 { |
| 99 | compatible = "arm,cortex-a9-gic"; |
| 100 | #interrupt-cells = <3>; |
| 101 | #address-cells = <0>; |
| 102 | interrupt-controller; |
| 103 | reg = <0x21000 0x1000>, |
| 104 | <0x20100 0x100>; |
| 105 | }; |
| 106 | |
Krzysztof Kozlowski | c4f294f | 2020-06-26 10:06:46 +0200 | [diff] [blame] | 107 | L2: cache-controller@22000 { |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 108 | compatible = "arm,pl310-cache"; |
| 109 | reg = <0x22000 0x1000>; |
| 110 | cache-unified; |
| 111 | cache-level = <2>; |
| 112 | }; |
| 113 | }; |
| 114 | |
| 115 | clocks { |
| 116 | #address-cells = <1>; |
| 117 | #size-cells = <1>; |
| 118 | ranges; |
| 119 | |
| 120 | osc: oscillator { |
| 121 | #clock-cells = <0>; |
| 122 | compatible = "fixed-clock"; |
| 123 | clock-frequency = <25000000>; |
| 124 | }; |
| 125 | |
| 126 | periph_clk: periph_clk { |
| 127 | #clock-cells = <0>; |
| 128 | compatible = "fixed-factor-clock"; |
| 129 | clocks = <&a9pll>; |
| 130 | clock-div = <2>; |
| 131 | clock-mult = <1>; |
| 132 | }; |
| 133 | }; |
| 134 | |
| 135 | axi@18000000 { |
| 136 | compatible = "simple-bus"; |
| 137 | ranges = <0x00000000 0x18000000 0x0011c40c>; |
| 138 | #address-cells = <1>; |
| 139 | #size-cells = <1>; |
| 140 | |
| 141 | uart0: serial@300 { |
| 142 | compatible = "ns16550a"; |
| 143 | reg = <0x0300 0x100>; |
| 144 | interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; |
| 145 | clocks = <&osc>; |
| 146 | status = "disabled"; |
| 147 | }; |
| 148 | |
| 149 | uart1: serial@400 { |
| 150 | compatible = "ns16550a"; |
| 151 | reg = <0x0400 0x100>; |
| 152 | interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; |
| 153 | clocks = <&osc>; |
| 154 | status = "disabled"; |
| 155 | }; |
| 156 | |
| 157 | dma@20000 { |
| 158 | compatible = "arm,pl330", "arm,primecell"; |
| 159 | reg = <0x20000 0x1000>; |
| 160 | interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>, |
| 161 | <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>, |
| 162 | <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>, |
| 163 | <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>, |
| 164 | <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>, |
| 165 | <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>, |
| 166 | <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, |
| 167 | <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>, |
| 168 | <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; |
| 169 | #dma-cells = <1>; |
| 170 | status = "disabled"; |
| 171 | }; |
| 172 | |
| 173 | amac0: ethernet@22000 { |
| 174 | compatible = "brcm,nsp-amac"; |
| 175 | reg = <0x22000 0x1000>, |
| 176 | <0x110000 0x1000>; |
| 177 | reg-names = "amac_base", "idm_base"; |
| 178 | interrupts = <GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH>; |
| 179 | status = "disabled"; |
| 180 | }; |
| 181 | |
| 182 | nand: nand@26000 { |
| 183 | compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; |
| 184 | reg = <0x26000 0x600>, |
| 185 | <0x11b408 0x600>, |
| 186 | <0x026f00 0x20>; |
| 187 | reg-names = "nand", "iproc-idm", "iproc-ext"; |
| 188 | interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; |
| 189 | |
| 190 | #address-cells = <1>; |
| 191 | #size-cells = <0>; |
| 192 | |
| 193 | brcm,nand-has-wp; |
| 194 | }; |
| 195 | |
| 196 | gpiob: gpio@30000 { |
| 197 | compatible = "brcm,iproc-hr2-gpio", "brcm,iproc-gpio"; |
| 198 | reg = <0x30000 0x50>; |
| 199 | #gpio-cells = <2>; |
| 200 | gpio-controller; |
| 201 | ngpios = <4>; |
| 202 | interrupt-controller; |
| 203 | interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; |
| 204 | }; |
| 205 | |
| 206 | pwm: pwm@31000 { |
| 207 | compatible = "brcm,iproc-pwm"; |
| 208 | reg = <0x31000 0x28>; |
| 209 | clocks = <&osc>; |
| 210 | #pwm-cells = <3>; |
| 211 | status = "disabled"; |
| 212 | }; |
| 213 | |
| 214 | rng: rng@33000 { |
| 215 | compatible = "brcm,bcm-nsp-rng"; |
| 216 | reg = <0x33000 0x14>; |
| 217 | }; |
| 218 | |
Rob Herring | ab0b47d2 | 2018-09-13 13:12:30 -0500 | [diff] [blame] | 219 | qspi: spi@27200 { |
Florian Fainelli | d663186 | 2020-08-26 16:43:41 -0700 | [diff] [blame] | 220 | compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi"; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 221 | reg = <0x027200 0x184>, |
| 222 | <0x027000 0x124>, |
| 223 | <0x11c408 0x004>, |
| 224 | <0x0273a0 0x01c>; |
| 225 | reg-names = "mspi", "bspi", "intr_regs", |
| 226 | "intr_status_reg"; |
| 227 | interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>, |
| 228 | <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>, |
| 229 | <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>, |
| 230 | <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>, |
| 231 | <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>, |
| 232 | <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>, |
| 233 | <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; |
| 234 | interrupt-names = "spi_lr_fullness_reached", |
| 235 | "spi_lr_session_aborted", |
| 236 | "spi_lr_impatient", |
| 237 | "spi_lr_session_done", |
| 238 | "spi_lr_overhead", |
| 239 | "mspi_done", |
| 240 | "mspi_halted"; |
| 241 | num-cs = <2>; |
| 242 | #address-cells = <1>; |
| 243 | #size-cells = <0>; |
| 244 | |
| 245 | /* partitions defined in board DTS */ |
| 246 | }; |
| 247 | |
| 248 | ccbtimer0: timer@34000 { |
| 249 | compatible = "arm,sp804"; |
| 250 | reg = <0x34000 0x1000>; |
| 251 | interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>, |
| 252 | <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; |
| 253 | }; |
| 254 | |
| 255 | ccbtimer1: timer@35000 { |
| 256 | compatible = "arm,sp804"; |
| 257 | reg = <0x35000 0x1000>; |
| 258 | interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>, |
| 259 | <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; |
| 260 | }; |
| 261 | |
| 262 | i2c0: i2c@38000 { |
| 263 | compatible = "brcm,iproc-i2c"; |
| 264 | reg = <0x38000 0x50>; |
| 265 | #address-cells = <1>; |
| 266 | #size-cells = <0>; |
Florian Fainelli | dbe4a39 | 2018-06-11 15:47:14 -0700 | [diff] [blame] | 267 | interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 268 | clock-frequency = <100000>; |
| 269 | }; |
| 270 | |
Chris Packham | 4c365e2 | 2019-10-23 11:19:56 +1300 | [diff] [blame] | 271 | watchdog: watchdog@39000 { |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 272 | compatible = "arm,sp805", "arm,primecell"; |
| 273 | reg = <0x39000 0x1000>; |
| 274 | interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>; |
| 275 | }; |
| 276 | |
| 277 | i2c1: i2c@3b000 { |
| 278 | compatible = "brcm,iproc-i2c"; |
| 279 | reg = <0x3b000 0x50>; |
| 280 | #address-cells = <1>; |
| 281 | #size-cells = <0>; |
Florian Fainelli | dbe4a39 | 2018-06-11 15:47:14 -0700 | [diff] [blame] | 282 | interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 283 | clock-frequency = <100000>; |
| 284 | }; |
| 285 | }; |
| 286 | |
| 287 | pflash: nor@20000000 { |
| 288 | compatible = "cfi-flash", "jedec-flash"; |
| 289 | reg = <0x20000000 0x04000000>; |
| 290 | status = "disabled"; |
| 291 | #address-cells = <1>; |
| 292 | #size-cells = <1>; |
| 293 | |
| 294 | /* partitions defined in board DTS */ |
| 295 | }; |
| 296 | |
| 297 | pcie0: pcie@18012000 { |
| 298 | compatible = "brcm,iproc-pcie"; |
| 299 | reg = <0x18012000 0x1000>; |
| 300 | |
| 301 | #interrupt-cells = <1>; |
| 302 | interrupt-map-mask = <0 0 0 0>; |
Florian Fainelli | dbe4a39 | 2018-06-11 15:47:14 -0700 | [diff] [blame] | 303 | interrupt-map = <0 0 0 0 &gic GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 304 | |
| 305 | linux,pci-domain = <0>; |
| 306 | |
| 307 | bus-range = <0x00 0xff>; |
| 308 | |
| 309 | #address-cells = <3>; |
| 310 | #size-cells = <2>; |
| 311 | device_type = "pci"; |
| 312 | |
| 313 | /* Note: The HW does not support I/O resources. So, |
| 314 | * only the memory resource range is being specified. |
| 315 | */ |
| 316 | ranges = <0x82000000 0 0x08000000 0x08000000 0 0x8000000>; |
| 317 | |
| 318 | status = "disabled"; |
| 319 | |
| 320 | msi-parent = <&msi0>; |
| 321 | msi0: msi-controller { |
| 322 | compatible = "brcm,iproc-msi"; |
| 323 | msi-controller; |
| 324 | interrupt-parent = <&gic>; |
Florian Fainelli | dbe4a39 | 2018-06-11 15:47:14 -0700 | [diff] [blame] | 325 | interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>, |
| 326 | <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>, |
| 327 | <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>, |
| 328 | <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 329 | brcm,pcie-msi-inten; |
| 330 | }; |
| 331 | }; |
| 332 | |
| 333 | pcie1: pcie@18013000 { |
| 334 | compatible = "brcm,iproc-pcie"; |
| 335 | reg = <0x18013000 0x1000>; |
| 336 | |
| 337 | #interrupt-cells = <1>; |
| 338 | interrupt-map-mask = <0 0 0 0>; |
Florian Fainelli | dbe4a39 | 2018-06-11 15:47:14 -0700 | [diff] [blame] | 339 | interrupt-map = <0 0 0 0 &gic GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 340 | |
| 341 | linux,pci-domain = <1>; |
| 342 | |
| 343 | bus-range = <0x00 0xff>; |
| 344 | |
| 345 | #address-cells = <3>; |
| 346 | #size-cells = <2>; |
| 347 | device_type = "pci"; |
| 348 | |
| 349 | /* Note: The HW does not support I/O resources. So, |
| 350 | * only the memory resource range is being specified. |
| 351 | */ |
| 352 | ranges = <0x82000000 0 0x40000000 0x40000000 0 0x8000000>; |
| 353 | |
| 354 | status = "disabled"; |
| 355 | |
| 356 | msi-parent = <&msi1>; |
| 357 | msi1: msi-controller { |
| 358 | compatible = "brcm,iproc-msi"; |
| 359 | msi-controller; |
| 360 | interrupt-parent = <&gic>; |
Florian Fainelli | dbe4a39 | 2018-06-11 15:47:14 -0700 | [diff] [blame] | 361 | interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>, |
| 362 | <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>, |
| 363 | <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>, |
| 364 | <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>; |
Florian Fainelli | b9099ec | 2017-09-28 16:14:58 -0700 | [diff] [blame] | 365 | brcm,pcie-msi-inten; |
| 366 | }; |
| 367 | }; |
| 368 | }; |