1724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0 2724ba675SRob Herring/* 3724ba675SRob Herring * Broadcom BCM63138 DSL SoCs Device Tree 4724ba675SRob Herring */ 5724ba675SRob Herring 6724ba675SRob Herring#include <dt-bindings/interrupt-controller/arm-gic.h> 7724ba675SRob Herring#include <dt-bindings/interrupt-controller/irq.h> 8724ba675SRob Herring 9724ba675SRob Herring/ { 10724ba675SRob Herring #address-cells = <1>; 11724ba675SRob Herring #size-cells = <1>; 12724ba675SRob Herring compatible = "brcm,bcm63138", "brcm,bcmbca"; 13724ba675SRob Herring model = "Broadcom BCM963138 Reference Board"; 14724ba675SRob Herring interrupt-parent = <&gic>; 15724ba675SRob Herring 16724ba675SRob Herring aliases { 17724ba675SRob Herring uart0 = &serial0; 18724ba675SRob Herring uart1 = &serial1; 19724ba675SRob Herring }; 20724ba675SRob Herring 21724ba675SRob Herring cpus { 22724ba675SRob Herring #address-cells = <1>; 23724ba675SRob Herring #size-cells = <0>; 24724ba675SRob Herring 25724ba675SRob Herring cpu@0 { 26724ba675SRob Herring device_type = "cpu"; 27724ba675SRob Herring compatible = "arm,cortex-a9"; 28724ba675SRob Herring next-level-cache = <&L2>; 29724ba675SRob Herring reg = <0>; 30724ba675SRob Herring enable-method = "brcm,bcm63138"; 31724ba675SRob Herring }; 32724ba675SRob Herring 33724ba675SRob Herring cpu@1 { 34724ba675SRob Herring device_type = "cpu"; 35724ba675SRob Herring compatible = "arm,cortex-a9"; 36724ba675SRob Herring next-level-cache = <&L2>; 37724ba675SRob Herring reg = <1>; 38724ba675SRob Herring enable-method = "brcm,bcm63138"; 39724ba675SRob Herring resets = <&pmb0 4 1>; 40724ba675SRob Herring }; 41724ba675SRob Herring }; 42724ba675SRob Herring 43724ba675SRob Herring clocks { 44724ba675SRob Herring /* UBUS peripheral clock */ 45724ba675SRob Herring periph_clk: periph_clk { 46724ba675SRob Herring #clock-cells = <0>; 47724ba675SRob Herring compatible = "fixed-clock"; 48724ba675SRob Herring clock-frequency = <50000000>; 49724ba675SRob Herring clock-output-names = "periph"; 50724ba675SRob Herring }; 51724ba675SRob Herring 52724ba675SRob Herring /* peripheral clock for system timer */ 53724ba675SRob Herring axi_clk: axi_clk { 54724ba675SRob Herring #clock-cells = <0>; 55724ba675SRob Herring compatible = "fixed-factor-clock"; 56724ba675SRob Herring clocks = <&armpll>; 57724ba675SRob Herring clock-div = <2>; 58724ba675SRob Herring clock-mult = <1>; 59724ba675SRob Herring }; 60724ba675SRob Herring 61724ba675SRob Herring /* APB bus clock */ 62724ba675SRob Herring apb_clk: apb_clk { 63724ba675SRob Herring #clock-cells = <0>; 64724ba675SRob Herring compatible = "fixed-factor-clock"; 65724ba675SRob Herring clocks = <&armpll>; 66724ba675SRob Herring clock-div = <4>; 67724ba675SRob Herring clock-mult = <1>; 68724ba675SRob Herring }; 69724ba675SRob Herring 70724ba675SRob Herring hsspi_pll: hsspi-pll { 71724ba675SRob Herring compatible = "fixed-clock"; 72724ba675SRob Herring #clock-cells = <0>; 73724ba675SRob Herring clock-frequency = <400000000>; 74724ba675SRob Herring }; 75724ba675SRob Herring }; 76724ba675SRob Herring 77724ba675SRob Herring /* ARM bus */ 78724ba675SRob Herring axi@80000000 { 79724ba675SRob Herring compatible = "simple-bus"; 80724ba675SRob Herring ranges = <0 0x80000000 0x784000>; 81724ba675SRob Herring #address-cells = <1>; 82724ba675SRob Herring #size-cells = <1>; 83724ba675SRob Herring 84724ba675SRob Herring L2: cache-controller@1d000 { 85724ba675SRob Herring compatible = "arm,pl310-cache"; 86724ba675SRob Herring reg = <0x1d000 0x1000>; 87724ba675SRob Herring cache-unified; 88724ba675SRob Herring cache-level = <2>; 89724ba675SRob Herring cache-size = <524288>; 90724ba675SRob Herring cache-sets = <1024>; 91724ba675SRob Herring cache-line-size = <32>; 92724ba675SRob Herring interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>; 93724ba675SRob Herring }; 94724ba675SRob Herring 95724ba675SRob Herring scu: scu@1e000 { 96724ba675SRob Herring compatible = "arm,cortex-a9-scu"; 97724ba675SRob Herring reg = <0x1e000 0x100>; 98724ba675SRob Herring }; 99724ba675SRob Herring 100724ba675SRob Herring gic: interrupt-controller@1f000 { 101724ba675SRob Herring compatible = "arm,cortex-a9-gic"; 102724ba675SRob Herring reg = <0x1f000 0x1000 103724ba675SRob Herring 0x1e100 0x100>; 104724ba675SRob Herring #interrupt-cells = <3>; 105724ba675SRob Herring #address-cells = <0>; 106724ba675SRob Herring interrupt-controller; 107724ba675SRob Herring }; 108724ba675SRob Herring 109724ba675SRob Herring global_timer: timer@1e200 { 110724ba675SRob Herring compatible = "arm,cortex-a9-global-timer"; 111724ba675SRob Herring reg = <0x1e200 0x20>; 112724ba675SRob Herring interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>; 113724ba675SRob Herring clocks = <&axi_clk>; 114724ba675SRob Herring }; 115724ba675SRob Herring 116724ba675SRob Herring local_timer: local-timer@1e600 { 117724ba675SRob Herring compatible = "arm,cortex-a9-twd-timer"; 118724ba675SRob Herring reg = <0x1e600 0x20>; 119724ba675SRob Herring interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | 120724ba675SRob Herring IRQ_TYPE_EDGE_RISING)>; 121724ba675SRob Herring clocks = <&axi_clk>; 122724ba675SRob Herring }; 123724ba675SRob Herring 124724ba675SRob Herring twd_watchdog: watchdog@1e620 { 125724ba675SRob Herring compatible = "arm,cortex-a9-twd-wdt"; 126724ba675SRob Herring reg = <0x1e620 0x20>; 127724ba675SRob Herring interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | 128724ba675SRob Herring IRQ_TYPE_LEVEL_HIGH)>; 129724ba675SRob Herring }; 130724ba675SRob Herring 131724ba675SRob Herring armpll: armpll@20000 { 132724ba675SRob Herring #clock-cells = <0>; 133724ba675SRob Herring compatible = "brcm,bcm63138-armpll"; 134724ba675SRob Herring clocks = <&periph_clk>; 135724ba675SRob Herring reg = <0x20000 0xf00>; 136724ba675SRob Herring }; 137724ba675SRob Herring 138724ba675SRob Herring pmb0: reset-controller@4800c0 { 139724ba675SRob Herring compatible = "brcm,bcm63138-pmb"; 140724ba675SRob Herring reg = <0x4800c0 0x10>; 141724ba675SRob Herring #reset-cells = <2>; 142724ba675SRob Herring }; 143724ba675SRob Herring 144724ba675SRob Herring pmb1: reset-controller@4800e0 { 145724ba675SRob Herring compatible = "brcm,bcm63138-pmb"; 146724ba675SRob Herring reg = <0x4800e0 0x10>; 147724ba675SRob Herring #reset-cells = <2>; 148724ba675SRob Herring }; 149724ba675SRob Herring 150724ba675SRob Herring ahci: sata@a000 { 151724ba675SRob Herring compatible = "brcm,bcm63138-ahci", "brcm,sata3-ahci"; 152724ba675SRob Herring reg-names = "ahci", "top-ctrl"; 153724ba675SRob Herring reg = <0xa000 0x9ac>, <0x8040 0x24>; 154724ba675SRob Herring interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; 155724ba675SRob Herring #address-cells = <1>; 156724ba675SRob Herring #size-cells = <0>; 157724ba675SRob Herring resets = <&pmb0 3 1>; 158724ba675SRob Herring reset-names = "ahci"; 159724ba675SRob Herring status = "disabled"; 160724ba675SRob Herring 161724ba675SRob Herring sata0: sata-port@0 { 162724ba675SRob Herring reg = <0>; 163724ba675SRob Herring phys = <&sata_phy0>; 164724ba675SRob Herring }; 165724ba675SRob Herring }; 166724ba675SRob Herring 167724ba675SRob Herring sata_phy: sata-phy@8100 { 168724ba675SRob Herring compatible = "brcm,bcm63138-sata-phy", "brcm,phy-sata3"; 169724ba675SRob Herring reg = <0x8100 0x1e00>; 170724ba675SRob Herring reg-names = "phy"; 171724ba675SRob Herring #address-cells = <1>; 172724ba675SRob Herring #size-cells = <0>; 173724ba675SRob Herring status = "disabled"; 174724ba675SRob Herring 175724ba675SRob Herring sata_phy0: sata-phy@0 { 176724ba675SRob Herring reg = <0>; 177724ba675SRob Herring #phy-cells = <0>; 178724ba675SRob Herring }; 179724ba675SRob Herring }; 180724ba675SRob Herring }; 181724ba675SRob Herring 182724ba675SRob Herring /* Legacy UBUS base */ 183724ba675SRob Herring ubus@fffe8000 { 184724ba675SRob Herring compatible = "simple-bus"; 185724ba675SRob Herring #address-cells = <1>; 186724ba675SRob Herring #size-cells = <1>; 187724ba675SRob Herring ranges = <0 0xfffe8000 0x8100>; 188724ba675SRob Herring 189724ba675SRob Herring timer: timer@80 { 190724ba675SRob Herring compatible = "brcm,bcm6328-timer", "syscon"; 191724ba675SRob Herring reg = <0x80 0x3c>; 192724ba675SRob Herring }; 193724ba675SRob Herring 194724ba675SRob Herring serial0: serial@600 { 195724ba675SRob Herring compatible = "brcm,bcm6345-uart"; 196724ba675SRob Herring reg = <0x600 0x1b>; 197724ba675SRob Herring interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 198724ba675SRob Herring clocks = <&periph_clk>; 199724ba675SRob Herring clock-names = "periph"; 200724ba675SRob Herring status = "disabled"; 201724ba675SRob Herring }; 202724ba675SRob Herring 203724ba675SRob Herring serial1: serial@620 { 204724ba675SRob Herring compatible = "brcm,bcm6345-uart"; 205724ba675SRob Herring reg = <0x620 0x1b>; 206724ba675SRob Herring interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; 207724ba675SRob Herring clocks = <&periph_clk>; 208724ba675SRob Herring clock-names = "periph"; 209724ba675SRob Herring status = "disabled"; 210724ba675SRob Herring }; 211724ba675SRob Herring 212724ba675SRob Herring hsspi: spi@1000 { 213724ba675SRob Herring #address-cells = <1>; 214724ba675SRob Herring #size-cells = <0>; 215724ba675SRob Herring compatible = "brcm,bcm63138-hsspi", "brcm,bcmbca-hsspi-v1.0"; 216724ba675SRob Herring reg = <0x1000 0x600>; 217724ba675SRob Herring interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 218724ba675SRob Herring clocks = <&hsspi_pll &hsspi_pll>; 219724ba675SRob Herring clock-names = "hsspi", "pll"; 220724ba675SRob Herring num-cs = <8>; 221724ba675SRob Herring status = "disabled"; 222724ba675SRob Herring }; 223724ba675SRob Herring 224724ba675SRob Herring nand_controller: nand-controller@2000 { 225724ba675SRob Herring #address-cells = <1>; 226724ba675SRob Herring #size-cells = <0>; 227724ba675SRob Herring compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand"; 228724ba675SRob Herring reg = <0x2000 0x600>, <0xf0 0x10>; 229724ba675SRob Herring reg-names = "nand", "nand-int-base"; 230724ba675SRob Herring status = "disabled"; 231724ba675SRob Herring interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; 232*d42d8e82SWilliam Zhang interrupt-names = "nand_ctlrdy"; 233*d42d8e82SWilliam Zhang 234*d42d8e82SWilliam Zhang nandcs: nand@0 { 235*d42d8e82SWilliam Zhang compatible = "brcm,nandcs"; 236*d42d8e82SWilliam Zhang reg = <0>; 237*d42d8e82SWilliam Zhang }; 238724ba675SRob Herring }; 239724ba675SRob Herring 240dadc77c9SRafał Miłecki serial@4400 { 241dadc77c9SRafał Miłecki compatible = "brcm,bcm63138-hs-uart", "brcm,bcmbca-hs-uart"; 242dadc77c9SRafał Miłecki reg = <0x4400 0x1e0>; 243dadc77c9SRafał Miłecki interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; 244dadc77c9SRafał Miłecki }; 245dadc77c9SRafał Miłecki 246724ba675SRob Herring bootlut: bootlut@8000 { 247724ba675SRob Herring compatible = "brcm,bcm63138-bootlut"; 248724ba675SRob Herring reg = <0x8000 0x50>; 249724ba675SRob Herring }; 250724ba675SRob Herring 251724ba675SRob Herring reboot { 252724ba675SRob Herring compatible = "syscon-reboot"; 253724ba675SRob Herring regmap = <&timer>; 254724ba675SRob Herring offset = <0x34>; 255724ba675SRob Herring mask = <1>; 256724ba675SRob Herring }; 257724ba675SRob Herring }; 258724ba675SRob Herring}; 259