-
Notifications
You must be signed in to change notification settings - Fork 7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
boards: amd: Add support for AMD Versal NET RPU
Add support for the RPU, real-time processing unit on Versal NET SoC. It is based on Cortext-R52 processor. The patch contains initial wiring and configuration for generic board with OCM(1MB) and DDR(2G) memories, cpu, interrupt controller, global timer and UART. versalnet.dtsi contains common peripherals integrated into Versal NET SoC, and versalnet_r52.dtsi has peripherals which are private to Cortex-R52 processor. Signed-off-by: Mubin Sayyed <[email protected]>
- Loading branch information
1 parent
70f55bc
commit ebe195f
Showing
18 changed files
with
385 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
CONFIG_ARM_MPU=y | ||
CONFIG_CACHE_MANAGEMENT=y | ||
CONFIG_DCACHE=y | ||
CONFIG_ICACHE=y |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
config BOARD_VERSALNET_RPU | ||
select SOC_AMD_VERSALNET_RPU |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
include(${ZEPHYR_BASE}/boards/common/xsdb.board.cmake) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
board: | ||
name: versalnet_rpu | ||
vendor: amd | ||
socs: | ||
- name: versalnet_rpu |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
proc load_image args { | ||
set elf_file [lindex $args 0] | ||
|
||
if { [info exists ::env(HW_SERVER_URL)] } { | ||
connect -url $::env(HW_SERVER_URL) | ||
} else { | ||
connect | ||
} | ||
|
||
after 100 | ||
targets -set -nocase -filter {name =~ "Versal*"} | ||
after 100 | ||
rst -system | ||
after 100 | ||
|
||
if { [info exists ::env(PDI_FILE_PATH)] } { | ||
device program $::env(PDI_FILE_PATH) | ||
} else { | ||
puts "Error: env variable PDI_FILE_PATH is not set" | ||
exit | ||
} | ||
|
||
after 100 | ||
targets -set -nocase -filter {name =~ "DPC"} | ||
after 100 | ||
# Configure timestamp generator to run global timer gracefully | ||
# Ideally these registers should be set from bootloader (cdo) | ||
|
||
Check failure on line 32 in boards/amd/versalnet_rpu/support/xsdb.cfg
|
||
mwr -force 0xeb5b0000 100000000 | ||
mwr -force 0xeb5b0020 0x1 | ||
after 100 | ||
|
||
targets -set -nocase -filter {name =~ "*Cortex-R52 #0.0"} | ||
rst -proc | ||
after 100 | ||
dow -force $elf_file | ||
con | ||
exit | ||
} | ||
|
||
load_image {*}$argv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
/* | ||
* (C) Copyright 2025, Advanced Micro Devices, Inc. | ||
* | ||
* Mubin Sayyed <[email protected]> | ||
*/ | ||
|
||
/dts-v1/; | ||
#include <arm/xilinx/versalnet_r52.dtsi> | ||
|
||
/ { | ||
chosen { | ||
zephyr,sram = &sram0; | ||
zephyr,console = &uart0; | ||
zephyr,shell-uart = &uart0; | ||
zephyr,ocm = &ocm; | ||
}; | ||
}; | ||
|
||
&soc { | ||
sram0: memory@0 { | ||
compatible = "mmio-sram"; | ||
reg = <0x00000 DT_SIZE_M(2048)>; | ||
}; | ||
}; | ||
|
||
&ocm { | ||
status = "okay"; | ||
}; | ||
|
||
&uart1 { | ||
status = "okay"; | ||
current-speed = <115200>; | ||
clock-frequency = <100000000>; | ||
}; | ||
|
||
&uart0 { | ||
status = "okay"; | ||
current-speed = <115200>; | ||
clock-frequency = <100000000>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
identifier: versalnet_rpu | ||
name: AMD Development board for Versal NET RPU | ||
arch: arm | ||
toolchain: | ||
- zephyr | ||
testing: | ||
ignore_tags: | ||
- net | ||
- bluetooth | ||
vendor: amd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
CONFIG_ISR_STACK_SIZE=1024 | ||
CONFIG_THREAD_STACK_INFO=y | ||
|
||
# Enable UART driver | ||
CONFIG_SERIAL=y | ||
|
||
# Enable console | ||
CONFIG_CONSOLE=y | ||
CONFIG_UART_CONSOLE=y | ||
|
||
# Enable serial port | ||
CONFIG_UART_PL011=y | ||
|
||
CONFIG_ARM_ARCH_TIMER=y | ||
|
||
CONFIG_ARM_MPU=y | ||
CONFIG_CACHE_MANAGEMENT=y | ||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=100000000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
/* | ||
* (C) Copyright 2025, Advanced Micro Devices, Inc. | ||
* | ||
* Mubin Sayyed <[email protected]> | ||
*/ | ||
|
||
/dts-v1/; | ||
|
||
#include <mem.h> | ||
#include <arm/armv8-r.dtsi> | ||
#include <zephyr/dt-bindings/interrupt-controller/arm-gic.h> | ||
#include <amd/versalnet.dtsi> | ||
|
||
/ { | ||
model = "Versal NET RPU"; | ||
|
||
Check failure on line 17 in dts/arm/xilinx/versalnet_r52.dtsi
|
||
cpus { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
cpu0: cpu@0 { | ||
device_type = "cpu"; | ||
compatible = "arm,cortex-r52"; | ||
reg = <0>; | ||
}; | ||
}; | ||
|
||
arch_timer: timer { | ||
compatible = "arm,armv8-timer"; | ||
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, | ||
<GIC_PPI 14 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, | ||
<GIC_PPI 11 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, | ||
<GIC_PPI 10 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; | ||
interrupt-parent = <&gic>; | ||
status = "okay"; | ||
}; | ||
|
||
}; | ||
|
||
&soc { | ||
interrupt-parent = <&gic>; | ||
|
||
gic: interrupt-controller@e2000000 { | ||
compatible = "arm,gic-v3", "arm,gic"; | ||
reg = <0xe2000000 0x10000>, | ||
<0xe2100000 0x80000>; | ||
interrupt-controller; | ||
#interrupt-cells = <4>; | ||
status = "okay"; | ||
}; | ||
|
||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
/* | ||
* (C) Copyright 2025, Advanced Micro Devices, Inc. | ||
* | ||
* Mubin Sayyed <[email protected]> | ||
*/ | ||
|
||
/ { | ||
soc: soc { | ||
ocm: memory@bbf00000 { | ||
compatible = "zephyr,memory-region"; | ||
reg = <0xbbf00000 DT_SIZE_M(1)>; | ||
status = "disabled"; | ||
zephyr,memory-region = "OCM"; | ||
}; | ||
|
||
uart0: uart@f1920000 { | ||
compatible = "arm,sbsa-uart"; | ||
reg = <0xf1920000 0x4c>; | ||
status = "disabled"; | ||
interrupt-names = "irq_0"; | ||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; | ||
}; | ||
|
||
uart1: uart@f1930000 { | ||
compatible = "arm,sbsa-uart"; | ||
reg = <0xf1930000 0x1000>; | ||
status = "disabled"; | ||
interrupt-names = "irq_1"; | ||
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
zephyr_sources( | ||
soc.c | ||
) | ||
zephyr_sources_ifdef( | ||
CONFIG_ARM_MPU | ||
arm_mpu_regions.c | ||
) | ||
|
||
zephyr_include_directories(.) | ||
|
||
if(CONFIG_SOC_AMD_VERSALNET_RPU) | ||
set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_a_r/scripts/linker.ld CACHE INTERNAL "") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
config SOC_AMD_VERSALNET_RPU | ||
select ARM | ||
select ARM_ARCH_TIMER | ||
select CPU_CORTEX_R52 | ||
select CPU_HAS_DCLS | ||
select GIC_SINGLE_SECURITY_STATE | ||
select CPU_HAS_ARM_MPU |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
if SOC_AMD_VERSALNET | ||
|
||
if SOC_AMD_VERSALNET_RPU | ||
|
||
config NUM_IRQS | ||
# must be >= the highest interrupt number used | ||
# - include the UART interrupts | ||
default 256 | ||
|
||
endif # SOC_AMD_VERSALNET_RPU | ||
|
||
endif # SOC_AMD_VERSALNET |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# | ||
# Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
config SOC_AMD_VERSALNET | ||
bool | ||
|
||
config SOC_AMD_VERSALNET_RPU | ||
bool | ||
select SOC_AMD_VERSALNET | ||
help | ||
AMD Versal NET SoC | ||
|
||
config SOC_FAMILY | ||
default "amd_versalnet" if SOC_AMD_VERSALNET | ||
|
||
config SOC | ||
default "versalnet_rpu" if SOC_AMD_VERSALNET_RPU |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/* | ||
* Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#include <zephyr/kernel.h> | ||
#include <zephyr/linker/linker-defs.h> | ||
#include <zephyr/arch/arm/mpu/arm_mpu.h> | ||
|
||
#define DEVICE_REGION_START 0xE2000000U | ||
#define DEVICE_REGION_END 0xF8000000U | ||
|
||
static const struct arm_mpu_region mpu_regions[] = { | ||
MPU_REGION_ENTRY("vector", | ||
(uintptr_t)_vector_start, | ||
REGION_RAM_TEXT_ATTR((uintptr_t)_vector_end)), | ||
|
||
MPU_REGION_ENTRY("SRAM_TEXT", | ||
(uintptr_t)__text_region_start, | ||
REGION_RAM_TEXT_ATTR((uintptr_t)__rodata_region_start)), | ||
|
||
MPU_REGION_ENTRY("SRAM_RODATA", | ||
(uintptr_t)__rodata_region_start, | ||
REGION_RAM_RO_ATTR((uintptr_t)__rodata_region_end)), | ||
|
||
MPU_REGION_ENTRY("SRAM_DATA", | ||
(uintptr_t)__rom_region_end, | ||
REGION_RAM_ATTR((uintptr_t)__kernel_ram_end)), | ||
|
||
MPU_REGION_ENTRY("DEVICE", | ||
DEVICE_REGION_START, | ||
REGION_DEVICE_ATTR(DEVICE_REGION_END)), | ||
}; | ||
|
||
const struct arm_mpu_config mpu_config = { | ||
.num_regions = ARRAY_SIZE(mpu_regions), | ||
.mpu_regions = mpu_regions, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/* | ||
* Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#include <zephyr/cache.h> | ||
#include <zephyr/device.h> | ||
#include <zephyr/kernel.h> | ||
|
||
void z_arm_platform_init(void) | ||
{ | ||
if (IS_ENABLED(CONFIG_ICACHE)) { | ||
if (!(__get_SCTLR() & SCTLR_I_Msk)) { | ||
L1C_InvalidateICacheAll(); | ||
__set_SCTLR(__get_SCTLR() | SCTLR_I_Msk); | ||
barrier_isync_fence_full(); | ||
} | ||
} | ||
|
||
if (IS_ENABLED(CONFIG_DCACHE)) { | ||
if (!(__get_SCTLR() & SCTLR_C_Msk)) { | ||
L1C_InvalidateDCacheAll(); | ||
__set_SCTLR(__get_SCTLR() | SCTLR_C_Msk); | ||
barrier_dsync_fence_full(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
/* | ||
* Copyright (c) 2025 Advanced Micro Devices, Inc. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#ifndef _SOC_XLNX_VERSALNET_SOC_H_ | ||
#define _SOC_XLNX_VERSALNET_SOC_H_ | ||
|
||
/* Define CMSIS configurations */ | ||
#define __GIC_PRESENT 0 | ||
#define __TIM_PRESENT 0 | ||
|
||
#endif /* _SOC_XLNX_VERSALNET_SOC_H_ */ |
Oops, something went wrong.