1/* 2 * BSD LICENSE 3 * 4 * Copyright(c) 2016 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/* BCM23550 and BCM21664 have almost identical clocks */ 37#include "dt-bindings/clock/bcm21664.h" 38 39/ { 40 #address-cells = <1>; 41 #size-cells = <1>; 42 model = "BCM23550 SoC"; 43 compatible = "brcm,bcm23550"; 44 interrupt-parent = <&gic>; 45 46 cpus { 47 #address-cells = <1>; 48 #size-cells = <0>; 49 50 cpu0: cpu@0 { 51 device_type = "cpu"; 52 compatible = "arm,cortex-a7"; 53 reg = <0>; 54 clock-frequency = <1000000000>; 55 }; 56 57 cpu1: cpu@1 { 58 device_type = "cpu"; 59 compatible = "arm,cortex-a7"; 60 enable-method = "brcm,bcm23550"; 61 secondary-boot-reg = <0x35004178>; 62 reg = <1>; 63 clock-frequency = <1000000000>; 64 }; 65 66 cpu2: cpu@2 { 67 device_type = "cpu"; 68 compatible = "arm,cortex-a7"; 69 enable-method = "brcm,bcm23550"; 70 secondary-boot-reg = <0x35004178>; 71 reg = <2>; 72 clock-frequency = <1000000000>; 73 }; 74 75 cpu3: cpu@3 { 76 device_type = "cpu"; 77 compatible = "arm,cortex-a7"; 78 enable-method = "brcm,bcm23550"; 79 secondary-boot-reg = <0x35004178>; 80 reg = <3>; 81 clock-frequency = <1000000000>; 82 }; 83 }; 84 85 /* Hub bus */ 86 hub@34000000 { 87 compatible = "simple-bus"; 88 ranges = <0 0x34000000 0x102f83ac>; 89 #address-cells = <1>; 90 #size-cells = <1>; 91 92 smc@4e000 { 93 compatible = "brcm,bcm23550-smc", "brcm,kona-smc"; 94 reg = <0x0004e000 0x400>; /* 1 KiB in SRAM */ 95 }; 96 97 resetmgr: reset-controller@1001f00 { 98 compatible = "brcm,bcm21664-resetmgr"; 99 reg = <0x01001f00 0x24>; 100 }; 101 102 gpio: gpio@1003000 { 103 compatible = "brcm,bcm23550-gpio", "brcm,kona-gpio"; 104 reg = <0x01003000 0x524>; 105 interrupts = 106 <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 107 GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH 108 GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH 109 GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>; 110 #gpio-cells = <2>; 111 #interrupt-cells = <2>; 112 gpio-controller; 113 interrupt-controller; 114 }; 115 116 timer@1006000 { 117 compatible = "brcm,kona-timer"; 118 reg = <0x01006000 0x1c>; 119 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 120 clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>; 121 }; 122 }; 123 124 /* Slaves bus */ 125 slaves@3e000000 { 126 compatible = "simple-bus"; 127 ranges = <0 0x3e000000 0x0001c070>; 128 #address-cells = <1>; 129 #size-cells = <1>; 130 131 uartb: serial@0 { 132 compatible = "snps,dw-apb-uart"; 133 status = "disabled"; 134 reg = <0x00000000 0x118>; 135 clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>; 136 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; 137 reg-shift = <2>; 138 reg-io-width = <4>; 139 }; 140 141 uartb2: serial@1000 { 142 compatible = "snps,dw-apb-uart"; 143 status = "disabled"; 144 reg = <0x00001000 0x118>; 145 clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>; 146 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; 147 reg-shift = <2>; 148 reg-io-width = <4>; 149 }; 150 151 uartb3: serial@2000 { 152 compatible = "snps,dw-apb-uart"; 153 status = "disabled"; 154 reg = <0x00002000 0x118>; 155 clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>; 156 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 157 reg-shift = <2>; 158 reg-io-width = <4>; 159 }; 160 161 bsc1: i2c@16000 { 162 compatible = "brcm,kona-i2c"; 163 reg = <0x00016000 0x70>; 164 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 165 #address-cells = <1>; 166 #size-cells = <0>; 167 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>; 168 status = "disabled"; 169 }; 170 171 bsc2: i2c@17000 { 172 compatible = "brcm,kona-i2c"; 173 reg = <0x00017000 0x70>; 174 interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; 175 #address-cells = <1>; 176 #size-cells = <0>; 177 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>; 178 status = "disabled"; 179 }; 180 181 bsc3: i2c@18000 { 182 compatible = "brcm,kona-i2c"; 183 reg = <0x00018000 0x70>; 184 interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>; 185 #address-cells = <1>; 186 #size-cells = <0>; 187 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>; 188 status = "disabled"; 189 }; 190 191 bsc4: i2c@1c000 { 192 compatible = "brcm,kona-i2c"; 193 reg = <0x0001c000 0x70>; 194 interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>; 195 #address-cells = <1>; 196 #size-cells = <0>; 197 clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>; 198 status = "disabled"; 199 }; 200 }; 201 202 /* Apps bus */ 203 apps@3e300000 { 204 compatible = "simple-bus"; 205 ranges = <0 0x3e300000 0x01b77000>; 206 #address-cells = <1>; 207 #size-cells = <1>; 208 209 usbotg: usb@e20000 { 210 compatible = "snps,dwc2"; 211 reg = <0x00e20000 0x10000>; 212 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>; 213 clocks = <&usb_otg_ahb_clk>; 214 clock-names = "otg"; 215 phys = <&usbphy>; 216 phy-names = "usb2-phy"; 217 status = "disabled"; 218 }; 219 220 usbphy: usb-phy@e30000 { 221 compatible = "brcm,kona-usb2-phy"; 222 reg = <0x00e30000 0x28>; 223 #phy-cells = <0>; 224 status = "disabled"; 225 }; 226 227 sdio1: sdio@e80000 { 228 compatible = "brcm,kona-sdhci"; 229 reg = <0x00e80000 0x801c>; 230 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 231 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>; 232 status = "disabled"; 233 }; 234 235 sdio2: sdio@e90000 { 236 compatible = "brcm,kona-sdhci"; 237 reg = <0x00e90000 0x801c>; 238 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; 239 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>; 240 status = "disabled"; 241 }; 242 243 sdio3: sdio@ea0000 { 244 compatible = "brcm,kona-sdhci"; 245 reg = <0x00ea0000 0x801c>; 246 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 247 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>; 248 status = "disabled"; 249 }; 250 251 sdio4: sdio@eb0000 { 252 compatible = "brcm,kona-sdhci"; 253 reg = <0x00eb0000 0x801c>; 254 interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; 255 clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>; 256 status = "disabled"; 257 }; 258 259 cdc: cdc@1b0e000 { 260 compatible = "brcm,bcm23550-cdc"; 261 reg = <0x01b0e000 0x78>; 262 }; 263 264 gic: interrupt-controller@1b21000 { 265 compatible = "arm,cortex-a9-gic"; 266 #interrupt-cells = <3>; 267 #address-cells = <0>; 268 interrupt-controller; 269 reg = <0x01b21000 0x1000>, 270 <0x01b22000 0x1000>; 271 }; 272 }; 273 274 clocks { 275 #address-cells = <1>; 276 #size-cells = <1>; 277 ranges; 278 279 /* 280 * Fixed clocks are defined before CCUs whose 281 * clocks may depend on them. 282 */ 283 284 ref_32k_clk: ref_32k { 285 #clock-cells = <0>; 286 compatible = "fixed-clock"; 287 clock-frequency = <32768>; 288 }; 289 290 bbl_32k_clk: bbl_32k { 291 #clock-cells = <0>; 292 compatible = "fixed-clock"; 293 clock-frequency = <32768>; 294 }; 295 296 ref_13m_clk: ref_13m { 297 #clock-cells = <0>; 298 compatible = "fixed-clock"; 299 clock-frequency = <13000000>; 300 }; 301 302 var_13m_clk: var_13m { 303 #clock-cells = <0>; 304 compatible = "fixed-clock"; 305 clock-frequency = <13000000>; 306 }; 307 308 dft_19_5m_clk: dft_19_5m { 309 #clock-cells = <0>; 310 compatible = "fixed-clock"; 311 clock-frequency = <19500000>; 312 }; 313 314 ref_crystal_clk: ref_crystal { 315 #clock-cells = <0>; 316 compatible = "fixed-clock"; 317 clock-frequency = <26000000>; 318 }; 319 320 ref_52m_clk: ref_52m { 321 #clock-cells = <0>; 322 compatible = "fixed-clock"; 323 clock-frequency = <52000000>; 324 }; 325 326 var_52m_clk: var_52m { 327 #clock-cells = <0>; 328 compatible = "fixed-clock"; 329 clock-frequency = <52000000>; 330 }; 331 332 usb_otg_ahb_clk: usb_otg_ahb { 333 #clock-cells = <0>; 334 compatible = "fixed-clock"; 335 clock-frequency = <52000000>; 336 }; 337 338 ref_96m_clk: ref_96m { 339 #clock-cells = <0>; 340 compatible = "fixed-clock"; 341 clock-frequency = <96000000>; 342 }; 343 344 var_96m_clk: var_96m { 345 #clock-cells = <0>; 346 compatible = "fixed-clock"; 347 clock-frequency = <96000000>; 348 }; 349 350 ref_104m_clk: ref_104m { 351 #clock-cells = <0>; 352 compatible = "fixed-clock"; 353 clock-frequency = <104000000>; 354 }; 355 356 var_104m_clk: var_104m { 357 #clock-cells = <0>; 358 compatible = "fixed-clock"; 359 clock-frequency = <104000000>; 360 }; 361 362 ref_156m_clk: ref_156m { 363 #clock-cells = <0>; 364 compatible = "fixed-clock"; 365 clock-frequency = <156000000>; 366 }; 367 368 var_156m_clk: var_156m { 369 #clock-cells = <0>; 370 compatible = "fixed-clock"; 371 clock-frequency = <156000000>; 372 }; 373 374 root_ccu: root_ccu@35001000 { 375 compatible = BCM21664_DT_ROOT_CCU_COMPAT; 376 reg = <0x35001000 0x0f00>; 377 #clock-cells = <1>; 378 clock-output-names = "frac_1m"; 379 }; 380 381 aon_ccu: aon_ccu@35002000 { 382 compatible = BCM21664_DT_AON_CCU_COMPAT; 383 reg = <0x35002000 0x0f00>; 384 #clock-cells = <1>; 385 clock-output-names = "hub_timer"; 386 }; 387 388 slave_ccu: slave_ccu@3e011000 { 389 compatible = BCM21664_DT_SLAVE_CCU_COMPAT; 390 reg = <0x3e011000 0x0f00>; 391 #clock-cells = <1>; 392 clock-output-names = "uartb", 393 "uartb2", 394 "uartb3", 395 "bsc1", 396 "bsc2", 397 "bsc3", 398 "bsc4"; 399 }; 400 401 master_ccu: master_ccu@3f001000 { 402 compatible = BCM21664_DT_MASTER_CCU_COMPAT; 403 reg = <0x3f001000 0x0f00>; 404 #clock-cells = <1>; 405 clock-output-names = "sdio1", 406 "sdio2", 407 "sdio3", 408 "sdio4", 409 "sdio1_sleep", 410 "sdio2_sleep", 411 "sdio3_sleep", 412 "sdio4_sleep"; 413 }; 414 }; 415}; 416