Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,3 @@
# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_PENSANDO) += elba-asic.dtb
dtb-$(CONFIG_ARCH_SEATTLE) += amd-overdrive-rev-b0.dtb amd-overdrive-rev-b1.dtb
@@ -0,0 +1,75 @@
// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle Overdrive Development Board
* Note: For Seattle Rev.B0
*
* Copyright (C) 2015 Advanced Micro Devices, Inc.
*/
/dts-v1/;
/include/ "amd-seattle-soc.dtsi"
/include/ "amd-seattle-cpus.dtsi"
/ {
model = "AMD Seattle (Rev.B0) Development Board (Overdrive)";
compatible = "amd,seattle-overdrive", "amd,seattle";
chosen {
stdout-path = &serial0;
};
psci {
compatible = "arm,psci-0.2";
method = "smc";
};
};
&ccp0 {
status = "okay";
};
/**
* NOTE: In Rev.B, gpio0 is reserved.
*/
&gpio1 {
status = "okay";
};
&gpio4 {
status = "okay";
};
&i2c0 {
status = "okay";
};
&i2c1 {
status = "okay";
};
&pcie0 {
status = "okay";
};
&spi0 {
status = "okay";
};
&spi1 {
status = "okay";
sdcard0: mmc@0 {
compatible = "mmc-spi-slot";
reg = <0>;
spi-max-frequency = <20000000>;
voltage-ranges = <3200 3400>;
pl022,interface = <0>;
pl022,com-mode = <0x0>;
pl022,rx-level-trig = <0>;
pl022,tx-level-trig = <0>;
};
};
&smb0 {
/include/ "amd-seattle-xgbe-b.dtsi"
};
@@ -0,0 +1,32 @@
// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle Overdrive Development Board
* Note: For Seattle Rev.B1
*
* Copyright (C) 2015 Advanced Micro Devices, Inc.
*/
/dts-v1/;
/include/ "amd-overdrive-rev-b0.dts"
/ {
model = "AMD Seattle (Rev.B1) Development Board (Overdrive)";
};
&gpio2 {
status = "okay";
};
&gpio3 {
status = "okay";
};
&sata1 {
status = "okay";
};
&ipmi_kcs {
status = "okay";
};
@@ -0,0 +1,43 @@
// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle Clocks
*
* Copyright (C) 2014 Advanced Micro Devices, Inc.
*/
adl3clk_100mhz: uartspiclk_100mhz: clock-100000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <100000000>;
clock-output-names = "adl3clk_100mhz";
};
ccpclk_375mhz: clock-375000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <375000000>;
clock-output-names = "ccpclk_375mhz";
};
sataclk_333mhz: clock-333000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <333000000>;
clock-output-names = "sataclk_333mhz";
};
dmaclk_500mhz: pcieclk_500mhz: clock-500000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <500000000>;
clock-output-names = "pcieclk_500mhz";
};
xgmacclk0_dma_250mhz: xgmacclk0_ptp_250mhz: xgmacclk1_dma_250mhz: xgmacclk1_ptp_250mhz:
miscclk_250mhz: clock-250000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <250000000>;
clock-output-names = "miscclk_250mhz";
};
@@ -0,0 +1,224 @@
// SPDX-License-Identifier: GPL-2.0
/ {
cpus {
#address-cells = <0x1>;
#size-cells = <0x0>;
cpu-map {
cluster0 {
core0 {
cpu = <&CPU0>;
};
core1 {
cpu = <&CPU1>;
};
};
cluster1 {
core0 {
cpu = <&CPU2>;
};
core1 {
cpu = <&CPU3>;
};
};
cluster2 {
core0 {
cpu = <&CPU4>;
};
core1 {
cpu = <&CPU5>;
};
};
cluster3 {
core0 {
cpu = <&CPU6>;
};
core1 {
cpu = <&CPU7>;
};
};
};
CPU0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x0>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_0>;
};
CPU1: cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x1>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_0>;
};
CPU2: cpu@100 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x100>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_1>;
};
CPU3: cpu@101 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x101>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_1>;
};
CPU4: cpu@200 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x200>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_2>;
};
CPU5: cpu@201 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x201>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_2>;
};
CPU6: cpu@300 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x300>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_3>;
};
CPU7: cpu@301 {
device_type = "cpu";
compatible = "arm,cortex-a57";
reg = <0x301>;
enable-method = "psci";
i-cache-size = <0xC000>;
i-cache-line-size = <64>;
i-cache-sets = <256>;
d-cache-size = <0x8000>;
d-cache-line-size = <64>;
d-cache-sets = <256>;
l2-cache = <&L2_3>;
};
};
L2_0: l2-cache0 {
cache-size = <0x100000>;
cache-line-size = <64>;
cache-sets = <1024>;
cache-unified;
next-level-cache = <&L3>;
};
L2_1: l2-cache1 {
cache-size = <0x100000>;
cache-line-size = <64>;
cache-sets = <1024>;
cache-unified;
next-level-cache = <&L3>;
};
L2_2: l2-cache2 {
cache-size = <0x100000>;
cache-line-size = <64>;
cache-sets = <1024>;
cache-unified;
next-level-cache = <&L3>;
};
L2_3: l2-cache3 {
cache-size = <0x100000>;
cache-line-size = <64>;
cache-sets = <1024>;
cache-unified;
next-level-cache = <&L3>;
};
L3: l3-cache {
cache-level = <3>;
cache-size = <0x800000>;
cache-line-size = <64>;
cache-sets = <8192>;
cache-unified;
};
pmu {
compatible = "arm,cortex-a57-pmu";
interrupts = <0x0 0x7 0x4>,
<0x0 0x8 0x4>,
<0x0 0x9 0x4>,
<0x0 0xa 0x4>,
<0x0 0xb 0x4>,
<0x0 0xc 0x4>,
<0x0 0xd 0x4>,
<0x0 0xe 0x4>;
interrupt-affinity = <&CPU0>,
<&CPU1>,
<&CPU2>,
<&CPU3>,
<&CPU4>,
<&CPU5>,
<&CPU6>,
<&CPU7>;
};
};
@@ -0,0 +1,283 @@
// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle SoC
*
* Copyright (C) 2014 Advanced Micro Devices, Inc.
*/
/ {
compatible = "amd,seattle";
interrupt-parent = <&gic0>;
#address-cells = <2>;
#size-cells = <2>;
/include/ "amd-seattle-clks.dtsi"
gic0: interrupt-controller@e1101000 {
compatible = "arm,gic-400", "arm,cortex-a15-gic";
interrupt-controller;
#interrupt-cells = <3>;
#address-cells = <2>;
#size-cells = <2>;
reg = <0x0 0xe1110000 0 0x1000>,
<0x0 0xe112f000 0 0x2000>,
<0x0 0xe1140000 0 0x2000>,
<0x0 0xe1160000 0 0x2000>;
interrupts = <1 9 0xf04>;
ranges = <0 0 0 0xe1100000 0 0x100000>;
v2m0: v2m@e0080000 {
compatible = "arm,gic-v2m-frame";
msi-controller;
reg = <0x0 0x00080000 0 0x1000>;
};
};
timer {
compatible = "arm,armv8-timer";
interrupts = <1 13 0xff04>,
<1 14 0xff04>,
<1 11 0xff04>,
<1 10 0xff04>;
};
smb0: bus {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
/*
* dma-ranges is 40-bit address space containing:
* - GICv2m MSI register is at 0xe0080000
* - DRAM range [0x8000000000 to 0xffffffffff]
*/
dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
sata0: sata@e0300000 {
compatible = "snps,dwc-ahci";
reg = <0 0xe0300000 0 0xf0000>;
interrupts = <0 355 4>;
clocks = <&sataclk_333mhz>;
iommus = <&sata0_smmu 0x0 0x1f>;
dma-coherent;
};
/* This is for Rev B only */
sata1: sata@e0d00000 {
status = "disabled";
compatible = "snps,dwc-ahci";
reg = <0 0xe0d00000 0 0xf0000>;
interrupts = <0 354 4>;
clocks = <&sataclk_333mhz>;
iommus = <&sata1_smmu 0x0e>,
<&sata1_smmu 0x0f>,
<&sata1_smmu 0x1e>;
dma-coherent;
};
sata0_smmu: iommu@e0200000 {
compatible = "arm,mmu-401";
reg = <0 0xe0200000 0 0x10000>;
#global-interrupts = <1>;
interrupts = <0 332 4>, <0 332 4>;
#iommu-cells = <2>;
dma-coherent;
};
sata1_smmu: iommu@e0c00000 {
compatible = "arm,mmu-401";
reg = <0 0xe0c00000 0 0x10000>;
#global-interrupts = <1>;
interrupts = <0 331 4>, <0 331 4>;
#iommu-cells = <1>;
dma-coherent;
};
i2c0: i2c@e1000000 {
status = "disabled";
compatible = "snps,designware-i2c";
reg = <0 0xe1000000 0 0x1000>;
interrupts = <0 357 4>;
clocks = <&miscclk_250mhz>;
};
i2c1: i2c@e0050000 {
status = "disabled";
compatible = "snps,designware-i2c";
reg = <0 0xe0050000 0 0x1000>;
interrupts = <0 340 4>;
clocks = <&miscclk_250mhz>;
};
serial0: serial@e1010000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0 0xe1010000 0 0x1000>;
interrupts = <0 328 4>;
clocks = <&uartspiclk_100mhz>, <&uartspiclk_100mhz>;
clock-names = "uartclk", "apb_pclk";
};
spi0: spi@e1020000 {
status = "disabled";
compatible = "arm,pl022", "arm,primecell";
reg = <0 0xe1020000 0 0x1000>;
interrupts = <0 330 4>;
clocks = <&uartspiclk_100mhz>, <&uartspiclk_100mhz>;
clock-names = "sspclk", "apb_pclk";
};
spi1: spi@e1030000 {
status = "disabled";
compatible = "arm,pl022", "arm,primecell";
reg = <0 0xe1030000 0 0x1000>;
interrupts = <0 329 4>;
clocks = <&uartspiclk_100mhz>, <&uartspiclk_100mhz>;
clock-names = "sspclk", "apb_pclk";
num-cs = <1>;
#address-cells = <1>;
#size-cells = <0>;
};
gpio0: gpio@e1040000 { /* Not available to OS for B0 */
status = "disabled";
compatible = "arm,pl061", "arm,primecell";
#gpio-cells = <2>;
reg = <0 0xe1040000 0 0x1000>;
gpio-controller;
interrupts = <0 359 4>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&miscclk_250mhz>;
clock-names = "apb_pclk";
};
gpio1: gpio@e1050000 { /* [0:7] */
status = "disabled";
compatible = "arm,pl061", "arm,primecell";
#gpio-cells = <2>;
reg = <0 0xe1050000 0 0x1000>;
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
interrupts = <0 358 4>;
clocks = <&miscclk_250mhz>;
clock-names = "apb_pclk";
};
gpio2: gpio@e0020000 { /* [8:15] */
status = "disabled";
compatible = "arm,pl061", "arm,primecell";
#gpio-cells = <2>;
reg = <0 0xe0020000 0 0x1000>;
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
interrupts = <0 366 4>;
clocks = <&miscclk_250mhz>;
clock-names = "apb_pclk";
};
gpio3: gpio@e0030000 { /* [16:23] */
status = "disabled";
compatible = "arm,pl061", "arm,primecell";
#gpio-cells = <2>;
reg = <0 0xe0030000 0 0x1000>;
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
interrupts = <0 365 4>;
clocks = <&miscclk_250mhz>;
clock-names = "apb_pclk";
};
gpio4: gpio@e0080000 { /* [24] */
status = "disabled";
compatible = "arm,pl061", "arm,primecell";
#gpio-cells = <2>;
reg = <0 0xe0080000 0 0x1000>;
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
interrupts = <0 361 4>;
clocks = <&miscclk_250mhz>;
clock-names = "apb_pclk";
};
ccp0: ccp@e0100000 {
status = "disabled";
compatible = "amd,ccp-seattle-v1a";
reg = <0 0xe0100000 0 0x10000>;
interrupts = <0 3 4>;
dma-coherent;
iommus = <&sata1_smmu 0x00>,
<&sata1_smmu 0x02>,
<&sata1_smmu 0x40>,
<&sata1_smmu 0x42>;
};
pcie0: pcie@f0000000 {
compatible = "pci-host-ecam-generic";
#address-cells = <3>;
#size-cells = <2>;
#interrupt-cells = <1>;
device_type = "pci";
bus-range = <0 0x7f>;
msi-parent = <&v2m0>;
reg = <0 0xf0000000 0 0x10000000>;
interrupt-map-mask = <0xff00 0x0 0x0 0x7>;
interrupt-map =
<0x1100 0x0 0x0 0x1 &gic0 0x0 0x0 0x0 0x120 0x1>,
<0x1100 0x0 0x0 0x2 &gic0 0x0 0x0 0x0 0x121 0x1>,
<0x1100 0x0 0x0 0x3 &gic0 0x0 0x0 0x0 0x122 0x1>,
<0x1100 0x0 0x0 0x4 &gic0 0x0 0x0 0x0 0x123 0x1>,
<0x1200 0x0 0x0 0x1 &gic0 0x0 0x0 0x0 0x124 0x1>,
<0x1200 0x0 0x0 0x2 &gic0 0x0 0x0 0x0 0x125 0x1>,
<0x1200 0x0 0x0 0x3 &gic0 0x0 0x0 0x0 0x126 0x1>,
<0x1200 0x0 0x0 0x4 &gic0 0x0 0x0 0x0 0x127 0x1>,
<0x1300 0x0 0x0 0x1 &gic0 0x0 0x0 0x0 0x128 0x1>,
<0x1300 0x0 0x0 0x2 &gic0 0x0 0x0 0x0 0x129 0x1>,
<0x1300 0x0 0x0 0x3 &gic0 0x0 0x0 0x0 0x12a 0x1>,
<0x1300 0x0 0x0 0x4 &gic0 0x0 0x0 0x0 0x12b 0x1>;
dma-coherent;
dma-ranges = <0x43000000 0x0 0x0 0x0 0x0 0x100 0x0>;
ranges =
/* I/O Memory (size=64K) */
<0x01000000 0x00 0x00000000 0x00 0xefff0000 0x00 0x00010000>,
/* 32-bit MMIO (size=2G) */
<0x02000000 0x00 0x40000000 0x00 0x40000000 0x00 0x80000000>,
/* 64-bit MMIO (size= 508G) */
<0x03000000 0x01 0x00000000 0x01 0x00000000 0x7f 0x00000000>;
iommu-map = <0x0 &pcie_smmu 0x0 0x10000>;
};
pcie_smmu: iommu@e0a00000 {
compatible = "arm,mmu-401";
reg = <0 0xe0a00000 0 0x10000>;
#global-interrupts = <1>;
interrupts = <0 333 4>, <0 333 4>;
#iommu-cells = <1>;
dma-coherent;
};
/* Perf CCN504 PMU */
ccn: ccn@e8000000 {
compatible = "arm,ccn-504";
reg = <0x0 0xe8000000 0 0x1000000>;
interrupts = <0 380 4>;
};
ipmi_kcs: kcs@e0010000 {
status = "disabled";
compatible = "ipmi-kcs";
device_type = "ipmi";
reg = <0x0 0xe0010000 0 0x8>;
interrupts = <0 389 4>;
reg-size = <1>;
reg-spacing = <4>;
};
};
};
@@ -0,0 +1,84 @@
// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle XGBE (RevB)
*
* Copyright (C) 2015 Advanced Micro Devices, Inc.
*/
xgmac0: ethernet@e0700000 {
compatible = "amd,xgbe-seattle-v1a";
reg = <0 0xe0700000 0 0x80000>,
<0 0xe0780000 0 0x80000>,
<0 0xe1240800 0 0x00400>, /* SERDES RX/TX0 */
<0 0xe1250000 0 0x00060>, /* SERDES IR 1/2 */
<0 0xe12500f8 0 0x00004>; /* SERDES IR 2/2 */
interrupts = <0 325 4>,
<0 346 1>, <0 347 1>, <0 348 1>, <0 349 1>,
<0 323 4>;
amd,per-channel-interrupt;
amd,speed-set = <0>;
amd,serdes-blwc = <1>, <1>, <0>;
amd,serdes-cdr-rate = <2>, <2>, <7>;
amd,serdes-pq-skew = <10>, <10>, <18>;
amd,serdes-tx-amp = <0>, <0>, <0>;
amd,serdes-dfe-tap-config = <3>, <3>, <3>;
amd,serdes-dfe-tap-enable = <0>, <0>, <7>;
mac-address = [ 02 A1 A2 A3 A4 A5 ];
clocks = <&xgmacclk0_dma_250mhz>, <&xgmacclk0_ptp_250mhz>;
clock-names = "dma_clk", "ptp_clk";
phy-mode = "xgmii";
iommus = <&xgmac0_smmu 0x00 0x17>; /* 0-7, 16-23 */
dma-coherent;
};
xgmac1: ethernet@e0900000 {
compatible = "amd,xgbe-seattle-v1a";
reg = <0 0xe0900000 0 0x80000>,
<0 0xe0980000 0 0x80000>,
<0 0xe1240c00 0 0x00400>, /* SERDES RX/TX1 */
<0 0xe1250080 0 0x00060>, /* SERDES IR 1/2 */
<0 0xe12500fc 0 0x00004>; /* SERDES IR 2/2 */
interrupts = <0 324 4>,
<0 341 1>, <0 342 1>, <0 343 1>, <0 344 1>,
<0 322 4>;
amd,per-channel-interrupt;
amd,speed-set = <0>;
amd,serdes-blwc = <1>, <1>, <0>;
amd,serdes-cdr-rate = <2>, <2>, <7>;
amd,serdes-pq-skew = <10>, <10>, <18>;
amd,serdes-tx-amp = <0>, <0>, <0>;
amd,serdes-dfe-tap-config = <3>, <3>, <3>;
amd,serdes-dfe-tap-enable = <0>, <0>, <7>;
mac-address = [ 02 B1 B2 B3 B4 B5 ];
clocks = <&xgmacclk1_dma_250mhz>, <&xgmacclk1_ptp_250mhz>;
clock-names = "dma_clk", "ptp_clk";
phy-mode = "xgmii";
iommus = <&xgmac1_smmu 0x00 0x17>; /* 0-7, 16-23 */
dma-coherent;
};
xgmac0_smmu: iommu@e0600000 {
compatible = "arm,mmu-401";
reg = <0 0xe0600000 0 0x10000>;
#global-interrupts = <1>;
interrupts = /* Uses combined intr for both
* global and context
*/
<0 336 4>,
<0 336 4>;
#iommu-cells = <2>;
dma-coherent;
};
xgmac1_smmu: iommu@e0800000 {
compatible = "arm,mmu-401";
reg = <0 0xe0800000 0 0x10000>;
#global-interrupts = <1>;
interrupts = /* Uses combined intr for both
* global and context
*/
<0 335 4>,
<0 335 4>;
#iommu-cells = <2>;
dma-coherent;
};
@@ -0,0 +1,197 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2020-2023 Advanced Micro Devices, Inc.
*/
/ {
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu-map {
cluster0 {
core0 { cpu = <&cpu0>; };
core1 { cpu = <&cpu1>; };
core2 { cpu = <&cpu2>; };
core3 { cpu = <&cpu3>; };
};
cluster1 {
core0 { cpu = <&cpu4>; };
core1 { cpu = <&cpu5>; };
core2 { cpu = <&cpu6>; };
core3 { cpu = <&cpu7>; };
};
cluster2 {
core0 { cpu = <&cpu8>; };
core1 { cpu = <&cpu9>; };
core2 { cpu = <&cpu10>; };
core3 { cpu = <&cpu11>; };
};
cluster3 {
core0 { cpu = <&cpu12>; };
core1 { cpu = <&cpu13>; };
core2 { cpu = <&cpu14>; };
core3 { cpu = <&cpu15>; };
};
};
/* CLUSTER 0 */
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x0>;
next-level-cache = <&l2_0>;
enable-method = "psci";
};
cpu1: cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x1>;
next-level-cache = <&l2_0>;
enable-method = "psci";
};
cpu2: cpu@2 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x2>;
next-level-cache = <&l2_0>;
enable-method = "psci";
};
cpu3: cpu@3 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x3>;
next-level-cache = <&l2_0>;
enable-method = "psci";
};
l2_0: l2-cache0 {
compatible = "cache";
cache-unified;
cache-level = <2>;
};
/* CLUSTER 1 */
cpu4: cpu@100 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x100>;
next-level-cache = <&l2_1>;
enable-method = "psci";
};
cpu5: cpu@101 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x101>;
next-level-cache = <&l2_1>;
enable-method = "psci";
};
cpu6: cpu@102 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x102>;
next-level-cache = <&l2_1>;
enable-method = "psci";
};
cpu7: cpu@103 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x103>;
next-level-cache = <&l2_1>;
enable-method = "psci";
};
l2_1: l2-cache1 {
compatible = "cache";
cache-unified;
cache-level = <2>;
};
/* CLUSTER 2 */
cpu8: cpu@200 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x200>;
next-level-cache = <&l2_2>;
enable-method = "psci";
};
cpu9: cpu@201 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x201>;
next-level-cache = <&l2_2>;
enable-method = "psci";
};
cpu10: cpu@202 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x202>;
next-level-cache = <&l2_2>;
enable-method = "psci";
};
cpu11: cpu@203 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x203>;
next-level-cache = <&l2_2>;
enable-method = "psci";
};
l2_2: l2-cache2 {
compatible = "cache";
cache-unified;
cache-level = <2>;
};
/* CLUSTER 3 */
cpu12: cpu@300 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x300>;
next-level-cache = <&l2_3>;
enable-method = "psci";
};
cpu13: cpu@301 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x301>;
next-level-cache = <&l2_3>;
enable-method = "psci";
};
cpu14: cpu@302 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x302>;
next-level-cache = <&l2_3>;
enable-method = "psci";
};
cpu15: cpu@303 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x303>;
next-level-cache = <&l2_3>;
enable-method = "psci";
};
l2_3: l2-cache3 {
compatible = "cache";
cache-unified;
cache-level = <2>;
};
};
};
@@ -0,0 +1,70 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2020-2022 Advanced Micro Devices, Inc.
*/
&ahb_clk {
clock-frequency = <400000000>;
};
&emmc_clk {
clock-frequency = <200000000>;
};
&flash_clk {
clock-frequency = <400000000>;
};
&ref_clk {
clock-frequency = <156250000>;
};
&qspi {
status = "okay";
flash0: flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;
spi-rx-bus-width = <2>;
m25p,fast-read;
cdns,read-delay = <0>;
cdns,tshsl-ns = <0>;
cdns,tsd2d-ns = <0>;
cdns,tchsh-ns = <0>;
cdns,tslch-ns = <0>;
};
};
&gpio0 {
status = "okay";
};
&emmc {
bus-width = <8>;
cap-mmc-hw-reset;
status = "okay";
};
&wdt0 {
status = "okay";
};
&i2c0 {
clock-frequency = <100000>;
status = "okay";
rtc@51 {
compatible = "nxp,pcf85263";
reg = <0x51>;
};
};
&spi0 {
#address-cells = <1>;
#size-cells = <0>;
num-cs = <4>;
cs-gpios = <0>, <0>, <&porta 1 GPIO_ACTIVE_LOW>,
<&porta 7 GPIO_ACTIVE_LOW>;
status = "okay";
};
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Device Tree file for AMD Pensando Elba Board.
*
* Copyright 2020-2022 Advanced Micro Devices, Inc.
*/
/dts-v1/;
#include "elba.dtsi"
#include "elba-16core.dtsi"
#include "elba-asic-common.dtsi"
#include "elba-flash-parts.dtsi"
/ {
model = "AMD Pensando Elba Board";
compatible = "amd,pensando-elba-ortano", "amd,pensando-elba";
aliases {
serial0 = &uart0;
spi0 = &spi0;
spi1 = &qspi;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
@@ -0,0 +1,117 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2020-2023 Advanced Micro Devices, Inc.
*/
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "rsvd";
reg = <0x0 0x10000>;
read-only;
};
partition@10000 {
label = "flash";
reg = <0x10000 0xfff0000>;
};
partition@f0000 {
label = "golduenv";
reg = <0xf0000 0x10000>;
};
partition@100000 {
label = "boot0";
reg = <0x100000 0x80000>;
};
partition@180000 {
label = "golduboot";
reg = <0x180000 0x200000>;
};
partition@380000 {
label = "brdcfg0";
reg = <0x380000 0x10000>;
};
partition@390000 {
label = "brdcfg1";
reg = <0x390000 0x10000>;
};
partition@400000 {
label = "goldfw";
reg = <0x400000 0x3c00000>;
};
partition@4010000 {
label = "fwmap";
reg = <0x4010000 0x20000>;
};
partition@4030000 {
label = "fwsel";
reg = <0x4030000 0x20000>;
};
partition@4090000 {
label = "bootlog";
reg = <0x4090000 0x20000>;
};
partition@40b0000 {
label = "panicbuf";
reg = <0x40b0000 0x20000>;
};
partition@40d0000 {
label = "uservars";
reg = <0x40d0000 0x20000>;
};
partition@4200000 {
label = "uboota";
reg = <0x4200000 0x400000>;
};
partition@4600000 {
label = "ubootb";
reg = <0x4600000 0x400000>;
};
partition@4a00000 {
label = "mainfwa";
reg = <0x4a00000 0x1000000>;
};
partition@5a00000 {
label = "mainfwb";
reg = <0x5a00000 0x1000000>;
};
partition@6a00000 {
label = "diaguboot";
reg = <0x6a00000 0x400000>;
};
partition@6e00000 {
label = "spare";
reg = <0x6e00000 0x1200000>;
};
partition@8000000 {
label = "diagfw";
reg = <0x8000000 0x7fe0000>;
};
partition@ffe0000 {
label = "ubootenv";
reg = <0xffe0000 0x10000>;
};
};
};
@@ -0,0 +1,191 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2020-2022 Advanced Micro Devices, Inc.
*/
#include <dt-bindings/gpio/gpio.h>
#include "dt-bindings/interrupt-controller/arm-gic.h"
/ {
model = "Elba ASIC Board";
compatible = "amd,pensando-elba";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
dma-coherent;
ahb_clk: oscillator0 {
compatible = "fixed-clock";
#clock-cells = <0>;
};
emmc_clk: oscillator2 {
compatible = "fixed-clock";
#clock-cells = <0>;
};
flash_clk: oscillator3 {
compatible = "fixed-clock";
#clock-cells = <0>;
};
ref_clk: oscillator4 {
compatible = "fixed-clock";
#clock-cells = <0>;
};
psci {
compatible = "arm,psci-0.2";
method = "smc";
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
};
pmu {
compatible = "arm,cortex-a72-pmu";
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
};
soc: soc {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
i2c0: i2c@400 {
compatible = "snps,designware-i2c";
reg = <0x0 0x400 0x0 0x100>;
clocks = <&ahb_clk>;
#address-cells = <1>;
#size-cells = <0>;
i2c-sda-hold-time-ns = <480>;
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
wdt0: watchdog@1400 {
compatible = "snps,dw-wdt";
reg = <0x0 0x1400 0x0 0x100>;
clocks = <&ahb_clk>;
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
qspi: spi@2400 {
compatible = "amd,pensando-elba-qspi", "cdns,qspi-nor";
reg = <0x0 0x2400 0x0 0x400>,
<0x0 0x7fff0000 0x0 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&flash_clk>;
cdns,fifo-depth = <1024>;
cdns,fifo-width = <4>;
cdns,trigger-address = <0x7fff0000>;
status = "disabled";
};
spi0: spi@2800 {
compatible = "amd,pensando-elba-spi";
reg = <0x0 0x2800 0x0 0x100>;
#address-cells = <1>;
#size-cells = <0>;
amd,pensando-elba-syscon = <&syscon>;
clocks = <&ahb_clk>;
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
num-cs = <2>;
status = "disabled";
};
gpio0: gpio@4000 {
compatible = "snps,dw-apb-gpio";
reg = <0x0 0x4000 0x0 0x78>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
porta: gpio-port@0 {
compatible = "snps,dw-apb-gpio-port";
reg = <0>;
gpio-controller;
#gpio-cells = <2>;
ngpios = <8>;
interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
interrupt-parent = <&gic>;
#interrupt-cells = <2>;
};
portb: gpio-port@1 {
compatible = "snps,dw-apb-gpio-port";
reg = <1>;
gpio-controller;
#gpio-cells = <2>;
ngpios = <8>;
};
};
uart0: serial@4800 {
compatible = "ns16550a";
reg = <0x0 0x4800 0x0 0x100>;
clocks = <&ref_clk>;
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
};
gic: interrupt-controller@800000 {
compatible = "arm,gic-v3";
reg = <0x0 0x800000 0x0 0x200000>, /* GICD */
<0x0 0xa00000 0x0 0x200000>, /* GICR */
<0x0 0x60000000 0x0 0x2000>, /* GICC */
<0x0 0x60010000 0x0 0x1000>, /* GICH */
<0x0 0x60020000 0x0 0x2000>; /* GICV */
#address-cells = <2>;
#size-cells = <2>;
#interrupt-cells = <3>;
ranges;
interrupt-controller;
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
/*
* Elba specific pre-ITS is enabled using the
* existing property socionext,synquacer-pre-its
*/
gic_its: msi-controller@820000 {
compatible = "arm,gic-v3-its";
reg = <0x0 0x820000 0x0 0x10000>;
msi-controller;
#msi-cells = <1>;
socionext,synquacer-pre-its =
<0xc00000 0x1000000>;
};
};
emmc: mmc@30440000 {
compatible = "amd,pensando-elba-sd4hc", "cdns,sd4hc";
reg = <0x0 0x30440000 0x0 0x10000>,
<0x0 0x30480044 0x0 0x4>; /* byte-lane ctrl */
clocks = <&emmc_clk>;
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
cdns,phy-input-delay-sd-highspeed = <0x4>;
cdns,phy-input-delay-legacy = <0x4>;
cdns,phy-input-delay-sd-uhs-sdr50 = <0x6>;
cdns,phy-input-delay-sd-uhs-ddr50 = <0x16>;
mmc-ddr-1_8v;
status = "disabled";
};
syscon: syscon@307c0000 {
compatible = "amd,pensando-elba-syscon", "syscon";
reg = <0x0 0x307c0000 0x0 0x3000>;
};
};
};