On 6/5/25 14:42, Sascha Hauer wrote:
> 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.ha...@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));

Why do you need to cast the function pointer?

> +
> +     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)
> 

-- 
Pengutronix e.K.                  |                             |
Steuerwalder Str. 21              | http://www.pengutronix.de/  |
31137 Hildesheim, Germany         | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686  | Fax:   +49-5121-206917-5555 |


Reply via email to