From a0df7f39a4702c2fe8153bc2c2d2f469f86b5a23 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:02 +0800 Subject: [PATCH 01/25] imx: imx93_evk: switch to BOOTSTD Switch to support BOOTSTD with a bsp bootcmd as fallback. Move the env to imx93_evk.env Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx9/Kconfig | 2 + board/freescale/imx93_evk/imx93_evk.env | 88 ++++++++++++++++++++ configs/imx93_11x11_evk_defconfig | 2 +- include/configs/imx93_evk.h | 105 ------------------------ 4 files changed, 91 insertions(+), 106 deletions(-) create mode 100644 board/freescale/imx93_evk/imx93_evk.env diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig index 54c6b117fcf..c5254608439 100644 --- a/arch/arm/mach-imx/imx9/Kconfig +++ b/arch/arm/mach-imx/imx9/Kconfig @@ -47,6 +47,8 @@ config TARGET_IMX93_11X11_EVK select OF_BOARD_FIXUP select IMX93 imply OF_UPSTREAM + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND config TARGET_IMX93_VAR_SOM bool "imx93_var_som" diff --git a/board/freescale/imx93_evk/imx93_evk.env b/board/freescale/imx93_evk/imx93_evk.env new file mode 100644 index 00000000000..f692f42f78a --- /dev/null +++ b/board/freescale/imx93_evk/imx93_evk.env @@ -0,0 +1,88 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ + +boot_targets=mmc0 mmc1 +boot_fit=no +bootm_size=0x10000000 +cntr_addr=0x98000000 +cntr_file=os_cntr_signed.bin +console=ttyLP0,115200 earlycon +fdt_addr_r=0x83000000 +fdt_addr=0x83000000 +fdtfile=CONFIG_DEFAULT_FDT_FILE +image=Image +mmcdev=CONFIG_SYS_MMC_ENV_DEV +mmcpart=1 +mmcroot=/dev/mmcblk1p2 rootwait rw +mmcautodetect=yes +mmcargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=${mmcroot} +prepare_mcore=setenv mcore_clk clk-imx93.mcore_booted +loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} +loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} +loadcntr=fatload mmc ${mmcdev}:${mmcpart} ${cntr_addr} ${cntr_file} +auth_os=auth_cntr ${cntr_addr} +sec_boot=no +boot_os=booti ${loadaddr} - ${fdt_addr_r} +mmcboot= + echo Booting from mmc ...; + run mmcargs; + if test ${sec_boot} = yes; then + if true; then + run boot_os; + else + echo ERR: failed to authenticate; + fi; + else + if run loadfdt; then + run boot_os; + else + echo WARN: Cannot load the DT; + fi; + fi; +netargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=/dev/nfs + ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp +netboot= + echo Booting from net ...; + run netargs; + if test ${ip_dyn} = yes; then + setenv get_cmd dhcp; + else + setenv get_cmd tftp; + fi; + if test ${sec_boot} = yes; then + ${get_cmd} ${cntr_addr} ${cntr_file}; + if true; then + run boot_os; + else + echo ERR: failed to authenticate; + fi; + else + ${get_cmd} ${loadaddr} ${image}; + if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then + run boot_os; + else + echo WARN: Cannot load the DT; + fi; + fi; +bsp_bootcmd= + echo Running BSP bootcmd ...; + mmc dev ${mmcdev}; + if mmc rescan; then + if run loadbootscript; then + run bootscript; + else + if test ${sec_boot} = yes; then + if run loadcntr; then + run mmcboot; + else + run netboot; + fi; + else + if run loadimage; then + run mmcboot; + else + run netboot; + fi; + fi; + fi; + fi; +scriptaddr=0x83500000 diff --git a/configs/imx93_11x11_evk_defconfig b/configs/imx93_11x11_evk_defconfig index df62eecdde4..43a67232d04 100644 --- a/configs/imx93_11x11_evk_defconfig +++ b/configs/imx93_11x11_evk_defconfig @@ -26,7 +26,7 @@ CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x88000000 CONFIG_SYS_MEMTEST_START=0x80000000 CONFIG_SYS_MEMTEST_END=0x90000000 CONFIG_REMAKE_ELF=y -CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx93-11x11-evk.dtb" CONFIG_SYS_CBSIZE=2048 CONFIG_SYS_PBSIZE=2074 diff --git a/include/configs/imx93_evk.h b/include/configs/imx93_evk.h index 260a5043d53..eb40a69d20c 100644 --- a/include/configs/imx93_evk.h +++ b/include/configs/imx93_evk.h @@ -17,117 +17,12 @@ #define CFG_MALLOC_F_ADDR 0x204D0000 #endif -#ifdef CONFIG_DISTRO_DEFAULTS -#define BOOT_TARGET_DEVICES(func) \ - func(MMC, mmc, 0) \ - func(MMC, mmc, 1) \ - -#include -#else -#define BOOTENV -#endif - #ifdef CONFIG_SYS_MMC_ENV_DEV #define IMX93_EVK_MMC_ENV_DEV CONFIG_SYS_MMC_ENV_DEV #else #define IMX93_EVK_MMC_ENV_DEV 0 #endif -/* Initial environment variables */ -#define CFG_EXTRA_ENV_SETTINGS \ - BOOTENV \ - "scriptaddr=0x83500000\0" \ - "kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "image=Image\0" \ - "splashimage=0x90000000\0" \ - "console=ttyLP0,115200 earlycon\0" \ - "fdt_addr_r=0x83000000\0" \ - "fdt_addr=0x83000000\0" \ - "cntr_addr=0x98000000\0" \ - "cntr_file=os_cntr_signed.bin\0" \ - "boot_fit=no\0" \ - "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ - "bootm_size=0x10000000\0" \ - "mmcdev=" __stringify(IMX93_EVK_MMC_ENV_DEV)"\0" \ - "mmcpart=1\0" \ - "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \ - "mmcautodetect=yes\0" \ - "mmcargs=setenv bootargs ${jh_clk} console=${console} root=${mmcroot}\0 " \ - "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \ - "bootscript=echo Running bootscript from mmc ...; " \ - "source\0" \ - "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ - "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile}\0" \ - "loadcntr=fatload mmc ${mmcdev}:${mmcpart} ${cntr_addr} ${cntr_file}\0" \ - "auth_os=auth_cntr ${cntr_addr}\0" \ - "boot_os=booti ${loadaddr} - ${fdt_addr_r};\0" \ - "mmcboot=echo Booting from mmc ...; " \ - "run mmcargs; " \ - "if test ${sec_boot} = yes; then " \ - "if run auth_os; then " \ - "run boot_os; " \ - "else " \ - "echo ERR: failed to authenticate; " \ - "fi; " \ - "else " \ - "if test ${boot_fit} = yes || test ${boot_fit} = try; then " \ - "bootm ${loadaddr}; " \ - "else " \ - "if run loadfdt; then " \ - "run boot_os; " \ - "else " \ - "echo WARN: Cannot load the DT; " \ - "fi; " \ - "fi;" \ - "fi;\0" \ - "netargs=setenv bootargs ${jh_clk} console=${console} " \ - "root=/dev/nfs " \ - "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ - "netboot=echo Booting from net ...; " \ - "run netargs; " \ - "if test ${ip_dyn} = yes; then " \ - "setenv get_cmd dhcp; " \ - "else " \ - "setenv get_cmd tftp; " \ - "fi; " \ - "if test ${sec_boot} = yes; then " \ - "${get_cmd} ${cntr_addr} ${cntr_file}; " \ - "if run auth_os; then " \ - "run boot_os; " \ - "else " \ - "echo ERR: failed to authenticate; " \ - "fi; " \ - "else " \ - "${get_cmd} ${loadaddr} ${image}; " \ - "if test ${boot_fit} = yes || test ${boot_fit} = try; then " \ - "bootm ${loadaddr}; " \ - "else " \ - "if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then " \ - "run boot_os; " \ - "else " \ - "echo WARN: Cannot load the DT; " \ - "fi; " \ - "fi;" \ - "fi;\0" \ - "bsp_bootcmd=echo Running BSP bootcmd ...; " \ - "mmc dev ${mmcdev}; if mmc rescan; then " \ - "if run loadbootscript; then " \ - "run bootscript; " \ - "else " \ - "if test ${sec_boot} = yes; then " \ - "if run loadcntr; then " \ - "run mmcboot; " \ - "else run netboot; " \ - "fi; " \ - "else " \ - "if run loadimage; then " \ - "run mmcboot; " \ - "else run netboot; " \ - "fi; " \ - "fi; " \ - "fi; " \ - "fi;" - /* Link Definitions */ #define CFG_SYS_INIT_RAM_ADDR 0x80000000 From d489e27c352077790f20a9b0e2c2ef431cd66d4b Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:03 +0800 Subject: [PATCH 02/25] imx: imx93_qsb: switch to BOOTSTD Switch to support BOOTSTD with a bsp bootcmd as fallback. Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx9/Kconfig | 2 ++ board/freescale/imx93_qsb/imx93_qsb.env | 29 ++++++++++++++++++++-- configs/imx93_9x9_qsb_defconfig | 3 +-- configs/imx93_9x9_qsb_inline_ecc_defconfig | 3 +-- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig index c5254608439..d756f3dcad2 100644 --- a/arch/arm/mach-imx/imx9/Kconfig +++ b/arch/arm/mach-imx/imx9/Kconfig @@ -41,6 +41,8 @@ config TARGET_IMX93_9X9_QSB select IMX93 select IMX9_LPDDR4X imply OF_UPSTREAM + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND config TARGET_IMX93_11X11_EVK bool "imx93_11x11_evk" diff --git a/board/freescale/imx93_qsb/imx93_qsb.env b/board/freescale/imx93_qsb/imx93_qsb.env index 92486c6f74d..c972d3eb251 100644 --- a/board/freescale/imx93_qsb/imx93_qsb.env +++ b/board/freescale/imx93_qsb/imx93_qsb.env @@ -10,6 +10,7 @@ fdt_addr_r=0x83000000 fdt_addr=0x83000000 fdtfile=CONFIG_DEFAULT_FDT_FILE image=Image +mmcdev=CONFIG_SYS_MMC_ENV_DEV mmcpart=1 mmcroot=/dev/mmcblk1p2 rootwait rw mmcautodetect=yes @@ -19,12 +20,13 @@ loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} loadcntr=fatload mmc ${mmcdev}:${mmcpart} ${cntr_addr} ${cntr_file} auth_os=auth_cntr ${cntr_addr} +sec_boot=no boot_os=booti ${loadaddr} - ${fdt_addr_r} mmcboot= echo Booting from mmc ...; run mmcargs; if test ${sec_boot} = yes; then - if run auth_os; then + if run true; then run boot_os; else echo ERR: failed to authenticate; @@ -48,7 +50,7 @@ netboot= fi; if test ${sec_boot} = yes; then ${get_cmd} ${cntr_addr} ${cntr_file}; - if run auth_os; then + if true; then run boot_os; else echo ERR: failed to authenticate; @@ -61,3 +63,26 @@ netboot= echo WARN: Cannot load the DT; fi; fi; +bsp_bootcmd= + echo Running BSP bootcmd ...; + mmc dev ${mmcdev}; + if mmc rescan; then + if run loadbootscript; then + run bootscript; + else + if test ${sec_boot} = yes; then + if run loadcntr; then + run mmcboot; + else + run netboot; + fi; + else + if run loadimage; then + run mmcboot; + else + run netboot; + fi; + fi; + fi; + fi; +scriptaddr=0x83500000 diff --git a/configs/imx93_9x9_qsb_defconfig b/configs/imx93_9x9_qsb_defconfig index 582fe5a318d..8bd2ddda7da 100644 --- a/configs/imx93_9x9_qsb_defconfig +++ b/configs/imx93_9x9_qsb_defconfig @@ -6,7 +6,6 @@ CONFIG_SYS_MALLOC_F_LEN=0x20000 CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_NR_DRAM_BANKS=2 -CONFIG_ENV_SOURCE_FILE="imx93_qsb" CONFIG_SF_DEFAULT_SPEED=40000000 CONFIG_ENV_SIZE=0x4000 CONFIG_ENV_OFFSET=0x700000 @@ -29,7 +28,7 @@ CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x88000000 CONFIG_SYS_MEMTEST_START=0x80000000 CONFIG_SYS_MEMTEST_END=0x90000000 CONFIG_REMAKE_ELF=y -CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx93-9x9-qsb.dtb" CONFIG_SYS_CBSIZE=2048 CONFIG_SYS_PBSIZE=2074 diff --git a/configs/imx93_9x9_qsb_inline_ecc_defconfig b/configs/imx93_9x9_qsb_inline_ecc_defconfig index c95145cce0e..3d07dfb0029 100644 --- a/configs/imx93_9x9_qsb_inline_ecc_defconfig +++ b/configs/imx93_9x9_qsb_inline_ecc_defconfig @@ -6,7 +6,6 @@ CONFIG_SYS_MALLOC_F_LEN=0x20000 CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_NR_DRAM_BANKS=2 -CONFIG_ENV_SOURCE_FILE="imx93_qsb" CONFIG_SF_DEFAULT_SPEED=40000000 CONFIG_ENV_SIZE=0x4000 CONFIG_ENV_OFFSET=0x700000 @@ -29,7 +28,7 @@ CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x88000000 CONFIG_SYS_MEMTEST_START=0x80000000 CONFIG_SYS_MEMTEST_END=0x90000000 CONFIG_REMAKE_ELF=y -CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx93-9x9-qsb.dtb" CONFIG_SYS_CBSIZE=2048 CONFIG_SYS_PBSIZE=2074 From 4854b2777cf6bc850851a8aaf6c6fc6686f737fd Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:04 +0800 Subject: [PATCH 03/25] imx: imx91_evk: switch to BOOTSTD Switch to support BOOTSTD with a bsp bootcmd as fallback. Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx9/Kconfig | 2 ++ board/freescale/imx91_evk/imx91_evk.env | 29 ++++++++++++++++++-- configs/imx91_11x11_evk_defconfig | 3 +- configs/imx91_11x11_evk_inline_ecc_defconfig | 3 +- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig index d756f3dcad2..49220c0955e 100644 --- a/arch/arm/mach-imx/imx9/Kconfig +++ b/arch/arm/mach-imx/imx9/Kconfig @@ -34,6 +34,8 @@ config TARGET_IMX91_11X11_EVK select OF_BOARD_FIXUP select IMX91 imply OF_UPSTREAM + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND config TARGET_IMX93_9X9_QSB bool "imx93_qsb" diff --git a/board/freescale/imx91_evk/imx91_evk.env b/board/freescale/imx91_evk/imx91_evk.env index 92486c6f74d..c972d3eb251 100644 --- a/board/freescale/imx91_evk/imx91_evk.env +++ b/board/freescale/imx91_evk/imx91_evk.env @@ -10,6 +10,7 @@ fdt_addr_r=0x83000000 fdt_addr=0x83000000 fdtfile=CONFIG_DEFAULT_FDT_FILE image=Image +mmcdev=CONFIG_SYS_MMC_ENV_DEV mmcpart=1 mmcroot=/dev/mmcblk1p2 rootwait rw mmcautodetect=yes @@ -19,12 +20,13 @@ loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} loadcntr=fatload mmc ${mmcdev}:${mmcpart} ${cntr_addr} ${cntr_file} auth_os=auth_cntr ${cntr_addr} +sec_boot=no boot_os=booti ${loadaddr} - ${fdt_addr_r} mmcboot= echo Booting from mmc ...; run mmcargs; if test ${sec_boot} = yes; then - if run auth_os; then + if run true; then run boot_os; else echo ERR: failed to authenticate; @@ -48,7 +50,7 @@ netboot= fi; if test ${sec_boot} = yes; then ${get_cmd} ${cntr_addr} ${cntr_file}; - if run auth_os; then + if true; then run boot_os; else echo ERR: failed to authenticate; @@ -61,3 +63,26 @@ netboot= echo WARN: Cannot load the DT; fi; fi; +bsp_bootcmd= + echo Running BSP bootcmd ...; + mmc dev ${mmcdev}; + if mmc rescan; then + if run loadbootscript; then + run bootscript; + else + if test ${sec_boot} = yes; then + if run loadcntr; then + run mmcboot; + else + run netboot; + fi; + else + if run loadimage; then + run mmcboot; + else + run netboot; + fi; + fi; + fi; + fi; +scriptaddr=0x83500000 diff --git a/configs/imx91_11x11_evk_defconfig b/configs/imx91_11x11_evk_defconfig index 6ee0b448f99..55ba71953c2 100644 --- a/configs/imx91_11x11_evk_defconfig +++ b/configs/imx91_11x11_evk_defconfig @@ -6,7 +6,6 @@ CONFIG_SYS_MALLOC_F_LEN=0x18000 CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_NR_DRAM_BANKS=2 -CONFIG_ENV_SOURCE_FILE="imx91_evk" CONFIG_SF_DEFAULT_SPEED=40000000 CONFIG_ENV_SIZE=0x4000 CONFIG_ENV_OFFSET=0x700000 @@ -31,7 +30,7 @@ CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x88000000 CONFIG_SYS_MEMTEST_START=0x80000000 CONFIG_SYS_MEMTEST_END=0x90000000 CONFIG_REMAKE_ELF=y -CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" CONFIG_OF_SYSTEM_SETUP=y CONFIG_DEFAULT_FDT_FILE="imx91-11x11-evk.dtb" CONFIG_SYS_CBSIZE=2048 diff --git a/configs/imx91_11x11_evk_inline_ecc_defconfig b/configs/imx91_11x11_evk_inline_ecc_defconfig index 761a6666264..0eabd7aa8b3 100644 --- a/configs/imx91_11x11_evk_inline_ecc_defconfig +++ b/configs/imx91_11x11_evk_inline_ecc_defconfig @@ -6,7 +6,6 @@ CONFIG_SYS_MALLOC_F_LEN=0x18000 CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_NR_DRAM_BANKS=2 -CONFIG_ENV_SOURCE_FILE="imx91_evk" CONFIG_SF_DEFAULT_SPEED=40000000 CONFIG_ENV_SIZE=0x4000 CONFIG_ENV_OFFSET=0x700000 @@ -31,7 +30,7 @@ CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x88000000 CONFIG_SYS_MEMTEST_START=0x80000000 CONFIG_SYS_MEMTEST_END=0x90000000 CONFIG_REMAKE_ELF=y -CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" CONFIG_OF_SYSTEM_SETUP=y CONFIG_DEFAULT_FDT_FILE="imx91-11x11-evk.dtb" CONFIG_SYS_CBSIZE=2048 From d4e0105e58f6983df2b94869da8690c3fdd4b272 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:05 +0800 Subject: [PATCH 04/25] imx: imx8mp_evk: Enable dynamic settings to mmcdev and mmcroot Enable dynamic settings to mmcdev and mmcroot for i.MX8MP-EVK Signed-off-by: Peng Fan --- board/freescale/common/Makefile | 2 +- board/freescale/imx8mp_evk/imx8mp_evk.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/board/freescale/common/Makefile b/board/freescale/common/Makefile index c2c86c0dd08..468a06725c1 100644 --- a/board/freescale/common/Makefile +++ b/board/freescale/common/Makefile @@ -59,7 +59,7 @@ obj-$(CONFIG_POWER_PFUZE100) += pfuze.o endif obj-$(CONFIG_DM_PMIC_PFUZE100) += pfuze.o obj-$(CONFIG_POWER_MC34VR500) += mc34vr500.o -ifneq (,$(filter $(SOC), imx8ulp imx9)) +ifneq (,$(filter $(SOC), imx8m imx8ulp imx9)) obj-y += mmc.o endif diff --git a/board/freescale/imx8mp_evk/imx8mp_evk.c b/board/freescale/imx8mp_evk/imx8mp_evk.c index 024b46ef8bc..2ff067bc675 100644 --- a/board/freescale/imx8mp_evk/imx8mp_evk.c +++ b/board/freescale/imx8mp_evk/imx8mp_evk.c @@ -3,6 +3,7 @@ * Copyright 2019 NXP */ +#include #include int board_init(void) @@ -12,6 +13,10 @@ int board_init(void) int board_late_init(void) { +#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC) + board_late_mmc_env_init(); +#endif + #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG env_set("board_name", "EVK"); env_set("board_rev", "iMX8MP"); From 4718e8adaff7408f7c825fa87e310baab836c373 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:06 +0800 Subject: [PATCH 05/25] imx: imx8mp_evk: Switch to BOOTSTD Move env to imx8mp_evk.env. Switch to support BOOTSTD with a bsp bootcmd as fallback. Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx8m/Kconfig | 2 + board/freescale/imx8mp_evk/imx8mp_evk.env | 57 +++++++++++++++++++++++ configs/imx8mp_evk_defconfig | 2 +- include/configs/imx8mp_evk.h | 21 --------- 4 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 board/freescale/imx8mp_evk/imx8mp_evk.env diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index b254a50b091..0cf3c1baffe 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -227,6 +227,8 @@ config TARGET_IMX8MP_EVK select ARCH_MISC_INIT select SPL_CRYPTO if SPL imply OF_UPSTREAM + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND config TARGET_IMX8MP_NAVQP bool "Emcraft Systems i.MX8M Plus NavQ+ board" diff --git a/board/freescale/imx8mp_evk/imx8mp_evk.env b/board/freescale/imx8mp_evk/imx8mp_evk.env new file mode 100644 index 00000000000..18f6c6e200e --- /dev/null +++ b/board/freescale/imx8mp_evk/imx8mp_evk.env @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ + +boot_fdt=try +boot_fit=no +boot_targets=mmc1 mmc2 +bootm_size=0x10000000 +console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200 +fdt_addr_r=0x43000000 +fdt_addr=0x43000000 +fdtfile=CONFIG_DEFAULT_FDT_FILE +image=Image +ip_dyn=yes +mmcdev=CONFIG_SYS_MMC_ENV_DEV +mmcpart=1 +mmcroot=/dev/mmcblk1p2 rootwait rw +mmcautodetect=yes +mmcargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=${mmcroot} +prepare_mcore=setenv mcore_clk clk-imx8mp.mcore_booted +loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} +loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} +mmcboot=echo Booting from mmc ...; + run mmcargs; + if test ${boot_fit} = yes || test ${boot_fit} = try; then + bootm ${loadaddr}; + else + if run loadfdt; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + fi; +netargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=/dev/nfs + ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp +netboot=echo Booting from net ...; + run netargs; + if test ${ip_dyn} = yes; then + setenv get_cmd dhcp; + else + setenv get_cmd tftp; + fi; + ${get_cmd} ${loadaddr} ${image}; + if test ${boot_fit} = yes || test ${boot_fit} = try; then + bootm ${loadaddr}; + else + if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + fi; +bsp_bootcmd=echo Running BSP bootcmd ...; + mmc dev ${mmcdev}; + if run loadimage; then + run mmcboot; + else + run netboot; + fi; diff --git a/configs/imx8mp_evk_defconfig b/configs/imx8mp_evk_defconfig index 5369f8b84a4..2438ab5d26a 100644 --- a/configs/imx8mp_evk_defconfig +++ b/configs/imx8mp_evk_defconfig @@ -26,8 +26,8 @@ CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x48000000 CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x3000 CONFIG_SPL_LOAD_FIT=y -CONFIG_DISTRO_DEFAULTS=y CONFIG_OF_SYSTEM_SETUP=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb" CONFIG_SYS_CBSIZE=2048 CONFIG_SYS_PBSIZE=2074 diff --git a/include/configs/imx8mp_evk.h b/include/configs/imx8mp_evk.h index 741ee39db1a..dfb5cd22528 100644 --- a/include/configs/imx8mp_evk.h +++ b/include/configs/imx8mp_evk.h @@ -17,27 +17,6 @@ #endif -#define BOOT_TARGET_DEVICES(func) \ - func(MMC, mmc, 1) \ - func(MMC, mmc, 2) - -#include - -/* Initial environment variables */ -#define CFG_EXTRA_ENV_SETTINGS \ - BOOTENV \ - "scriptaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "image=Image\0" \ - "console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200\0" \ - "fdt_addr_r=0x43000000\0" \ - "boot_fdt=try\0" \ - "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ - "initrd_addr=0x43800000\0" \ - "bootm_size=0x10000000\0" \ - "mmcpart=1\0" \ - "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \ - /* Link Definitions */ #define CFG_SYS_INIT_RAM_ADDR 0x40000000 From 2b28dec8ad4a8d39310774e96ec0728510e89d6f Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:07 +0800 Subject: [PATCH 06/25] imx: imx8mn_evk: Cleanup headers Drop unused headers and sort them Signed-off-by: Peng Fan --- board/freescale/imx8mn_evk/imx8mn_evk.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/board/freescale/imx8mn_evk/imx8mn_evk.c b/board/freescale/imx8mn_evk/imx8mn_evk.c index 6b6fb0a7dd2..f20ffbc5250 100644 --- a/board/freescale/imx8mn_evk/imx8mn_evk.c +++ b/board/freescale/imx8mn_evk/imx8mn_evk.c @@ -3,12 +3,10 @@ * Copyright 2019 NXP */ +#include +#include #include #include -#include -#include -#include -#include DECLARE_GLOBAL_DATA_PTR; From 07d5afc5623493ab8469ded0c839282ab54e636a Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:08 +0800 Subject: [PATCH 07/25] imx: imx8mn_evk: Drop DECLARE_GLOBAL_DATA_PTR There is no users of global data in imx8mn_evk.c, drop it. Signed-off-by: Peng Fan --- board/freescale/imx8mn_evk/imx8mn_evk.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/board/freescale/imx8mn_evk/imx8mn_evk.c b/board/freescale/imx8mn_evk/imx8mn_evk.c index f20ffbc5250..1b9dc51978b 100644 --- a/board/freescale/imx8mn_evk/imx8mn_evk.c +++ b/board/freescale/imx8mn_evk/imx8mn_evk.c @@ -3,13 +3,10 @@ * Copyright 2019 NXP */ -#include #include #include #include -DECLARE_GLOBAL_DATA_PTR; - int board_mmc_get_env_dev(int devno) { return devno; From 35e43f7f7592ff8e151da9adf482b80ec4d9aba4 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:09 +0800 Subject: [PATCH 08/25] imx: imx8mn_evk: Enable dynamic settings to mmcdev and mmcroot Enable dynamic settings to mmcdev and mmcroot for i.MX8MN-EVK Signed-off-by: Peng Fan --- board/freescale/imx8mn_evk/imx8mn_evk.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/board/freescale/imx8mn_evk/imx8mn_evk.c b/board/freescale/imx8mn_evk/imx8mn_evk.c index 1b9dc51978b..c62d7a47e21 100644 --- a/board/freescale/imx8mn_evk/imx8mn_evk.c +++ b/board/freescale/imx8mn_evk/imx8mn_evk.c @@ -3,6 +3,7 @@ * Copyright 2019 NXP */ +#include #include #include #include @@ -30,6 +31,10 @@ int board_init(void) int board_late_init(void) { +#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC) + board_late_mmc_env_init(); +#endif + #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG env_set("board_name", "DDR4 EVK"); env_set("board_rev", "iMX8MN"); From f8ab31eae42bbfd5cc3f8ad52694f3373a406b6a Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:10 +0800 Subject: [PATCH 09/25] imx: imx8mn_evk: Switch to BOOTSTD Move env to imx8mn_evk.env Switch to support BOOTSTD with a bsp bootcmd as fallback. Signed-off-by: Peng Fan --- board/freescale/imx8mn_evk/imx8mn_evk.env | 67 +++++++++++++++++++++++ configs/imx8mn_evk_defconfig | 2 +- include/configs/imx8mn_evk.h | 30 ---------- 3 files changed, 68 insertions(+), 31 deletions(-) create mode 100644 board/freescale/imx8mn_evk/imx8mn_evk.env diff --git a/board/freescale/imx8mn_evk/imx8mn_evk.env b/board/freescale/imx8mn_evk/imx8mn_evk.env new file mode 100644 index 00000000000..16a6543ffc6 --- /dev/null +++ b/board/freescale/imx8mn_evk/imx8mn_evk.env @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ + +boot_fdt=try +boot_fit=no +boot_targets=mmc1 mmc2 dhcp +bootm_size=0x10000000 +console=ttymxc1,115200 +fdt_addr_r=0x48000000 +fdtfile=CONFIG_DEFAULT_FDT_FILE +fdtoverlay_addr_r=0x49000000 +initrd_addr=0x48080000 +image=Image +ip_dyn=yes +kernel_addr_r=0x42000000 +loadaddr=CONFIG_SYS_LOAD_ADDR +mmcautodetect=yes +mmcdev=CONFIG_SYS_MMC_ENV_DEV +mmcpart=1 +mmcroot=/dev/mmcblk1p2 rootwait rw +prepare_mcore=setenv mcore_clk clk-imx8mn.mcore_booted; +pxefile_addr_r=0x40100000 +ramdisk_addr_r=0x48080000 +scriptaddr=0x40000000 + +mmcargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=${mmcroot} +prepare_mcore=setenv mcore_clk clk-imx8mn.mcore_booted +loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} +loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} +mmcboot=echo Booting from mmc ...; + run mmcargs; + if test ${boot_fit} = yes || test ${boot_fit} = try; then + bootm ${loadaddr}; + else + if run loadfdt; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + fi +netargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=/dev/nfs + ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp +netboot=echo Booting from net ...; + run netargs; + if test ${ip_dyn} = yes; then + setenv get_cmd dhcp; + else + setenv get_cmd tftp; + fi; + ${get_cmd} ${loadaddr} ${image}; + if test ${boot_fit} = yes || test ${boot_fit} = try; then + bootm ${loadaddr}; + else + if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + fi; +bsp_bootcmd=echo Running BSP bootcmd ...; + mmc dev ${mmcdev}; + if mmc rescan; then + if run loadimage; then + run mmcboot; + else + run netboot; + fi; + fi; diff --git a/configs/imx8mn_evk_defconfig b/configs/imx8mn_evk_defconfig index 43860fe3f56..967eeea4051 100644 --- a/configs/imx8mn_evk_defconfig +++ b/configs/imx8mn_evk_defconfig @@ -26,8 +26,8 @@ CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x48000000 CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x3000 CONFIG_SPL_LOAD_FIT=y -CONFIG_DISTRO_DEFAULTS=y CONFIG_OF_SYSTEM_SETUP=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx8mn-evk.dtb" CONFIG_SYS_CBSIZE=2048 CONFIG_SYS_PBSIZE=2074 diff --git a/include/configs/imx8mn_evk.h b/include/configs/imx8mn_evk.h index ca02e26c26e..9972dc17812 100644 --- a/include/configs/imx8mn_evk.h +++ b/include/configs/imx8mn_evk.h @@ -13,36 +13,6 @@ #define CFG_SYS_UBOOT_BASE \ (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512) -#define BOOT_TARGET_DEVICES(func) \ - func(MMC, mmc, 1) \ - func(MMC, mmc, 2) \ - func(DHCP, dhcp, na) - -#include - -/* Initial environment variables */ -/* see include/configs/ti_armv7_common.h */ -#define ENV_MEM_LAYOUT_SETTINGS \ - "loadaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "kernel_addr_r=0x42000000\0" \ - "fdt_addr_r=0x48000000\0" \ - "fdtoverlay_addr_r=0x49000000\0" \ - "ramdisk_addr_r=0x48080000\0" \ - "initrd_addr=0x48080000\0" \ - "scriptaddr=0x40000000\0" \ - "pxefile_addr_r=0x40100000\0" - -#define CFG_EXTRA_ENV_SETTINGS \ - "image=Image\0" \ - BOOTENV \ - "console=ttymxc1,115200\0" \ - "boot_fit=no\0" \ - "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ - "bootm_size=0x10000000\0" \ - "mmcpart=1\0" \ - "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \ - ENV_MEM_LAYOUT_SETTINGS - /* Link Definitions */ #define CFG_SYS_INIT_RAM_ADDR 0x40000000 From fc7bb3deccf1badac4746f2f75dfe9f0a806e4f8 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:11 +0800 Subject: [PATCH 10/25] imx: imx8mm_evk: Enable dynamic settings to mmcdev and mmcroot Enable dynamic settings to mmcdev and mmcroot for i.MX8MM-EVK Signed-off-by: Peng Fan --- board/freescale/imx8mm_evk/imx8mm_evk.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/board/freescale/imx8mm_evk/imx8mm_evk.c b/board/freescale/imx8mm_evk/imx8mm_evk.c index 4c4436af3b1..d41db8d31d8 100644 --- a/board/freescale/imx8mm_evk/imx8mm_evk.c +++ b/board/freescale/imx8mm_evk/imx8mm_evk.c @@ -59,6 +59,9 @@ int board_mmc_get_env_dev(int devno) int board_late_init(void) { + if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC)) + board_late_mmc_env_init(); + if (IS_ENABLED(CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG)) { env_set("board_name", "EVK"); env_set("board_rev", "iMX8MM"); From 364ba68ed1a1c1820379d6dd55f0ccc429b4bcc2 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:12 +0800 Subject: [PATCH 11/25] imx: imx8mm_evk: Switch to BOOTSTD Move env to imx8mm_evk.env Switch to support BOOTSTD with a bsp bootcmd as fallback. Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx8m/Kconfig | 4 ++ board/freescale/imx8mm_evk/imx8mm_evk.env | 67 +++++++++++++++++++++++ configs/imx8mm_evk_defconfig | 3 +- configs/imx8mm_evk_fspi_defconfig | 4 +- include/configs/imx8mm_evk.h | 22 -------- 5 files changed, 76 insertions(+), 24 deletions(-) create mode 100644 board/freescale/imx8mm_evk/imx8mm_evk.env diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index 0cf3c1baffe..28be6a22bf0 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -154,6 +154,8 @@ config TARGET_IMX8MN_EVK select FSL_CAAM select SPL_CRYPTO if SPL imply OF_UPSTREAM + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND config TARGET_IMX8MN_DDR4_EVK bool "imx8mn DDR4 EVK board" @@ -163,6 +165,8 @@ config TARGET_IMX8MN_DDR4_EVK select FSL_CAAM select SPL_CRYPTO if SPL imply OF_UPSTREAM + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND config TARGET_IMX8MN_VENICE bool "Support Gateworks Venice iMX8M Nano module" diff --git a/board/freescale/imx8mm_evk/imx8mm_evk.env b/board/freescale/imx8mm_evk/imx8mm_evk.env new file mode 100644 index 00000000000..29690e75b15 --- /dev/null +++ b/board/freescale/imx8mm_evk/imx8mm_evk.env @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ + +boot_fdt=try +boot_fit=no +boot_targets=mmc1 mmc2 dhcp +bootm_size=0x10000000 +console=ttymxc1,115200 +fdt_addr_r=0x48000000 +fdtfile=CONFIG_DEFAULT_FDT_FILE +fdtoverlay_addr_r=0x49000000 +initrd_addr=0x48080000 +image=Image +ip_dyn=yes +kernel_addr_r=0x42000000 +loadaddr=CONFIG_SYS_LOAD_ADDR +mmcautodetect=yes +mmcdev=CONFIG_SYS_MMC_ENV_DEV +mmcpart=1 +mmcroot=/dev/mmcblk1p2 rootwait rw +prepare_mcore=setenv mcore_clk clk-imx8mm.mcore_booted; +pxefile_addr_r=0x40100000 +ramdisk_addr_r=0x48080000 +scriptaddr=0x40000000 + +mmcargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=${mmcroot} +prepare_mcore=setenv mcore_clk clk-imx8mn.mcore_booted +loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} +loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} +mmcboot=echo Booting from mmc ...; + run mmcargs; + if test ${boot_fit} = yes || test ${boot_fit} = try; then + bootm ${loadaddr}; + else + if run loadfdt; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + fi +netargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=/dev/nfs + ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp +netboot=echo Booting from net ...; + run netargs; + if test ${ip_dyn} = yes; then + setenv get_cmd dhcp; + else + setenv get_cmd tftp; + fi; + ${get_cmd} ${loadaddr} ${image}; + if test ${boot_fit} = yes || test ${boot_fit} = try; then + bootm ${loadaddr}; + else + if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + fi; +bsp_bootcmd=echo Running BSP bootcmd ...; + mmc dev ${mmcdev}; + if mmc rescan; then + if run loadimage; then + run mmcboot; + else + run netboot; + fi; + fi; diff --git a/configs/imx8mm_evk_defconfig b/configs/imx8mm_evk_defconfig index 90757100c72..2c583c41571 100644 --- a/configs/imx8mm_evk_defconfig +++ b/configs/imx8mm_evk_defconfig @@ -24,8 +24,9 @@ CONFIG_SPL=y CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x3000 CONFIG_SPL_LOAD_FIT=y -CONFIG_DISTRO_DEFAULTS=y CONFIG_OF_SYSTEM_SETUP=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" +CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb" CONFIG_SYS_CBSIZE=2048 CONFIG_SYS_PBSIZE=2074 CONFIG_BOARD_LATE_INIT=y diff --git a/configs/imx8mm_evk_fspi_defconfig b/configs/imx8mm_evk_fspi_defconfig index fb4a4421cf0..af49b82c74c 100644 --- a/configs/imx8mm_evk_fspi_defconfig +++ b/configs/imx8mm_evk_fspi_defconfig @@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_LEN=0x2000000 CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_ENV_SOURCE_FILE="imx8mn_evk" CONFIG_SF_DEFAULT_SPEED=40000000 CONFIG_SF_DEFAULT_MODE=0 CONFIG_ENV_SIZE=0x1000 @@ -27,8 +28,9 @@ CONFIG_SPL=y CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x3000 CONFIG_SPL_LOAD_FIT=y -CONFIG_DISTRO_DEFAULTS=y CONFIG_OF_SYSTEM_SETUP=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" +CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb" CONFIG_SYS_CBSIZE=2048 CONFIG_SYS_PBSIZE=2074 CONFIG_BOARD_LATE_INIT=y diff --git a/include/configs/imx8mm_evk.h b/include/configs/imx8mm_evk.h index 3bbbd900dd4..957d9c05083 100644 --- a/include/configs/imx8mm_evk.h +++ b/include/configs/imx8mm_evk.h @@ -29,28 +29,6 @@ #endif -#define BOOT_TARGET_DEVICES(func) \ - func(MMC, mmc, 1) \ - func(MMC, mmc, 2) \ - func(DHCP, dhcp, na) - -#include - -/* Initial environment variables */ -#define CFG_EXTRA_ENV_SETTINGS \ - BOOTENV \ - "scriptaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "image=Image\0" \ - "console=ttymxc1,115200\0" \ - "fdt_addr_r=0x43000000\0" \ - "boot_fit=no\0" \ - "fdtfile=imx8mm-evk.dtb\0" \ - "initrd_addr=0x43800000\0" \ - "bootm_size=0x10000000\0" \ - "mmcpart=1\0" \ - "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \ - /* Link Definitions */ #define CFG_SYS_INIT_RAM_ADDR 0x40000000 From 74854d77506dcf1c8a3d292778c1ce98f8c47946 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:13 +0800 Subject: [PATCH 12/25] imx: imx8mq_evk: Cleanup headers Drop unused headers and sort the order. Signed-off-by: Peng Fan --- board/freescale/imx8mq_evk/imx8mq_evk.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/board/freescale/imx8mq_evk/imx8mq_evk.c b/board/freescale/imx8mq_evk/imx8mq_evk.c index ab920a4539c..64a2f258f7a 100644 --- a/board/freescale/imx8mq_evk/imx8mq_evk.c +++ b/board/freescale/imx8mq_evk/imx8mq_evk.c @@ -3,28 +3,12 @@ * Copyright 2018 NXP */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include "../common/pfuze.h" +#include +#include +#include DECLARE_GLOBAL_DATA_PTR; From c00e8e0f57b8dce8d3b9bf17545fb41c9a53fffe Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:14 +0800 Subject: [PATCH 13/25] imx: imx8mq_evk: Drop DECLARE_GLOBAL_DATA_PTR There is no gd used in the board file, so drop DECLARE_GLOBAL_DATA_PTR. Signed-off-by: Peng Fan --- board/freescale/imx8mq_evk/imx8mq_evk.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/board/freescale/imx8mq_evk/imx8mq_evk.c b/board/freescale/imx8mq_evk/imx8mq_evk.c index 64a2f258f7a..f833996d524 100644 --- a/board/freescale/imx8mq_evk/imx8mq_evk.c +++ b/board/freescale/imx8mq_evk/imx8mq_evk.c @@ -6,12 +6,9 @@ #include #include #include -#include #include #include -DECLARE_GLOBAL_DATA_PTR; - #define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1) #define WDOG_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) From 838c2fffaa71d981aaf4692693ca1d3cadfc8a7b Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:15 +0800 Subject: [PATCH 14/25] imx: imx8mq_evk: Enable dynamic settings to mmcdev and mmcroot Enable dynamic settings to mmcdev and mmcroot for i.MX8MQ-EVK Since we are here, clean up the including headers Signed-off-by: Peng Fan --- board/freescale/imx8mq_evk/imx8mq_evk.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/board/freescale/imx8mq_evk/imx8mq_evk.c b/board/freescale/imx8mq_evk/imx8mq_evk.c index f833996d524..18e83d90a08 100644 --- a/board/freescale/imx8mq_evk/imx8mq_evk.c +++ b/board/freescale/imx8mq_evk/imx8mq_evk.c @@ -50,6 +50,10 @@ int board_mmc_get_env_dev(int devno) int board_late_init(void) { +#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC) + board_late_mmc_env_init(); +#endif + #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG env_set("board_name", "EVK"); env_set("board_rev", "iMX8MQ"); From 7050bd925f7be3aace6809b176795a018ef06e5a Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:16 +0800 Subject: [PATCH 15/25] imx: imx8mq_evk: Switch to BOOTSTD Move env to imx8mq_evk.env Switch to support BOOTSTD with a bsp bootcmd as fallback. Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx8m/Kconfig | 2 + board/freescale/imx8mq_evk/imx8mq_evk.env | 60 +++++++++++++++++++++++ configs/imx8mq_evk_defconfig | 3 +- include/configs/imx8mq_evk.h | 22 --------- 4 files changed, 64 insertions(+), 23 deletions(-) create mode 100644 board/freescale/imx8mq_evk/imx8mq_evk.env diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index 28be6a22bf0..76a8be7798c 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -54,6 +54,8 @@ config TARGET_IMX8MQ_EVK select ARCH_MISC_INIT select SPL_CRYPTO if SPL imply OF_UPSTREAM + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND config TARGET_IMX8MQ_PHANBELL bool "imx8mq_phanbell" diff --git a/board/freescale/imx8mq_evk/imx8mq_evk.env b/board/freescale/imx8mq_evk/imx8mq_evk.env new file mode 100644 index 00000000000..dcfe1c2f2d4 --- /dev/null +++ b/board/freescale/imx8mq_evk/imx8mq_evk.env @@ -0,0 +1,60 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ + +boot_fdt=try +boot_targets=mmc1 mmc2 dhcp +bootm_size=0x10000000 +console=ttymxc0,115200 +fdt_addr_r=0x43000000 +fdtfile=CONFIG_DEFAULT_FDT_FILE +initrd_addr=0x43800000 +image=Image +ip_dyn=yes +kernel_addr_r=CONFIG_SYS_LOAD_ADDR +loadaddr=CONFIG_SYS_LOAD_ADDR +mmcautodetect=yes +mmcdev=CONFIG_SYS_MMC_ENV_DEV +mmcpart=1 +mmcroot=/dev/mmcblk1p2 rootwait rw +prepare_mcore=setenv mcore_clk clk-imx8mq.mcore_booted; +scriptaddr=CONFIG_SYS_LOAD_ADDR + +mmcargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=${mmcroot} +loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} +loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} +mmcboot=echo Booting from mmc ...; + run mmcargs; + if test ${boot_fdt} = yes || test ${boot_fdt} = try; then + if run loadfdt; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + else + echo wait for boot; + fi; +netargs=setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=/dev/nfs + ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp +netboot=echo Booting from net ...; + run netargs; + if test ${ip_dyn} = yes; then + setenv get_cmd dhcp; + else + setenv get_cmd tftp; + fi; + ${get_cmd} ${loadaddr} ${image}; + if test ${boot_fdt} = yes || test ${boot_fit} = try; then + if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then + booti ${loadaddr} - ${fdt_addr_r}; + else + echo WARN: Cannot load the DT; + fi; + fi; +bsp_bootcmd=echo Running BSP bootcmd ...; + mmc dev ${mmcdev}; + if mmc rescan; then + if run loadimage; then + run mmcboot; + else + run netboot; + fi; + fi; diff --git a/configs/imx8mq_evk_defconfig b/configs/imx8mq_evk_defconfig index a3a2333c982..97ef352dfb8 100644 --- a/configs/imx8mq_evk_defconfig +++ b/configs/imx8mq_evk_defconfig @@ -30,8 +30,9 @@ CONFIG_REMAKE_ELF=y CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x3000 CONFIG_SPL_LOAD_FIT=y -CONFIG_DISTRO_DEFAULTS=y CONFIG_OF_SYSTEM_SETUP=y +CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd" +CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb" CONFIG_SYS_PBSIZE=1050 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_BOARD_LATE_INIT=y diff --git a/include/configs/imx8mq_evk.h b/include/configs/imx8mq_evk.h index 666f46ac105..2a86240e2c6 100644 --- a/include/configs/imx8mq_evk.h +++ b/include/configs/imx8mq_evk.h @@ -26,28 +26,6 @@ #define CFG_FEC_MXC_PHYADDR 0 #endif -#define BOOT_TARGET_DEVICES(func) \ - func(MMC, mmc, 0) \ - func(MMC, mmc, 1) \ - func(DHCP, dhcp, na) - -#include - -/* Initial environment variables */ -#define CFG_EXTRA_ENV_SETTINGS \ - BOOTENV \ - "scriptaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ - "image=Image\0" \ - "console=ttymxc0,115200\0" \ - "fdt_addr_r=0x43000000\0" \ - "boot_fdt=try\0" \ - "fdtfile=imx8mq-evk.dtb\0" \ - "initrd_addr=0x43800000\0" \ - "bootm_size=0x10000000\0" \ - "mmcpart=1\0" \ - "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \ - /* Link Definitions */ #define CFG_SYS_INIT_RAM_ADDR 0x40000000 From 65bdb716d93ca3ea7eb4fc611eeb3a5dabc09d1c Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:17 +0800 Subject: [PATCH 16/25] imx: imx93-11x11-evk: drop duplicated nodes The upstream dts already has the lpi2c2 subnodes, so drop the duplicated ones in u-boot dtsi. Signed-off-by: Peng Fan --- arch/arm/dts/imx93-11x11-evk-u-boot.dtsi | 118 ----------------------- 1 file changed, 118 deletions(-) diff --git a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi index 408e601bc90..a99ba99bfb4 100644 --- a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi +++ b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi @@ -26,111 +26,6 @@ bootph-pre-ram; }; -&lpi2c2 { - #address-cells = <1>; - #size-cells = <0>; - clock-frequency = <400000>; - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&pinctrl_lpi2c2>; - pinctrl-1 = <&pinctrl_lpi2c2>; - status = "okay"; - - pmic@25 { - compatible = "nxp,pca9451a"; - reg = <0x25>; - interrupt-parent = <&pcal6524>; - interrupts = <11 IRQ_TYPE_LEVEL_LOW>; - - regulators { - buck1: BUCK1 { - regulator-name = "BUCK1"; - regulator-min-microvolt = <650000>; - regulator-max-microvolt = <2237500>; - regulator-boot-on; - regulator-always-on; - regulator-ramp-delay = <3125>; - }; - - buck2: BUCK2 { - regulator-name = "BUCK2"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <2187500>; - regulator-boot-on; - regulator-always-on; - regulator-ramp-delay = <3125>; - }; - - buck4: BUCK4{ - regulator-name = "BUCK4"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <3400000>; - regulator-boot-on; - regulator-always-on; - }; - - buck5: BUCK5{ - regulator-name = "BUCK5"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <3400000>; - regulator-boot-on; - regulator-always-on; - }; - - buck6: BUCK6 { - regulator-name = "BUCK6"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <3400000>; - regulator-boot-on; - regulator-always-on; - }; - - ldo1: LDO1 { - regulator-name = "LDO1"; - regulator-min-microvolt = <1600000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - regulator-always-on; - }; - - ldo4: LDO4 { - regulator-name = "LDO4"; - regulator-min-microvolt = <800000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - regulator-always-on; - }; - - ldo5: LDO5 { - regulator-name = "LDO5"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - regulator-always-on; - }; - }; - }; - - pcal6524: gpio@22 { - compatible = "nxp,pcal6524"; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_pcal6524>; - reg = <0x22>; - gpio-controller; - #gpio-cells = <2>; - interrupt-controller; - #interrupt-cells = <2>; - interrupt-parent = <&gpio3>; - interrupts = <27 IRQ_TYPE_LEVEL_LOW>; - }; - - adp5585gpio: gpio@34 { - compatible = "adp5585"; - reg = <0x34>; - gpio-controller; - #gpio-cells = <2>; - }; -}; - &aips1 { bootph-pre-ram; bootph-all; @@ -149,19 +44,6 @@ &iomuxc { bootph-pre-ram; bootph-some-ram; - - pinctrl_lpi2c2: lpi2c2grp { - fsl,pins = < - MX93_PAD_I2C2_SCL__LPI2C2_SCL 0x40000b9e - MX93_PAD_I2C2_SDA__LPI2C2_SDA 0x40000b9e - >; - }; - - pinctrl_pcal6524: pcal6524grp { - fsl,pins = < - MX93_PAD_CCM_CLKO2__GPIO3_IO27 0x31e - >; - }; }; ®_usdhc2_vmmc { From 2b6601b18e79208ad34b239c225b6cba2e2ddde4 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Thu, 9 Jan 2025 11:29:18 +0800 Subject: [PATCH 17/25] gpio: adp5585: Update compatible string i.MX93-11x11-EVK has switched to use upstream device tree, and use "adi,adp5585". Since i.MX93-11x11-EVK is the only user of this driver, so it is safe to drop "adp5585". Signed-off-by: Peng Fan --- drivers/gpio/adp5585_gpio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpio/adp5585_gpio.c b/drivers/gpio/adp5585_gpio.c index ea0cb75459b..114583b3c3b 100644 --- a/drivers/gpio/adp5585_gpio.c +++ b/drivers/gpio/adp5585_gpio.c @@ -224,7 +224,7 @@ static int adp5585_probe(struct udevice *dev) } static const struct udevice_id adp5585_ids[] = { - { .compatible = "adp5585" }, + { .compatible = "adi,adp5585" }, { } }; From 015483904c524377820d81ecc1e0a907c5ffc466 Mon Sep 17 00:00:00 2001 From: Yannic Moog Date: Fri, 10 Jan 2025 13:35:33 +0100 Subject: [PATCH 18/25] arm: imx8m: add OP-TEE node Add tee node in SoC u-boot device trees. Use a kconfig entry to specify load and entry addresses for the op-tee image in the respective defconfig. Default IMX8M_OPTEE_LOAD_ADDR is supplied. To keep it simple, the same addresses are used for each SoC as are defined in upstream tf-a (BL32_BASE) [1]. [1] https://github.com/ARM-software/arm-trusted-firmware/tree/master/plat/imx/imx8m Signed-off-by: Yannic Moog --- arch/arm/dts/imx8mm-u-boot.dtsi | 17 ++++++++++++++++- arch/arm/dts/imx8mn-u-boot.dtsi | 17 ++++++++++++++++- arch/arm/dts/imx8mp-u-boot.dtsi | 17 ++++++++++++++++- arch/arm/dts/imx8mq-u-boot.dtsi | 17 ++++++++++++++++- arch/arm/mach-imx/imx8m/Kconfig | 11 +++++++++++ 5 files changed, 75 insertions(+), 4 deletions(-) diff --git a/arch/arm/dts/imx8mm-u-boot.dtsi b/arch/arm/dts/imx8mm-u-boot.dtsi index d31bc822532..ecc2319279e 100644 --- a/arch/arm/dts/imx8mm-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-u-boot.dtsi @@ -164,6 +164,21 @@ }; #endif + tee: tee { + description = "OP-TEE"; + type = "tee"; + arch = "arm64"; + compression = "none"; + os = "tee"; + load = ; + entry = ; + + tee-os { + filename = "tee.bin"; + optional; + }; + }; + binman_fip: fip { arch = "arm64"; compression = "none"; @@ -192,7 +207,7 @@ fdt = "fdt-SEQ"; firmware = "uboot"; #ifndef CONFIG_ARMV8_PSCI - loadables = "atf"; + loadables = "atf", "tee"; #endif }; }; diff --git a/arch/arm/dts/imx8mn-u-boot.dtsi b/arch/arm/dts/imx8mn-u-boot.dtsi index 6d80d856365..4a4498b36b0 100644 --- a/arch/arm/dts/imx8mn-u-boot.dtsi +++ b/arch/arm/dts/imx8mn-u-boot.dtsi @@ -240,6 +240,21 @@ }; #endif + tee: tee { + description = "OP-TEE"; + type = "tee"; + arch = "arm64"; + compression = "none"; + os = "tee"; + load = ; + entry = ; + + tee-os { + filename = "tee.bin"; + optional; + }; + }; + binman_fip: fip { arch = "arm64"; compression = "none"; @@ -268,7 +283,7 @@ fdt = "fdt-SEQ"; firmware = "uboot"; #ifndef CONFIG_ARMV8_PSCI - loadables = "atf"; + loadables = "atf", "tee"; #endif }; }; diff --git a/arch/arm/dts/imx8mp-u-boot.dtsi b/arch/arm/dts/imx8mp-u-boot.dtsi index 56749ccacd2..9ede98a11e4 100644 --- a/arch/arm/dts/imx8mp-u-boot.dtsi +++ b/arch/arm/dts/imx8mp-u-boot.dtsi @@ -185,6 +185,21 @@ }; #endif + tee: tee { + description = "OP-TEE"; + type = "tee"; + arch = "arm64"; + compression = "none"; + os = "tee"; + load = ; + entry = ; + + tee-os { + filename = "tee.bin"; + optional; + }; + }; + @fdt-SEQ { description = "NAME"; type = "flat_dt"; @@ -204,7 +219,7 @@ fdt = "fdt-SEQ"; firmware = "uboot"; #ifndef CONFIG_ARMV8_PSCI - loadables = "atf"; + loadables = "atf", "tee"; #endif }; }; diff --git a/arch/arm/dts/imx8mq-u-boot.dtsi b/arch/arm/dts/imx8mq-u-boot.dtsi index d7a83a78f4d..93e2ef27f7c 100644 --- a/arch/arm/dts/imx8mq-u-boot.dtsi +++ b/arch/arm/dts/imx8mq-u-boot.dtsi @@ -144,6 +144,21 @@ }; #endif + tee: tee { + description = "OP-TEE"; + type = "tee"; + arch = "arm64"; + compression = "none"; + os = "tee"; + load = ; + entry = ; + + tee-os { + filename = "tee.bin"; + optional; + }; + }; + fdt { compression = "none"; description = "NAME"; @@ -164,7 +179,7 @@ fdt = "fdt"; firmware = "uboot"; #ifndef CONFIG_ARMV8_PSCI - loadables = "atf"; + loadables = "atf", "tee"; #endif }; }; diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index 76a8be7798c..0fe9c46e499 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -37,6 +37,17 @@ config SYS_HAS_ARMV8_SECURE_BASE If enabled, please also define the value for ARMV8_SECURE_BASE, for i.MX8M, it could be some address in OCRAM. +config IMX8M_OPTEE_LOAD_ADDR + hex "Load address of OPTEE image" + default 0xbe000000 if IMX8MM + default 0xbe000000 if IMX8MN + default 0x56000000 if IMX8MP + default 0xfe000000 if IMX8MQ + help + The load and entry address for the OPTEE image. This value defaults to + the one defined in tf-a if not provided in the board defconfig file. + + choice prompt "NXP i.MX8M board select" optional From 30581197f0934da76935c38dc93dcaa5a3fe5755 Mon Sep 17 00:00:00 2001 From: Yannic Moog Date: Fri, 10 Jan 2025 13:35:34 +0100 Subject: [PATCH 19/25] phycore-imx8mp_defconfig: add optee load address The phyBOARD-Pollux expects 0x56000000 address to load optee. Signed-off-by: Yannic Moog --- configs/phycore-imx8mp_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/phycore-imx8mp_defconfig b/configs/phycore-imx8mp_defconfig index 23981826109..ba716a6875b 100644 --- a/configs/phycore-imx8mp_defconfig +++ b/configs/phycore-imx8mp_defconfig @@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_LEN=0x2000000 CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_IMX8M_OPTEE_LOAD_ADDR=0x56000000 CONFIG_PHYTEC_SOM_DETECTION=y CONFIG_SF_DEFAULT_SPEED=80000000 CONFIG_ENV_SIZE=0x10000 From 128d09273d91a30159963e93e21d3b787fe210c6 Mon Sep 17 00:00:00 2001 From: Yannic Moog Date: Fri, 10 Jan 2025 13:35:35 +0100 Subject: [PATCH 20/25] imx8mm-phygate-tauri-l_defconfig: add optee load address The phyGATE-Tauri-L expects 0x56000000 address to load optee. Signed-off-by: Yannic Moog --- configs/imx8mm-phygate-tauri-l_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/imx8mm-phygate-tauri-l_defconfig b/configs/imx8mm-phygate-tauri-l_defconfig index 18fffa7405e..c87062404da 100644 --- a/configs/imx8mm-phygate-tauri-l_defconfig +++ b/configs/imx8mm-phygate-tauri-l_defconfig @@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_LEN=0x2000000 CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_IMX8M_OPTEE_LOAD_ADDR=0x56000000 CONFIG_ENV_SIZE=0x10000 CONFIG_ENV_OFFSET=0x3C0000 CONFIG_DM_GPIO=y From 142317ae072e57e3d2c7647a7b7a7b676e3611be Mon Sep 17 00:00:00 2001 From: Yannic Moog Date: Fri, 10 Jan 2025 13:35:36 +0100 Subject: [PATCH 21/25] phycore-imx8mm_defconfig: add optee load address The phyCORE i.MX 8M Mini expects 0x56000000 address to load optee. Signed-off-by: Yannic Moog --- configs/phycore-imx8mm_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/phycore-imx8mm_defconfig b/configs/phycore-imx8mm_defconfig index 3f4336837e9..5a3e8162799 100644 --- a/configs/phycore-imx8mm_defconfig +++ b/configs/phycore-imx8mm_defconfig @@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_LEN=0x2000000 CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_IMX8M_OPTEE_LOAD_ADDR=0x56000000 CONFIG_SF_DEFAULT_SPEED=80000000 CONFIG_ENV_SIZE=0x10000 CONFIG_ENV_OFFSET=0x3C0000 From 608023b1ef6b96c5597697acfa469ac2e2ada533 Mon Sep 17 00:00:00 2001 From: Yannic Moog Date: Fri, 10 Jan 2025 13:35:37 +0100 Subject: [PATCH 22/25] doc: phytec: imx8mp: add OP-TEE documentation Add documentation for the phyBOARD-Pollux i.MX 8M Plus on OP-TEE integration. Also add missing '-' to TF-A build instruction while at it. Signed-off-by: Yannic Moog --- doc/board/phytec/phycore-imx8mp.rst | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/board/phytec/phycore-imx8mp.rst b/doc/board/phytec/phycore-imx8mp.rst index fda751aeffb..50be9912653 100644 --- a/doc/board/phytec/phycore-imx8mp.rst +++ b/doc/board/phytec/phycore-imx8mp.rst @@ -9,6 +9,7 @@ Quick Start ----------- - Build the ARM Trusted firmware binary +- Build the OP-TEE binary (optional) - Get ddr firmware - Build U-Boot - Boot @@ -20,10 +21,26 @@ Build the ARM Trusted firmware binary $ git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git $ cd trusted-firmware-a - $ export CROSS_COMPILE=aarch64-linux-gnu + $ export CROSS_COMPILE=aarch64-linux-gnu- $ export IMX_BOOT_UART_BASE=0x30860000 + $ # with optee + $ make PLAT=imx8mp SPD=opteed bl31 + $ # without optee $ make PLAT=imx8mp bl31 +Build the OP-TEE binary (optional) +---------------------------------- + +.. code-block:: bash + + $ git clone https://github.com/OP-TEE/optee_os.git + $ cd optee_os + $ make CFG_TEE_BENCHMARK=n \ + CROSS_COMPILE=aarch64-linux-gnu- \ + O=out/arm \ + PLATFORM=imx-mx8mp_phyboard_pollux \ + CFG_TZDRAM_START=0x56000000 + Get the ddr firmware -------------------- @@ -42,6 +59,7 @@ Copy binaries .. code-block:: bash $ cp /build/imx8mp/release/bl31.bin . + $ cp /out/arm/core/tee-raw.bin tee.bin $ cp firmware-imx-8.19/firmware/ddr/synopsys/lpddr4*.bin . Build U-Boot From 99039271c00149322bec3f8fad9128fe4fa93502 Mon Sep 17 00:00:00 2001 From: Yannic Moog Date: Fri, 10 Jan 2025 13:35:38 +0100 Subject: [PATCH 23/25] doc: phytec: imx8mm: add OP-TEE documentation Add instructions on how to build and package OP-TEE for the phycore-imx8mm based boards. The build instructions are identical for phyGATE-Tauri-L and phyBOARD-Polis. Also fix missig '-' for TF-A build instructions. Signed-off-by: Yannic Moog --- board/phytec/phycore_imx8mm/MAINTAINERS | 1 + doc/board/phytec/imx8mm-optee-build.rsti | 14 ++++++++++++++ doc/board/phytec/imx8mm-phygate-tauri-l.rst | 9 ++++++++- doc/board/phytec/phycore-imx8mm.rst | 8 +++++++- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 doc/board/phytec/imx8mm-optee-build.rsti diff --git a/board/phytec/phycore_imx8mm/MAINTAINERS b/board/phytec/phycore_imx8mm/MAINTAINERS index 58c5e2d0af9..7631e1cb331 100644 --- a/board/phytec/phycore_imx8mm/MAINTAINERS +++ b/board/phytec/phycore_imx8mm/MAINTAINERS @@ -9,5 +9,6 @@ F: configs/imx8mm-phygate-tauri-l_defconfig F: configs/phycore-imx8mm_defconfig F: doc/board/phytec/imx8mm-phygate-tauri-l.rst F: doc/board/phytec/index.rst +F: doc/board/phytec/imx8mm-optee-build.rsti F: doc/board/phytec/phycore_imx8mm.rst F: include/configs/phycore_imx8mm.h diff --git a/doc/board/phytec/imx8mm-optee-build.rsti b/doc/board/phytec/imx8mm-optee-build.rsti new file mode 100644 index 00000000000..c83de5cc7cf --- /dev/null +++ b/doc/board/phytec/imx8mm-optee-build.rsti @@ -0,0 +1,14 @@ +Build the OP-TEE binary (optional) +---------------------------------- + +.. code-block:: bash + + $ git clone https://github.com/OP-TEE/optee_os.git + $ cd optee_os + $ make CFG_TEE_BENCHMARK=n \ + CROSS_COMPILE=aarch64-linux-gnu- \ + O=out/arm \ + PLATFORM=imx-mx8mmevk \ + CFG_TZDRAM_START=0x56000000 \ + CFG_DDR_SIZE=0x80000000 \ + CFG_UART_BASE=UART3_BASE diff --git a/doc/board/phytec/imx8mm-phygate-tauri-l.rst b/doc/board/phytec/imx8mm-phygate-tauri-l.rst index 28b614fd144..0d9e1024f8c 100644 --- a/doc/board/phytec/imx8mm-phygate-tauri-l.rst +++ b/doc/board/phytec/imx8mm-phygate-tauri-l.rst @@ -9,6 +9,7 @@ Quick Start ----------- - Build the ARM Trusted firmware binary +- Build the OP-TEE binary (optional) - Get ddr firmware - Build U-Boot - Boot @@ -20,10 +21,15 @@ Build the ARM Trusted firmware binary $ git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git $ cd trusted-firmware-a - $ export CROSS_COMPILE=aarch64-linux-gnu + $ export CROSS_COMPILE=aarch64-linux-gnu- $ export IMX_BOOT_UART_BASE=0x30880000 + $ # with optee + $ make PLAT=imx8mm BL32_BASE=0x56000000 SPD=opteed bl31 + $ # without optee $ make PLAT=imx8mm bl31 +.. include:: imx8mm-optee-build.rsti + Get the ddr firmware -------------------- @@ -42,6 +48,7 @@ Copy binaries .. code-block:: bash $ cp /build/imx8mm/release/bl31.bin . + $ cp /out/arm/core/tee-raw.bin tee.bin $ cp firmware-imx-8.23/firmware/ddr/synopsys/lpddr4*.bin . Build U-Boot diff --git a/doc/board/phytec/phycore-imx8mm.rst b/doc/board/phytec/phycore-imx8mm.rst index e9dc2259907..08f5949e02d 100644 --- a/doc/board/phytec/phycore-imx8mm.rst +++ b/doc/board/phytec/phycore-imx8mm.rst @@ -9,6 +9,7 @@ Quick Start ----------- - Build the ARM Trusted firmware binary +- Build the OP-TEE binary (optional) - Get ddr firmware - Build U-Boot - Boot @@ -20,10 +21,15 @@ Build the ARM Trusted firmware binary $ git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git $ cd trusted-firmware-a - $ export CROSS_COMPILE=aarch64-linux-gnu + $ export CROSS_COMPILE=aarch64-linux-gnu- $ export IMX_BOOT_UART_BASE=0x30880000 + $ # with optee + $ make PLAT=imx8mm BL32_BASE=0x56000000 SPD=opteed bl31 + $ # without optee $ make PLAT=imx8mm bl31 +.. include:: imx8mm-optee-build.rsti + Get the ddr firmware -------------------- From e06f6f43776d0e706dae4a86e43cc1894d90a6ae Mon Sep 17 00:00:00 2001 From: Alexander Sverdlin Date: Mon, 13 Jan 2025 22:15:15 +0100 Subject: [PATCH 24/25] configs: capricorn_cxg3: Enable CMD_WDT Capricorn boards have WDT (WDT_SIEMENS_PMIC) and U-Boot is not configured to trigger the WDT. Enable the "wdt" command to be able to stop the WDT from the command line. Signed-off-by: Alexander Sverdlin Reviewed-by: Heiko Schocher --- configs/capricorn_cxg3_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/capricorn_cxg3_defconfig b/configs/capricorn_cxg3_defconfig index 276445528a9..fa1c279ef94 100644 --- a/configs/capricorn_cxg3_defconfig +++ b/configs/capricorn_cxg3_defconfig @@ -76,6 +76,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y CONFIG_CMD_READ=y +CONFIG_CMD_WDT=y CONFIG_CMD_DHCP=y CONFIG_CMD_MII=y CONFIG_CMD_PING=y From 985268107d4c0389d154126aa74c1d21706a7ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Szymanski?= Date: Wed, 15 Jan 2025 16:41:13 +0100 Subject: [PATCH 25/25] imx: fdt: fix cooling-device property corruption MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The function disable_thermal_cpu_nodes() corrupts the cooling-device property. For example, booting an i.MX93 devices with only one A55 core (IMX93x1) with the cooling-device property set to: $ dtc -I dtb foo.dtb | grep cooling-device cooling-device = <0x08 0xffffffff 0xffffffff 0x09 0xffffffff 0xffffffff>; Linux shows the following error at boot: [ 1.715189] OF: /thermal-zones/cpu-thermal/cooling-maps/map0: could not find phandle 1083699869 [ 1.723977] thermal_sys: Add a cooling_device property with at least one device [ 1.731285] thermal thermal_zone0: binding zone cpu-thermal with cdev thermal-devfreq-0 failed:-2 because the cooling-device property in the device tree passed to the kernel is $ dtc -I dtb /sys/firmware/fdt | grep cooling-device cooling-device = <0x4097f29d 0x00 0xb05aef9d>; The issue is because the wrong variable type is passed to the function fdt_setprop() called in the function disable_thermal_cpu_nodes(). With the variable type fixed, the error at boot is gone and the property is properly set: $ dtc -I dtb /sys/firmware/fdt | grep cooling-device cooling-device = <0x08 0xffffffff 0xffffffff>; Signed-off-by: Sébastien Szymanski --- arch/arm/mach-imx/fdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/mach-imx/fdt.c b/arch/arm/mach-imx/fdt.c index 103c1fc5968..f19ab9edce4 100644 --- a/arch/arm/mach-imx/fdt.c +++ b/arch/arm/mach-imx/fdt.c @@ -39,7 +39,7 @@ static void disable_thermal_cpu_nodes(void *blob, u32 num_disabled_cores, u32 ma for (j = 0; j < cnt; j++) cooling_dev[j] = cpu_to_fdt32(cooling_dev[j]); - ret = fdt_setprop(blob, nodeoff, "cooling-device", &cooling_dev, + ret = fdt_setprop(blob, nodeoff, "cooling-device", cooling_dev, sizeof(__le32) * (num_le32 - num_disabled_cores * 3)); if (ret < 0) { printf("Warning: %s, cooling-device setprop failed %d\n",