162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci#include "bcm283x.dtsi" 362306a36Sopenharmony_ci#include "bcm2835-common.dtsi" 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci/ { 662306a36Sopenharmony_ci compatible = "brcm,bcm2836"; 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci soc { 962306a36Sopenharmony_ci ranges = <0x7e000000 0x3f000000 0x1000000>, 1062306a36Sopenharmony_ci <0x40000000 0x40000000 0x00001000>; 1162306a36Sopenharmony_ci dma-ranges = <0xc0000000 0x00000000 0x3f000000>; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci local_intc: interrupt-controller@40000000 { 1462306a36Sopenharmony_ci compatible = "brcm,bcm2836-l1-intc"; 1562306a36Sopenharmony_ci reg = <0x40000000 0x100>; 1662306a36Sopenharmony_ci interrupt-controller; 1762306a36Sopenharmony_ci #interrupt-cells = <2>; 1862306a36Sopenharmony_ci interrupt-parent = <&local_intc>; 1962306a36Sopenharmony_ci }; 2062306a36Sopenharmony_ci }; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci arm-pmu { 2362306a36Sopenharmony_ci compatible = "arm,cortex-a7-pmu"; 2462306a36Sopenharmony_ci interrupt-parent = <&local_intc>; 2562306a36Sopenharmony_ci interrupts = <9 IRQ_TYPE_LEVEL_HIGH>; 2662306a36Sopenharmony_ci }; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci timer { 2962306a36Sopenharmony_ci compatible = "arm,armv7-timer"; 3062306a36Sopenharmony_ci interrupt-parent = <&local_intc>; 3162306a36Sopenharmony_ci interrupts = <0 IRQ_TYPE_LEVEL_HIGH>, // PHYS_SECURE_PPI 3262306a36Sopenharmony_ci <1 IRQ_TYPE_LEVEL_HIGH>, // PHYS_NONSECURE_PPI 3362306a36Sopenharmony_ci <3 IRQ_TYPE_LEVEL_HIGH>, // VIRT_PPI 3462306a36Sopenharmony_ci <2 IRQ_TYPE_LEVEL_HIGH>; // HYP_PPI 3562306a36Sopenharmony_ci always-on; 3662306a36Sopenharmony_ci }; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci cpus: cpus { 3962306a36Sopenharmony_ci #address-cells = <1>; 4062306a36Sopenharmony_ci #size-cells = <0>; 4162306a36Sopenharmony_ci enable-method = "brcm,bcm2836-smp"; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci /* Source for d/i-cache-line-size and d/i-cache-sets 4462306a36Sopenharmony_ci * https://developer.arm.com/documentation/ddi0464/f/L1-Memory-System 4562306a36Sopenharmony_ci * /About-the-L1-memory-system?lang=en 4662306a36Sopenharmony_ci * 4762306a36Sopenharmony_ci * Source for d/i-cache-size 4862306a36Sopenharmony_ci * https://forums.raspberrypi.com/viewtopic.php?t=98428 4962306a36Sopenharmony_ci */ 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci v7_cpu0: cpu@0 { 5262306a36Sopenharmony_ci device_type = "cpu"; 5362306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 5462306a36Sopenharmony_ci reg = <0xf00>; 5562306a36Sopenharmony_ci clock-frequency = <800000000>; 5662306a36Sopenharmony_ci d-cache-size = <0x8000>; 5762306a36Sopenharmony_ci d-cache-line-size = <64>; 5862306a36Sopenharmony_ci d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set 5962306a36Sopenharmony_ci i-cache-size = <0x8000>; 6062306a36Sopenharmony_ci i-cache-line-size = <32>; 6162306a36Sopenharmony_ci i-cache-sets = <512>; // 32KiB(size)/32(line-size)=1024ways/2-way set 6262306a36Sopenharmony_ci next-level-cache = <&l2>; 6362306a36Sopenharmony_ci }; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci v7_cpu1: cpu@1 { 6662306a36Sopenharmony_ci device_type = "cpu"; 6762306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 6862306a36Sopenharmony_ci reg = <0xf01>; 6962306a36Sopenharmony_ci clock-frequency = <800000000>; 7062306a36Sopenharmony_ci d-cache-size = <0x8000>; 7162306a36Sopenharmony_ci d-cache-line-size = <64>; 7262306a36Sopenharmony_ci d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set 7362306a36Sopenharmony_ci i-cache-size = <0x8000>; 7462306a36Sopenharmony_ci i-cache-line-size = <32>; 7562306a36Sopenharmony_ci i-cache-sets = <512>; // 32KiB(size)/32(line-size)=1024ways/2-way set 7662306a36Sopenharmony_ci next-level-cache = <&l2>; 7762306a36Sopenharmony_ci }; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci v7_cpu2: cpu@2 { 8062306a36Sopenharmony_ci device_type = "cpu"; 8162306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 8262306a36Sopenharmony_ci reg = <0xf02>; 8362306a36Sopenharmony_ci clock-frequency = <800000000>; 8462306a36Sopenharmony_ci d-cache-size = <0x8000>; 8562306a36Sopenharmony_ci d-cache-line-size = <64>; 8662306a36Sopenharmony_ci d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set 8762306a36Sopenharmony_ci i-cache-size = <0x8000>; 8862306a36Sopenharmony_ci i-cache-line-size = <32>; 8962306a36Sopenharmony_ci i-cache-sets = <512>; // 32KiB(size)/32(line-size)=1024ways/2-way set 9062306a36Sopenharmony_ci next-level-cache = <&l2>; 9162306a36Sopenharmony_ci }; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci v7_cpu3: cpu@3 { 9462306a36Sopenharmony_ci device_type = "cpu"; 9562306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 9662306a36Sopenharmony_ci reg = <0xf03>; 9762306a36Sopenharmony_ci clock-frequency = <800000000>; 9862306a36Sopenharmony_ci d-cache-size = <0x8000>; 9962306a36Sopenharmony_ci d-cache-line-size = <64>; 10062306a36Sopenharmony_ci d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set 10162306a36Sopenharmony_ci i-cache-size = <0x8000>; 10262306a36Sopenharmony_ci i-cache-line-size = <32>; 10362306a36Sopenharmony_ci i-cache-sets = <512>; // 32KiB(size)/32(line-size)=1024ways/2-way set 10462306a36Sopenharmony_ci next-level-cache = <&l2>; 10562306a36Sopenharmony_ci }; 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci /* Source for cache-line-size + cache-sets 10862306a36Sopenharmony_ci * https://developer.arm.com/documentation/ddi0464/f/L2-Memory-System 10962306a36Sopenharmony_ci * /About-the-L2-Memory-system?lang=en 11062306a36Sopenharmony_ci * Source for cache-size 11162306a36Sopenharmony_ci * https://forums.raspberrypi.com/viewtopic.php?t=98428 11262306a36Sopenharmony_ci */ 11362306a36Sopenharmony_ci l2: l2-cache0 { 11462306a36Sopenharmony_ci compatible = "cache"; 11562306a36Sopenharmony_ci cache-unified; 11662306a36Sopenharmony_ci cache-size = <0x80000>; 11762306a36Sopenharmony_ci cache-line-size = <64>; 11862306a36Sopenharmony_ci cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set 11962306a36Sopenharmony_ci cache-level = <2>; 12062306a36Sopenharmony_ci }; 12162306a36Sopenharmony_ci }; 12262306a36Sopenharmony_ci}; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci/* Make the BCM2835-style global interrupt controller be a child of the 12562306a36Sopenharmony_ci * CPU-local interrupt controller. 12662306a36Sopenharmony_ci */ 12762306a36Sopenharmony_ci&intc { 12862306a36Sopenharmony_ci compatible = "brcm,bcm2836-armctrl-ic"; 12962306a36Sopenharmony_ci reg = <0x7e00b200 0x200>; 13062306a36Sopenharmony_ci interrupt-parent = <&local_intc>; 13162306a36Sopenharmony_ci interrupts = <8 IRQ_TYPE_LEVEL_HIGH>; 13262306a36Sopenharmony_ci}; 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci&cpu_thermal { 13562306a36Sopenharmony_ci coefficients = <(-538) 407000>; 13662306a36Sopenharmony_ci}; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci/* enable thermal sensor with the correct compatible property set */ 13962306a36Sopenharmony_ci&thermal { 14062306a36Sopenharmony_ci compatible = "brcm,bcm2836-thermal"; 14162306a36Sopenharmony_ci status = "okay"; 14262306a36Sopenharmony_ci}; 143