| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- // SPDX-License-Identifier: (GPL-2.0 OR MIT)
- #include <dt-bindings/interrupt-controller/arm-gic.h>
- / {
- compatible = "brcm,bcm2712";
- #address-cells = <2>;
- #size-cells = <2>;
- interrupt-parent = <&gicv2>;
- clocks {
- /* The oscillator is the root of the clock tree. */
- clk_osc: clk-osc {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-output-names = "osc";
- clock-frequency = <54000000>;
- };
- clk_vpu: clk-vpu {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <750000000>;
- clock-output-names = "vpu-clock";
- };
- clk_uart: clk-uart {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <9216000>;
- clock-output-names = "uart-clock";
- };
- clk_emmc2: clk-emmc2 {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <200000000>;
- clock-output-names = "emmc2-clock";
- };
- };
- cpus: cpus {
- #address-cells = <1>;
- #size-cells = <0>;
- /* Source for L1 d/i cache-line-size, cache-sets, cache-size
- * https://developer.arm.com/documentation/100798/0401/L1-memory-system/About-the-L1-memory-system?lang=en
- * Source for L2 cache-line-size and cache-sets:
- * https://developer.arm.com/documentation/100798/0401/L2-memory-system/About-the-L2-memory-system?lang=en
- * and for cache-size:
- * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712
- */
- cpu0: cpu@0 {
- device_type = "cpu";
- compatible = "arm,cortex-a76";
- reg = <0x000>;
- enable-method = "psci";
- d-cache-size = <0x10000>;
- d-cache-line-size = <64>;
- d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- i-cache-size = <0x10000>;
- i-cache-line-size = <64>;
- i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- next-level-cache = <&l2_cache_l0>;
- l2_cache_l0: l2-cache-l0 {
- compatible = "cache";
- cache-size = <0x80000>;
- cache-line-size = <64>;
- cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
- cache-level = <2>;
- cache-unified;
- next-level-cache = <&l3_cache>;
- };
- };
- cpu1: cpu@1 {
- device_type = "cpu";
- compatible = "arm,cortex-a76";
- reg = <0x100>;
- enable-method = "psci";
- d-cache-size = <0x10000>;
- d-cache-line-size = <64>;
- d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- i-cache-size = <0x10000>;
- i-cache-line-size = <64>;
- i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- next-level-cache = <&l2_cache_l1>;
- l2_cache_l1: l2-cache-l1 {
- compatible = "cache";
- cache-size = <0x80000>;
- cache-line-size = <64>;
- cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
- cache-level = <2>;
- cache-unified;
- next-level-cache = <&l3_cache>;
- };
- };
- cpu2: cpu@2 {
- device_type = "cpu";
- compatible = "arm,cortex-a76";
- reg = <0x200>;
- enable-method = "psci";
- d-cache-size = <0x10000>;
- d-cache-line-size = <64>;
- d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- i-cache-size = <0x10000>;
- i-cache-line-size = <64>;
- i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- next-level-cache = <&l2_cache_l2>;
- l2_cache_l2: l2-cache-l2 {
- compatible = "cache";
- cache-size = <0x80000>;
- cache-line-size = <64>;
- cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
- cache-level = <2>;
- cache-unified;
- next-level-cache = <&l3_cache>;
- };
- };
- cpu3: cpu@3 {
- device_type = "cpu";
- compatible = "arm,cortex-a76";
- reg = <0x300>;
- enable-method = "psci";
- d-cache-size = <0x10000>;
- d-cache-line-size = <64>;
- d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- i-cache-size = <0x10000>;
- i-cache-line-size = <64>;
- i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
- next-level-cache = <&l2_cache_l3>;
- l2_cache_l3: l2-cache-l3 {
- compatible = "cache";
- cache-size = <0x80000>;
- cache-line-size = <64>;
- cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
- cache-level = <2>;
- cache-unified;
- next-level-cache = <&l3_cache>;
- };
- };
- /* Source for cache-line-size and cache-sets:
- * https://developer.arm.com/documentation/100453/0401/L3-cache?lang=en
- * Source for cache-size:
- * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712
- */
- l3_cache: l3-cache {
- compatible = "cache";
- cache-size = <0x200000>;
- cache-line-size = <64>;
- cache-sets = <2048>; // 2MiB(size)/64(line-size)=32768ways/16-way set
- cache-level = <3>;
- cache-unified;
- };
- };
- psci {
- method = "smc";
- compatible = "arm,psci-1.0", "arm,psci-0.2";
- };
- rmem: reserved-memory {
- ranges;
- #address-cells = <2>;
- #size-cells = <2>;
- atf@0 {
- reg = <0x0 0x0 0x0 0x80000>;
- no-map;
- };
- cma: linux,cma {
- compatible = "shared-dma-pool";
- size = <0x0 0x4000000>; /* 64MB */
- reusable;
- linux,cma-default;
- alloc-ranges = <0x0 0x00000000 0x0 0x40000000>;
- };
- };
- soc: soc@107c000000 {
- compatible = "simple-bus";
- ranges = <0x00000000 0x10 0x00000000 0x80000000>;
- #address-cells = <1>;
- #size-cells = <1>;
- sdio1: mmc@fff000 {
- compatible = "brcm,bcm2712-sdhci",
- "brcm,sdhci-brcmstb";
- reg = <0x00fff000 0x260>,
- <0x00fff400 0x200>;
- reg-names = "host", "cfg";
- interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&clk_emmc2>;
- clock-names = "sw_sdio";
- mmc-ddr-3_3v;
- };
- system_timer: timer@7c003000 {
- compatible = "brcm,bcm2835-system-timer";
- reg = <0x7c003000 0x1000>;
- interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
- clock-frequency = <1000000>;
- };
- mailbox: mailbox@7c013880 {
- compatible = "brcm,bcm2835-mbox";
- reg = <0x7c013880 0x40>;
- interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
- #mbox-cells = <0>;
- };
- local_intc: interrupt-controller@7cd00000 {
- compatible = "brcm,bcm2836-l1-intc";
- reg = <0x7cd00000 0x100>;
- };
- uart10: serial@7d001000 {
- compatible = "arm,pl011", "arm,primecell";
- reg = <0x7d001000 0x200>;
- interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&clk_uart>, <&clk_vpu>;
- clock-names = "uartclk", "apb_pclk";
- arm,primecell-periphid = <0x00341011>;
- status = "disabled";
- };
- interrupt-controller@7d517000 {
- compatible = "brcm,bcm7271-l2-intc";
- reg = <0x7d517000 0x10>;
- interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-controller;
- #interrupt-cells = <1>;
- };
- gio_aon: gpio@7d517c00 {
- compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio";
- reg = <0x7d517c00 0x40>;
- gpio-controller;
- #gpio-cells = <2>;
- brcm,gpio-bank-widths = <17 6>;
- /* The lack of 'interrupt-controller' property here is intended:
- * don't use GIO_AON as an interrupt controller because it will
- * clash with the firmware monitoring the PMIC interrupt via the VPU.
- */
- };
- gicv2: interrupt-controller@7fff9000 {
- compatible = "arm,gic-400";
- reg = <0x7fff9000 0x1000>,
- <0x7fffa000 0x2000>,
- <0x7fffc000 0x2000>,
- <0x7fffe000 0x2000>;
- interrupt-controller;
- #address-cells = <0>;
- interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
- IRQ_TYPE_LEVEL_HIGH)>;
- #interrupt-cells = <3>;
- };
- };
- timer {
- compatible = "arm,armv8-timer";
- interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
- IRQ_TYPE_LEVEL_LOW)>,
- <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
- IRQ_TYPE_LEVEL_LOW)>,
- <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
- IRQ_TYPE_LEVEL_LOW)>,
- <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
- IRQ_TYPE_LEVEL_LOW)>,
- <GIC_PPI 12 (GIC_CPU_MASK_SIMPLE(4) |
- IRQ_TYPE_LEVEL_LOW)>;
- };
- };
|