Add initial support for AM62D2-EVM

Add initial support for AM62D2-EVM, Kconfig entries for binman, SPL,
base DTS files for u-boot and SPL, HS-SE and HS-FS support and initial
configs with SD-MMC, UART, eMMC and OSPI boot providing a baseline for
further enablement.

Also add labels and targets to AM62A-SK binman to enable AM62D2-EVM
builds to reuse existing binman infrastructure.

Technical Reference Manual - https://www.ti.com/lit/pdf/sprujd4
Schematics Link - https://www.ti.com/lit/zip/sprcal5

Signed-off-by: Paresh Bhagat <p-bhagat@ti.com>
This commit is contained in:
Paresh Bhagat
2025-09-23 08:58:01 +05:30
committed by Tom Rini
parent eea470fd7f
commit 14dfa6b861
14 changed files with 3171 additions and 6 deletions

View File

@@ -1109,6 +1109,8 @@ dtb-$(CONFIG_SOC_K3_AM62A7) += \
k3-am62a7-r5-sk.dtb \
k3-am62a7-r5-phycore-som-2gb.dtb
dtb-$(CONFIG_SOC_K3_AM62D2) += k3-am62d2-r5-evm.dtb
dtb-$(CONFIG_SOC_K3_AM62P5) += k3-am62p5-r5-sk.dtb \
k3-am62p5-verdin-r5.dtb \
k3-am62p5-verdin-wifi-dev.dtb

View File

@@ -5,7 +5,7 @@
#include "k3-binman.dtsi"
#ifdef CONFIG_TARGET_AM62A7_R5_EVM
#if defined(CONFIG_TARGET_AM62A7_R5_EVM) || defined(CONFIG_TARGET_AM62D2_R5_EVM)
&rcfg_yaml_tifs {
config = "tifs-rm-cfg.yaml";
@@ -100,7 +100,7 @@
#endif
#ifdef CONFIG_TARGET_AM62A7_A53_EVM
#if defined(CONFIG_TARGET_AM62A7_A53_EVM) || defined(CONFIG_TARGET_AM62D2_A53_EVM)
#define SPL_AM62A7_SK_DTB "spl/dts/ti/k3-am62a7-sk.dtb"
#define AM62A7_SK_DTB "u-boot.dtb"
@@ -185,7 +185,7 @@
};
};
fdt-0 {
ti_spl_fdt_0: fdt-0 {
description = "k3-am62a7-sk";
type = "flat_dt";
arch = "arm";
@@ -205,7 +205,7 @@
configurations {
default = "conf-0";
conf-0 {
ti_spl_conf_0: conf-0 {
description = "k3-am62a7-sk";
firmware = "atf";
loadables = "tee", "dm", "spl",
@@ -227,7 +227,7 @@
description = "U-Boot for AM62Ax Board";
};
fdt-0 {
u_boot_fdt_0: fdt-0 {
description = "k3-am62a7-sk";
type = "flat_dt";
arch = "arm";
@@ -248,7 +248,7 @@
configurations {
default = "conf-0";
conf-0 {
u_boot_conf_0: conf-0 {
description = "k3-am62a7-sk";
firmware = "uboot";
loadables = "uboot";

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,104 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2024-2025 Texas Instruments Incorporated - https://www.ti.com/
*/
#include "k3-binman.dtsi"
#include "k3-am62a-sk-binman.dtsi"
#ifdef CONFIG_TARGET_AM62D2_R5_EVM
&bcfg_yaml {
config = "board/ti/am62ax/board-cfg.yaml";
};
&rcfg_yaml {
config = "board/ti/am62ax/rm-cfg.yaml";
};
&scfg_yaml {
config = "board/ti/am62ax/sec-cfg.yaml";
};
&pcfg_yaml {
config = "board/ti/am62ax/pm-cfg.yaml";
};
&bcfg_yaml_tifs {
config = "board/ti/am62ax/board-cfg.yaml";
};
&scfg_yaml_tifs {
config = "board/ti/am62ax/sec-cfg.yaml";
};
&pcfg_yaml_tifs {
config = "board/ti/am62ax/pm-cfg.yaml";
};
&rcfg_yaml_tifs {
config = "board/ti/am62ax/tifs-rm-cfg.yaml";
};
&pcfg_yaml_dm {
config = "board/ti/am62ax/pm-cfg.yaml";
};
&rcfg_yaml_dm {
config = "board/ti/am62ax/rm-cfg.yaml";
};
&bcfg_yaml_sysfw {
config = "board/ti/am62ax/board-cfg.yaml";
};
&scfg_yaml_sysfw {
config = "board/ti/am62ax/sec-cfg.yaml";
};
&pcfg_yaml_sysfw {
config = "board/ti/am62ax/pm-cfg.yaml";
};
&rcfg_yaml_sysfw {
config = "board/ti/am62ax/rm-cfg.yaml";
};
#endif
#ifdef CONFIG_TARGET_AM62D2_A53_EVM
&ti_spl_fdt_0 {
description = "k3-am62d2-evm";
ti-secure {
content = <&spl_am62a7_sk_dtb>;
keyfile = "custMpk.pem";
};
spl_am62d2_evm_dtb: blob-ext {
filename = "spl/dts/ti/k3-am62d2-evm.dtb";
};
};
&ti_spl_conf_0 {
description = "k3-am62d2-evm";
};
&u_boot_fdt_0 {
description = "k3-am62d2-evm";
ti-secure {
content = <&am62d2_evm_dtb>;
keyfile = "custMpk.pem";
};
am62d2_evm_dtb: blob-ext {
filename = AM62A7_SK_DTB;
};
};
&u_boot_conf_0 {
description = "k3-am62d2-evm";
};
#endif

View File

@@ -0,0 +1,13 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Common AM62D EVM dts file for SPLs
* Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
*/
#include "k3-am62d-evm-binman.dtsi"
/ {
chosen {
stdout-path = "serial2:115200n8";
};
};

View File

@@ -0,0 +1,82 @@
// SPDX-License-Identifier: GPL-2.0
/*
* AM62D2 EVM dts file for R5 SPL
* Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
*/
#include "k3-am62d2-evm.dts"
#include "k3-am62d-ddr-1866mhz-32bit.dtsi"
#include "k3-am62a-ddr.dtsi"
#include "k3-am62d2-evm-u-boot.dtsi"
/ {
aliases {
tick-timer = &main_timer0;
remoteproc0 = &sysctrler;
remoteproc1 = &a53_0;
};
a53_0: a53@0 {
compatible = "ti,am654-rproc";
reg = <0x00 0x00a90000 0x00 0x10>;
power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>,
<&k3_pds 135 TI_SCI_PD_EXCLUSIVE>,
<&k3_pds 166 TI_SCI_PD_EXCLUSIVE>;
resets = <&k3_reset 135 0>;
clocks = <&k3_clks 61 0>, <&k3_clks 135 0>;
clock-names = "gtc", "core";
assigned-clocks = <&k3_clks 61 0>, <&k3_clks 135 0>;
assigned-clock-parents = <&k3_clks 61 2>;
assigned-clock-rates = <200000000>, <1200000000>;
ti,sci = <&dmsc>;
ti,sci-proc-id = <32>;
ti,sci-host-id = <10>;
bootph-pre-ram;
};
dm_tifs: dm-tifs {
compatible = "ti,j721e-dm-sci";
ti,host-id = <36>;
ti,secure-host;
mbox-names = "rx", "tx";
mboxes= <&secure_proxy_main 22>,
<&secure_proxy_main 23>;
bootph-pre-ram;
};
};
&dmsc {
mboxes= <&secure_proxy_main 0>,
<&secure_proxy_main 1>,
<&secure_proxy_main 0>;
mbox-names = "rx", "tx", "notify";
ti,host-id = <35>;
ti,secure-host;
};
&secure_proxy_sa3 {
/* Needed for initial handshake with ROM */
status = "okay";
bootph-pre-ram;
};
&cbass_main {
sysctrler: sysctrler {
compatible = "ti,am654-tisci-rproc-r5";
mboxes= <&secure_proxy_main 1>,
<&secure_proxy_main 0>,
<&secure_proxy_sa3 0>;
mbox-names = "tx", "rx", "boot_notify";
bootph-pre-ram;
};
};
&main_timer0 {
/delete-property/ clocks;
/delete-property/ clocks-names;
/delete-property/ assigned-clocks;
/delete-property/ assigned-clock-parents;
clock-frequency = <25000000>;
bootph-pre-ram;
};

View File

@@ -50,9 +50,30 @@ config TARGET_PHYCORE_AM62AX_R5
select BINMAN
imply SYS_K3_SPL_ATF
config TARGET_AM62D2_A53_EVM
bool "TI K3 based AM62D2 EVM running on A53"
select ARM64
select BINMAN
imply BOARD
imply SPL_BOARD
imply TI_I2C_BOARD_DETECT
config TARGET_AM62D2_R5_EVM
bool "TI K3 based AM62D2 EVM running on R5"
select CPU_V7R
select SYS_THUMB_BUILD
select K3_LOAD_SYSFW
select RAM
select SPL_RAM
select K3_DDRSS
select BINMAN
imply SYS_K3_SPL_ATF
imply TI_I2C_BOARD_DETECT
endchoice
source "board/ti/am62ax/Kconfig"
source "board/phytec/phycore_am62ax/Kconfig"
source "board/ti/am62dx/Kconfig"
endif

26
board/ti/am62dx/Kconfig Normal file
View File

@@ -0,0 +1,26 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
#
if TARGET_AM62D2_R5_EVM || TARGET_AM62D2_A53_EVM
config SYS_BOARD
default "am62dx"
config SYS_VENDOR
default "ti"
config SYS_CONFIG_NAME
default "am62ax_evm"
source "board/ti/common/Kconfig"
endif
if TARGET_AM62D2_R5_EVM
config SPL_LDSCRIPT
default "arch/arm/mach-omap2/u-boot-spl.lds"
endif

View File

@@ -0,0 +1,8 @@
AM62Dx BOARD
M: Vignesh Raghavendra <vigneshr@ti.com>
M: Bryan Brattlof <bb@ti.com>
S: Maintained
F: board/ti/am62dx/
F: include/configs/am62a7_evm.h
F: configs/am62dx_evm_r5_defconfig
F: configs/am62dx_evm_a53_defconfig

7
board/ti/am62dx/Makefile Normal file
View File

@@ -0,0 +1,7 @@
#
# Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
#
# SPDX-License-Identifier: GPL-2.0+
#
obj-y += evm.o

View File

@@ -0,0 +1,21 @@
#include <env/ti/ti_common.env>
#include <env/ti/mmc.env>
#include <env/ti/k3_dfu.env>
#if CONFIG_CMD_REMOTEPROC
#include <env/ti/k3_rproc.env>
#endif
name_kern=Image
console=ttyS2,115200n8
args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000
${mtdparts}
run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}
boot_targets=mmc1 mmc0 usb pxe dhcp
boot=mmc
mmcdev=1
bootpart=1:2
bootdir=/boot
rd_spec=-
rproc_fw_binaries= 0 /lib/firmware/am62d-mcu-r5f0_0-fw 1 /lib/firmware/am62d-c71_0-fw

37
board/ti/am62dx/evm.c Normal file
View File

@@ -0,0 +1,37 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Board specific initialization for AM62Dx platforms
*
* Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
*
*/
#include <asm/arch/hardware.h>
#include <asm/io.h>
#include <dm/uclass.h>
#include <env.h>
#include <fdt_support.h>
#include <spl.h>
#include <asm/arch/k3-ddr.h>
#include "../common/fdt_ops.h"
#if defined(CONFIG_XPL_BUILD)
void spl_perform_fixups(struct spl_image_info *spl_image)
{
if (IS_ENABLED(CONFIG_K3_DDRSS)) {
if (IS_ENABLED(CONFIG_K3_INLINE_ECC))
fixup_ddr_driver_for_ecc(spl_image);
} else {
fixup_memory_node(spl_image);
}
}
#endif
#ifdef CONFIG_BOARD_LATE_INIT
int board_late_init(void)
{
ti_set_fdt_env(NULL, NULL);
return 0;
}
#endif

View File

@@ -0,0 +1,22 @@
#include <configs/am62ax_evm_a53_defconfig>
CONFIG_ARM=y
CONFIG_ARCH_K3=y
CONFIG_SOC_K3_AM62A7=y
CONFIG_TARGET_AM62D2_A53_EVM=y
CONFIG_DEFAULT_DEVICE_TREE="ti/k3-am62d2-evm"
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_SPL_DMA=y
CONFIG_SPL_SPI_FLASH_SUPPORT=y
CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y
# CONFIG_SPL_SPI_FLASH_TINY is not set
CONFIG_SPL_SPI_LOAD=y
CONFIG_SYS_SPI_U_BOOT_OFFS=0x280000
CONFIG_DFU_SF=y
CONFIG_SPI_FLASH_MTD=y
CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_SFDP_SUPPORT=y
CONFIG_SPI_FLASH_SOFT_RESET=y
CONFIG_SPI_FLASH_SOFT_RESET_ON_BOOT=y
CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_S28HX_T=y

View File

@@ -0,0 +1,20 @@
#include <configs/am62ax_evm_r5_defconfig>
CONFIG_ARM=y
CONFIG_ARCH_K3=y
CONFIG_SOC_K3_AM62A7=y
CONFIG_TARGET_AM62D2_R5_EVM=y
CONFIG_DEFAULT_DEVICE_TREE="k3-am62d2-r5-evm"
# CONFIG_SPL_DMA is not set
CONFIG_SF_DEFAULT_SPEED=25000000
CONFIG_SF_DEFAULT_MODE=0
CONFIG_SPL_SPI_FLASH_SUPPORT=y
CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y
# CONFIG_SPL_SPI_FLASH_TINY is not set
CONFIG_SPL_SPI_LOAD=y
CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000
CONFIG_SPI_FLASH_SFDP_SUPPORT=y
CONFIG_SPI_FLASH_SOFT_RESET=y
CONFIG_SPI_FLASH_SOFT_RESET_ON_BOOT=y
CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_S28HX_T=y