166ae6aedSWilliam Zhang// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 266ae6aedSWilliam Zhang/* 366ae6aedSWilliam Zhang * Copyright 2022 Broadcom Ltd. 466ae6aedSWilliam Zhang */ 566ae6aedSWilliam Zhang 666ae6aedSWilliam Zhang#include <dt-bindings/interrupt-controller/arm-gic.h> 766ae6aedSWilliam Zhang#include <dt-bindings/interrupt-controller/irq.h> 866ae6aedSWilliam Zhang 966ae6aedSWilliam Zhang/ { 1066ae6aedSWilliam Zhang compatible = "brcm,bcm6855", "brcm,bcmbca"; 1166ae6aedSWilliam Zhang #address-cells = <1>; 1266ae6aedSWilliam Zhang #size-cells = <1>; 1366ae6aedSWilliam Zhang 1466ae6aedSWilliam Zhang interrupt-parent = <&gic>; 1566ae6aedSWilliam Zhang 1666ae6aedSWilliam Zhang cpus { 1766ae6aedSWilliam Zhang #address-cells = <1>; 1866ae6aedSWilliam Zhang #size-cells = <0>; 1966ae6aedSWilliam Zhang 2066ae6aedSWilliam Zhang CA7_0: cpu@0 { 2166ae6aedSWilliam Zhang device_type = "cpu"; 2266ae6aedSWilliam Zhang compatible = "arm,cortex-a7"; 2366ae6aedSWilliam Zhang reg = <0x0>; 2466ae6aedSWilliam Zhang next-level-cache = <&L2_0>; 2566ae6aedSWilliam Zhang enable-method = "psci"; 2666ae6aedSWilliam Zhang }; 2766ae6aedSWilliam Zhang 2866ae6aedSWilliam Zhang CA7_1: cpu@1 { 2966ae6aedSWilliam Zhang device_type = "cpu"; 3066ae6aedSWilliam Zhang compatible = "arm,cortex-a7"; 3166ae6aedSWilliam Zhang reg = <0x1>; 3266ae6aedSWilliam Zhang next-level-cache = <&L2_0>; 3366ae6aedSWilliam Zhang enable-method = "psci"; 3466ae6aedSWilliam Zhang }; 3566ae6aedSWilliam Zhang 3666ae6aedSWilliam Zhang CA7_2: cpu@2 { 3766ae6aedSWilliam Zhang device_type = "cpu"; 3866ae6aedSWilliam Zhang compatible = "arm,cortex-a7"; 3966ae6aedSWilliam Zhang reg = <0x2>; 4066ae6aedSWilliam Zhang next-level-cache = <&L2_0>; 4166ae6aedSWilliam Zhang enable-method = "psci"; 4266ae6aedSWilliam Zhang }; 4366ae6aedSWilliam Zhang 4466ae6aedSWilliam Zhang L2_0: l2-cache0 { 4566ae6aedSWilliam Zhang compatible = "cache"; 46b2302467SPierre Gondois cache-level = <2>; 470db4bb04SKrzysztof Kozlowski cache-unified; 4866ae6aedSWilliam Zhang }; 4966ae6aedSWilliam Zhang }; 5066ae6aedSWilliam Zhang 5166ae6aedSWilliam Zhang timer { 5266ae6aedSWilliam Zhang compatible = "arm,armv7-timer"; 5366ae6aedSWilliam Zhang interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>, 5466ae6aedSWilliam Zhang <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>, 5566ae6aedSWilliam Zhang <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>, 5666ae6aedSWilliam Zhang <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>; 5766ae6aedSWilliam Zhang arm,cpu-registers-not-fw-configured; 5866ae6aedSWilliam Zhang }; 5966ae6aedSWilliam Zhang 6066ae6aedSWilliam Zhang pmu: pmu { 6166ae6aedSWilliam Zhang compatible = "arm,cortex-a7-pmu"; 6266ae6aedSWilliam Zhang interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, 6366ae6aedSWilliam Zhang <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, 6466ae6aedSWilliam Zhang <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 6566ae6aedSWilliam Zhang interrupt-affinity = <&CA7_0>, <&CA7_1>, <&CA7_2>; 6666ae6aedSWilliam Zhang }; 6766ae6aedSWilliam Zhang 6866ae6aedSWilliam Zhang clocks: clocks { 6966ae6aedSWilliam Zhang periph_clk: periph-clk { 7066ae6aedSWilliam Zhang compatible = "fixed-clock"; 7166ae6aedSWilliam Zhang #clock-cells = <0>; 7266ae6aedSWilliam Zhang clock-frequency = <200000000>; 7366ae6aedSWilliam Zhang }; 7466ae6aedSWilliam Zhang 7566ae6aedSWilliam Zhang uart_clk: uart-clk { 7666ae6aedSWilliam Zhang compatible = "fixed-factor-clock"; 7766ae6aedSWilliam Zhang #clock-cells = <0>; 7866ae6aedSWilliam Zhang clocks = <&periph_clk>; 7966ae6aedSWilliam Zhang clock-div = <4>; 8066ae6aedSWilliam Zhang clock-mult = <1>; 8166ae6aedSWilliam Zhang }; 827858ddedSWilliam Zhang 837858ddedSWilliam Zhang hsspi_pll: hsspi-pll { 847858ddedSWilliam Zhang compatible = "fixed-clock"; 857858ddedSWilliam Zhang #clock-cells = <0>; 867858ddedSWilliam Zhang clock-frequency = <200000000>; 877858ddedSWilliam Zhang }; 8866ae6aedSWilliam Zhang }; 8966ae6aedSWilliam Zhang 9066ae6aedSWilliam Zhang psci { 9166ae6aedSWilliam Zhang compatible = "arm,psci-0.2"; 9266ae6aedSWilliam Zhang method = "smc"; 9366ae6aedSWilliam Zhang }; 9466ae6aedSWilliam Zhang 9566ae6aedSWilliam Zhang axi@81000000 { 9666ae6aedSWilliam Zhang compatible = "simple-bus"; 9766ae6aedSWilliam Zhang #address-cells = <1>; 9866ae6aedSWilliam Zhang #size-cells = <1>; 9966ae6aedSWilliam Zhang ranges = <0 0x81000000 0x8000>; 10066ae6aedSWilliam Zhang 10166ae6aedSWilliam Zhang gic: interrupt-controller@1000 { 10266ae6aedSWilliam Zhang compatible = "arm,cortex-a7-gic"; 10366ae6aedSWilliam Zhang #interrupt-cells = <3>; 10466ae6aedSWilliam Zhang interrupt-controller; 10566ae6aedSWilliam Zhang interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>; 10666ae6aedSWilliam Zhang reg = <0x1000 0x1000>, 10766ae6aedSWilliam Zhang <0x2000 0x2000>, 10866ae6aedSWilliam Zhang <0x4000 0x2000>, 10966ae6aedSWilliam Zhang <0x6000 0x2000>; 11066ae6aedSWilliam Zhang }; 11166ae6aedSWilliam Zhang }; 11266ae6aedSWilliam Zhang 11366ae6aedSWilliam Zhang bus@ff800000 { 11466ae6aedSWilliam Zhang compatible = "simple-bus"; 11566ae6aedSWilliam Zhang #address-cells = <1>; 11666ae6aedSWilliam Zhang #size-cells = <1>; 11766ae6aedSWilliam Zhang ranges = <0 0xff800000 0x800000>; 11866ae6aedSWilliam Zhang 119*e8a74a2aSLinus Walleij watchdog@480 { 120*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-wdt"; 121*e8a74a2aSLinus Walleij reg = <0x480 0x10>; 122*e8a74a2aSLinus Walleij }; 123*e8a74a2aSLinus Walleij 124*e8a74a2aSLinus Walleij watchdog@4c0 { 125*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-wdt"; 126*e8a74a2aSLinus Walleij reg = <0x4c0 0x10>; 127*e8a74a2aSLinus Walleij status = "disabled"; 128*e8a74a2aSLinus Walleij }; 129*e8a74a2aSLinus Walleij 130*e8a74a2aSLinus Walleij /* GPIOs 0 .. 31 */ 131*e8a74a2aSLinus Walleij gpio0: gpio@500 { 132*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 133*e8a74a2aSLinus Walleij reg = <0x500 0x04>, <0x520 0x04>; 134*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 135*e8a74a2aSLinus Walleij gpio-controller; 136*e8a74a2aSLinus Walleij #gpio-cells = <2>; 137*e8a74a2aSLinus Walleij status = "disabled"; 138*e8a74a2aSLinus Walleij }; 139*e8a74a2aSLinus Walleij 140*e8a74a2aSLinus Walleij /* GPIOs 32 .. 63 */ 141*e8a74a2aSLinus Walleij gpio1: gpio@504 { 142*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 143*e8a74a2aSLinus Walleij reg = <0x504 0x04>, <0x524 0x04>; 144*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 145*e8a74a2aSLinus Walleij gpio-controller; 146*e8a74a2aSLinus Walleij #gpio-cells = <2>; 147*e8a74a2aSLinus Walleij status = "disabled"; 148*e8a74a2aSLinus Walleij }; 149*e8a74a2aSLinus Walleij 150*e8a74a2aSLinus Walleij /* GPIOs 64 .. 95 */ 151*e8a74a2aSLinus Walleij gpio2: gpio@508 { 152*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 153*e8a74a2aSLinus Walleij reg = <0x508 0x04>, <0x528 0x04>; 154*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 155*e8a74a2aSLinus Walleij gpio-controller; 156*e8a74a2aSLinus Walleij #gpio-cells = <2>; 157*e8a74a2aSLinus Walleij status = "disabled"; 158*e8a74a2aSLinus Walleij }; 159*e8a74a2aSLinus Walleij 160*e8a74a2aSLinus Walleij /* GPIOs 96 .. 127 */ 161*e8a74a2aSLinus Walleij gpio3: gpio@50c { 162*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 163*e8a74a2aSLinus Walleij reg = <0x50c 0x04>, <0x52c 0x04>; 164*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 165*e8a74a2aSLinus Walleij gpio-controller; 166*e8a74a2aSLinus Walleij #gpio-cells = <2>; 167*e8a74a2aSLinus Walleij status = "disabled"; 168*e8a74a2aSLinus Walleij }; 169*e8a74a2aSLinus Walleij 170*e8a74a2aSLinus Walleij /* GPIOs 128 .. 159 */ 171*e8a74a2aSLinus Walleij gpio4: gpio@510 { 172*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 173*e8a74a2aSLinus Walleij reg = <0x510 0x04>, <0x530 0x04>; 174*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 175*e8a74a2aSLinus Walleij gpio-controller; 176*e8a74a2aSLinus Walleij #gpio-cells = <2>; 177*e8a74a2aSLinus Walleij status = "disabled"; 178*e8a74a2aSLinus Walleij }; 179*e8a74a2aSLinus Walleij 180*e8a74a2aSLinus Walleij /* GPIOs 160 .. 191 */ 181*e8a74a2aSLinus Walleij gpio5: gpio@514 { 182*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 183*e8a74a2aSLinus Walleij reg = <0x514 0x04>, <0x534 0x04>; 184*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 185*e8a74a2aSLinus Walleij gpio-controller; 186*e8a74a2aSLinus Walleij #gpio-cells = <2>; 187*e8a74a2aSLinus Walleij status = "disabled"; 188*e8a74a2aSLinus Walleij }; 189*e8a74a2aSLinus Walleij 190*e8a74a2aSLinus Walleij /* GPIOs 192 .. 223 */ 191*e8a74a2aSLinus Walleij gpio6: gpio@518 { 192*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 193*e8a74a2aSLinus Walleij reg = <0x518 0x04>, <0x538 0x04>; 194*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 195*e8a74a2aSLinus Walleij gpio-controller; 196*e8a74a2aSLinus Walleij #gpio-cells = <2>; 197*e8a74a2aSLinus Walleij status = "disabled"; 198*e8a74a2aSLinus Walleij }; 199*e8a74a2aSLinus Walleij 200*e8a74a2aSLinus Walleij /* GPIOs 224 .. 255 */ 201*e8a74a2aSLinus Walleij gpio7: gpio@51c { 202*e8a74a2aSLinus Walleij compatible = "brcm,bcm6345-gpio"; 203*e8a74a2aSLinus Walleij reg = <0x51c 0x04>, <0x53c 0x04>; 204*e8a74a2aSLinus Walleij reg-names = "dirout", "dat"; 205*e8a74a2aSLinus Walleij gpio-controller; 206*e8a74a2aSLinus Walleij #gpio-cells = <2>; 207*e8a74a2aSLinus Walleij status = "disabled"; 208*e8a74a2aSLinus Walleij }; 209*e8a74a2aSLinus Walleij 210*e8a74a2aSLinus Walleij rng@b80 { 211*e8a74a2aSLinus Walleij compatible = "brcm,iproc-rng200"; 212*e8a74a2aSLinus Walleij reg = <0xb80 0x28>; 213*e8a74a2aSLinus Walleij interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; 214*e8a74a2aSLinus Walleij }; 215*e8a74a2aSLinus Walleij 2167858ddedSWilliam Zhang hsspi: spi@1000 { 2177858ddedSWilliam Zhang #address-cells = <1>; 2187858ddedSWilliam Zhang #size-cells = <0>; 2197858ddedSWilliam Zhang compatible = "brcm,bcm6855-hsspi", "brcm,bcmbca-hsspi-v1.1"; 2207858ddedSWilliam Zhang reg = <0x1000 0x600>, <0x2610 0x4>; 2217858ddedSWilliam Zhang reg-names = "hsspi", "spim-ctrl"; 2227858ddedSWilliam Zhang interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 2237858ddedSWilliam Zhang clocks = <&hsspi_pll &hsspi_pll>; 2247858ddedSWilliam Zhang clock-names = "hsspi", "pll"; 2257858ddedSWilliam Zhang num-cs = <8>; 2267858ddedSWilliam Zhang status = "disabled"; 2277858ddedSWilliam Zhang }; 2287858ddedSWilliam Zhang 229d42d8e82SWilliam Zhang nand_controller: nand-controller@1800 { 230d42d8e82SWilliam Zhang #address-cells = <1>; 231d42d8e82SWilliam Zhang #size-cells = <0>; 232d42d8e82SWilliam Zhang compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.1", "brcm,brcmnand"; 233d42d8e82SWilliam Zhang reg = <0x1800 0x600>, <0x2000 0x10>; 234d42d8e82SWilliam Zhang reg-names = "nand", "nand-int-base"; 235d42d8e82SWilliam Zhang status = "disabled"; 236d42d8e82SWilliam Zhang 237d42d8e82SWilliam Zhang nandcs: nand@0 { 238d42d8e82SWilliam Zhang compatible = "brcm,nandcs"; 239d42d8e82SWilliam Zhang reg = <0>; 240d42d8e82SWilliam Zhang }; 241d42d8e82SWilliam Zhang }; 242d42d8e82SWilliam Zhang 243*e8a74a2aSLinus Walleij leds: led-controller@3000 { 244*e8a74a2aSLinus Walleij #address-cells = <1>; 245*e8a74a2aSLinus Walleij #size-cells = <0>; 246*e8a74a2aSLinus Walleij compatible = "brcm,bcm63138-leds"; 247*e8a74a2aSLinus Walleij reg = <0x3000 0xdc>; 248*e8a74a2aSLinus Walleij status = "disabled"; 249*e8a74a2aSLinus Walleij }; 250*e8a74a2aSLinus Walleij 251*e8a74a2aSLinus Walleij pl081_dma: dma-controller@11000 { 252*e8a74a2aSLinus Walleij compatible = "arm,pl081", "arm,primecell"; 253*e8a74a2aSLinus Walleij // The magic B105F00D info is missing 254*e8a74a2aSLinus Walleij arm,primecell-periphid = <0x00041081>; 255*e8a74a2aSLinus Walleij reg = <0x11000 0x1000>; 256*e8a74a2aSLinus Walleij interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 257*e8a74a2aSLinus Walleij memcpy-burst-size = <256>; 258*e8a74a2aSLinus Walleij memcpy-bus-width = <32>; 259*e8a74a2aSLinus Walleij clocks = <&periph_clk>; 260*e8a74a2aSLinus Walleij clock-names = "apb_pclk"; 261*e8a74a2aSLinus Walleij #dma-cells = <2>; 262*e8a74a2aSLinus Walleij }; 263*e8a74a2aSLinus Walleij 26466ae6aedSWilliam Zhang uart0: serial@12000 { 26566ae6aedSWilliam Zhang compatible = "arm,pl011", "arm,primecell"; 26666ae6aedSWilliam Zhang reg = <0x12000 0x1000>; 26766ae6aedSWilliam Zhang interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 26866ae6aedSWilliam Zhang clocks = <&uart_clk>, <&uart_clk>; 26966ae6aedSWilliam Zhang clock-names = "uartclk", "apb_pclk"; 27066ae6aedSWilliam Zhang status = "disabled"; 27166ae6aedSWilliam Zhang }; 272*e8a74a2aSLinus Walleij 273*e8a74a2aSLinus Walleij uart1: serial@13000 { 274*e8a74a2aSLinus Walleij compatible = "arm,pl011", "arm,primecell"; 275*e8a74a2aSLinus Walleij reg = <0x13000 0x1000>; 276*e8a74a2aSLinus Walleij interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; 277*e8a74a2aSLinus Walleij clocks = <&uart_clk>, <&uart_clk>; 278*e8a74a2aSLinus Walleij clock-names = "uartclk", "apb_pclk"; 279*e8a74a2aSLinus Walleij status = "disabled"; 280*e8a74a2aSLinus Walleij }; 28166ae6aedSWilliam Zhang }; 28266ae6aedSWilliam Zhang}; 283