[PATCH v2 30/33] ARM: k3: add AM62l3 EVM board support

Sascha Hauer s.hauer at pengutronix.de
Thu Jun 5 05:42:55 PDT 2025


Add support for the AM62l3 EVM board [1]. Currently supported are:

- DRAM
- eMMC
- SD card
- Ethernet
- USB

[1] https://www.ti.com/tool/TMDS62LEVM

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 arch/arm/boards/Makefile              |  1 +
 arch/arm/boards/am62lx-evm/Makefile   |  1 +
 arch/arm/boards/am62lx-evm/lowlevel.c | 37 ++++++++++++++++++++
 arch/arm/dts/Makefile                 |  1 +
 arch/arm/mach-k3/Kconfig              |  6 ++++
 images/Makefile.k3                    | 63 +++++++++++++++++++++++++++++++++--
 6 files changed, 107 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
index 908497cd8b0509bdca01c9ccfbb1501654051bda..ac1fa74d4c03de7a462746cb93a061017cd2b64d 100644
--- a/arch/arm/boards/Makefile
+++ b/arch/arm/boards/Makefile
@@ -5,6 +5,7 @@ obj-$(CONFIG_MACH_ADVANTECH_ROM_742X)		+= advantech-mx6/
 obj-$(CONFIG_MACH_AFI_GF)			+= afi-gf/
 obj-$(CONFIG_MACH_ANIMEO_IP)			+= animeo_ip/
 obj-$(CONFIG_MACH_AM625_SK)			+= am625-sk/
+obj-$(CONFIG_MACH_AM62LX_EVM)			+= am62lx-evm/
 obj-$(CONFIG_MACH_AT91RM9200EK)			+= at91rm9200ek/
 obj-$(CONFIG_MACH_AT91SAM9260EK)		+= at91sam9260ek/
 obj-$(CONFIG_MACH_AT91SAM9261EK)		+= at91sam9261ek/
diff --git a/arch/arm/boards/am62lx-evm/Makefile b/arch/arm/boards/am62lx-evm/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..562535d391d66ae2068377967c4c84844cddd380
--- /dev/null
+++ b/arch/arm/boards/am62lx-evm/Makefile
@@ -0,0 +1 @@
+pbl-y += lowlevel.o
diff --git a/arch/arm/boards/am62lx-evm/lowlevel.c b/arch/arm/boards/am62lx-evm/lowlevel.c
new file mode 100644
index 0000000000000000000000000000000000000000..c2f5771dcf53fb49f3d7e1cf9fd0e8a93d0323d7
--- /dev/null
+++ b/arch/arm/boards/am62lx-evm/lowlevel.c
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+#include <common.h>
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+#include <mach/k3/debug_ll.h>
+#include <debug_ll.h>
+#include <pbl.h>
+#include <cache.h>
+#include <pbl/handoff-data.h>
+#include <compressed-dtb.h>
+#include <mach/k3/common.h>
+
+#define SECURE_SIZE 0x600000
+
+static noinline void am62lx_evm_continue(void)
+{
+	extern char __dtb_z_k3_am62l3_evm_start[];
+
+	pbl_set_putc((void *)debug_ll_ns16550_putc, IOMEM(AM62X_UART_UART0_BASE));
+
+	putc_ll('>');
+
+	barebox_arm_entry(0x80000000 + SECURE_SIZE, SZ_2G - SECURE_SIZE, __dtb_z_k3_am62l3_evm_start);
+}
+
+ENTRY_FUNCTION_WITHSTACK(start_am62lx_evm, 0x80800000, r0, r1, r2)
+{
+	writel(0x00000000, 0x040841b8);
+
+	k3_debug_ll_init(IOMEM(AM62X_UART_UART0_BASE));
+
+	relocate_to_current_adr();
+	setup_c();
+
+	am62lx_evm_continue();
+}
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 3044c9bf120f9ece9564164b3fa569f4b7be1881..6612a514523103fdaaae026527f3441ebc57d228 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -7,6 +7,7 @@ obj- += dummy.o
 lwl-$(CONFIG_MACH_ADVANTECH_ROM_742X) += imx6dl-advantech-rom-7421.dtb.o
 lwl-$(CONFIG_MACH_AFI_GF) += am335x-afi-gf.dtb.o
 lwl-$(CONFIG_MACH_AM625_SK) += k3-am625-sk.dtb.o k3-am625-r5-sk.dtb.o k3-am625sip-r5-sk.dtb.o
+lwl-$(CONFIG_MACH_AM62LX_EVM) += k3-am62l3-evm.dtb.o
 lwl-$(CONFIG_MACH_BEAGLEBONE) += am335x-bone.dtb.o am335x-boneblack.dtb.o am335x-bone-common.dtb.o
 lwl-$(CONFIG_MACH_BEAGLEPLAY) += k3-am625-beagleplay.dtb.o k3-am625-r5-beagleplay.dtb.o
 lwl-$(CONFIG_MACH_CLEP7212) += ep7212-clep7212.dtb.o
diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig
index cda44807e8a1db7c2f701309948c7bd1a863d365..338421a8af1715c72a23adc41fb7a21d69091585 100644
--- a/arch/arm/mach-k3/Kconfig
+++ b/arch/arm/mach-k3/Kconfig
@@ -46,6 +46,12 @@ config MACH_BEAGLEPLAY
 	help
 	  Say Y here if you are using a TI AM62x based BeaglePlay board
 
+config MACH_AM62LX_EVM
+	bool "TI AM62Lx EVM"
+	select MACH_AM62LX
+	help
+	  Say Y here if you are using a TI AM62Lx EVM board
+
 config ARCH_K3_AUTHENTICATE_IMAGE
 	bool "Force authentication of FIP image against ROM API"
 	help
diff --git a/images/Makefile.k3 b/images/Makefile.k3
index 12db9c59a96eade62679987aedb9b5433cec3c2f..ed8cdf126a9d4487e3423fcb6959c2d2a1fff3bf 100644
--- a/images/Makefile.k3
+++ b/images/Makefile.k3
@@ -17,6 +17,9 @@ image-$(CONFIG_MACH_BEAGLEPLAY) += barebox-beagleplay.img
 
 endif
 
+KEY_custmpk=$(srctree)/arch/arm/mach-k3/custMpk.pem
+KEY_degenerate=$(srctree)/arch/arm/mach-k3/ti-degenerate-key.pem
+
 ifdef CONFIG_MACH_K3_CORTEX_R5
 
 SYSFWDATA_am625=$(objtree)/arch/arm/mach-k3/combined-sysfw-cfg-am62x.k3cfg
@@ -24,8 +27,6 @@ DMDATA_am625=$(objtree)/arch/arm/mach-k3/combined-dm-cfg-am62x.k3cfg
 SYSFW_am625_hs_fs=$(FIRMWARE_DIR)/ti-linux-firmware/ti-sysfw/ti-fs-firmware-am62x-hs-fs-enc.bin
 SYSFW_am625_gp=$(FIRMWARE_DIR)/ti-linux-firmware/ti-sysfw/ti-fs-firmware-am62x-gp.bin
 INNERDATA_am625=$(FIRMWARE_DIR)/ti-linux-firmware/ti-sysfw/ti-fs-firmware-am62x-hs-fs-cert.bin
-KEY_custmpk=$(srctree)/arch/arm/mach-k3/custMpk.pem
-KEY_degenerate=$(srctree)/arch/arm/mach-k3/ti-degenerate-key.pem
 
 ## TI am625(sip)-SK ##
 SYSFW_start_am625_sk_r5.pblb.k3_am62x_img=$(SYSFW_am625_hs_fs)
@@ -60,6 +61,29 @@ image-$(CONFIG_MACH_BEAGLEPLAY) += barebox-beagleplay-r5.img
 
 endif
 
+SYSFWDATA_am62lx=$(objtree)/arch/arm/mach-k3/combined-sysfw-cfg-am62l.k3cfg
+SYSFW_am62lx_hs_fs=$(FIRMWARE_DIR)/ti-linux-firmware/ti-sysfw/ti-fs-firmware-am62lx-hs-fs-enc.bin
+INNERDATA_am62lx=$(FIRMWARE_DIR)/ti-linux-firmware/ti-sysfw/ti-fs-firmware-am62lx-hs-fs-cert.bin
+
+## TI am62lx-EVM ##
+SYSFW_start_am62lx_evm.pblb.k3_am62lx_img=$(SYSFW_am62lx_hs_fs)
+SYSFWDATA_start_am62lx_evm.pblb.k3_am62lx_img=$(SYSFWDATA_am62lx)
+TFA_start_am62lx_evm.pblb.k3_am62lx_img=$(FIRMWARE_DIR)/am62lx-bl31.bin
+INNERDATA_start_am62lx_evm.pblb.k3_am62lx_img=$(INNERDATA_am62lx)
+KEY_start_am62lx_evm.pblb.k3_am62lx_img=$(KEY_custmpk)
+
+SYSFW_start_am62lx_evm.pblb.k3_am62lx_tiboot3_img=$(SYSFW_am62lx_hs_fs)
+SYSFWDATA_start_am62lx_evm.pblb.k3_am62lx_tiboot3_img=$(SYSFWDATA_am62lx)
+INNERDATA_start_am62lx_evm.pblb.k3_am62lx_tiboot3_img=$(INNERDATA_am62lx)
+TFA_BL1_start_am62lx_evm.pblb.k3_am62lx_tiboot3_img=$(FIRMWARE_DIR)/am62lx-bl1.bin
+KEY_start_am62lx_evm.pblb.k3_am62lx_tiboot3_img=$(KEY_custmpk)
+
+pblb-$(CONFIG_MACH_AM62LX_EVM) += start_am62lx_evm
+FILE_barebox-am62lx-evm.img = start_am62lx_evm.pblb.k3_am62lx_img
+image-$(CONFIG_MACH_AM62LX_EVM) += barebox-am62lx-evm.img barebox-am62lx-evm-tiboot3.img
+
+FILE_barebox-am62lx-evm-tiboot3.img = start_am62lx_evm.pblb.k3_am62lx_tiboot3_img
+
 quiet_cmd_k3_am62x_image = K3_am62x_IMG   $@
       cmd_k3_am62x_image = \
 		if [ -n "$(INNERDATA_$(@F))" ]; then				\
@@ -74,5 +98,40 @@ quiet_cmd_k3_am62x_image = K3_am62x_IMG   $@
 			$(DMDATA_$(@F)):17:16:0:43c3a800			\
 			--key $(KEY_$(@F)) --out $@
 
+quiet_cmd_k3_am62lx_image = K3_am62lx_IMG   $@
+      cmd_k3_am62lx_image = \
+		if [ -n "$(INNERDATA_$(@F))" ]; then				\
+			inner="$(INNERDATA_$(@F)):3:0:0:00000000";		\
+		fi;								\
+										\
+		if [ -n "$(FIRMWARE_DIR)/am62lx-bl32.bin" ]; then		\
+			optee=$(FIRMWARE_DIR)/am62lx-bl32.bin:17:16:0:80200000;	\
+		fi;								\
+										\
+		$(srctree)/scripts/k3img					\
+			$(TFA_$(@F)):1:16:0:80000000				\
+			$(SYSFW_$(@F)):2:0:0:00040000				\
+			$(SYSFWDATA_$(@F)):18:0:0:0006c000			\
+			$$inner							\
+			$$optee							\
+			$<:17:16:0:82000000					\
+			--key $(KEY_$(@F)) --out $@
+
+quiet_cmd_k3_am62lx_tiboot3_image = K3_am62lx_tiboot3_IMG   $@
+      cmd_k3_am62lx_tiboot3_image = \
+		$(srctree)/scripts/k3img					\
+			$(TFA_BL1_$(@F)):1:16:160:70800000			\
+			$(SYSFW_$(@F)):2:0:0:00040000				\
+			$(SYSFWDATA_$(@F)):18:0:0:0006c000			\
+			$(INNERDATA_$(@F)):3:0:0:00000000			\
+			--key $(KEY_$(@F))					\
+			--out $@
+
 $(obj)/%.k3_am62x_img: $(obj)/% scripts/k3img FORCE
 	$(call if_changed,k3_am62x_image)
+
+$(obj)/%.k3_am62lx_img: $(obj)/% scripts/k3img FORCE
+	$(call if_changed,k3_am62lx_image)
+
+$(obj)/%.k3_am62lx_tiboot3_img: $(obj)/% scripts/k3img FORCE
+	$(call if_changed,k3_am62lx_tiboot3_image)

-- 
2.39.5




More information about the barebox mailing list