From c85bf61b14f9caa34662d9b767b61ba2b5da74f0 Mon Sep 17 00:00:00 2001 From: Aristo Chen Date: Tue, 23 Jun 2026 14:15:15 +0000 Subject: arm: k3: select tifsstub via board_fit_config_name_match TI K3 AM62x/AM62Ax/AM62Px boards carry two or three mutually-exclusive tifsstub variants in their tispl.bin FIT images, all at the same load address. The existing approach loads every variant and then discards the wrong ones at runtime via a *p_size = 0 hack in board_fit_image_post_process(). Switch to selecting the appropriate FIT configuration up front via board_fit_config_name_match() so only the correct tifsstub is loaded in the first place. board_fit_config_name_match() is invoked by the R5 SPL during FIT config selection. get_device_type() is a simple register read that is available at that point, so the security state can be determined early. The matching logic is factored into k3_fit_config_match_security_state() in arch/arm/mach-k3/common.c so it can be shared by any K3 board that wants this scheme. It matches configurations by a suffix appended to the description string: -hs-se -> HS-SE (K3_DEVICE_TYPE_HS_SE) -hs-fs -> HS-FS (K3_DEVICE_TYPE_HS_FS) -gp -> GP (K3_DEVICE_TYPE_GP) Configurations without a security-state suffix (e.g. u-boot.img) do not match and fall through to the DTS-specified default config naturally. Each TI EVM board defines its board_fit_config_name_match() as a thin wrapper around the shared helper: - board/ti/am62x/evm.c (AM625 SK: hs-se, hs-fs, gp) - board/ti/am62ax/evm.c (AM62A SK: hs-se, hs-fs, gp) - board/ti/am62px/evm.c (AM62P SK: hs-se, hs-fs, gp) FIT configurations are split per security state in: - arch/arm/dts/k3-am625-sk-binman.dtsi (ti-falcon, ti-spl, ti-spl_unsigned: conf-hs-se/conf-hs-fs/conf-gp) - arch/arm/dts/k3-am62a-sk-binman.dtsi (ti-falcon, ti-spl: conf-hs-se/conf-hs-fs; no GP variant on AM62A) - arch/arm/dts/k3-am62p-sk-binman.dtsi (ti-falcon, ti-spl: conf-hs-se/conf-hs-fs; no GP variant on AM62P) The runtime filter in board_fit_image_post_process() is intentionally left in place. It becomes redundant once every board using the AM62x family dtsi files migrates to per-state configurations. The dtsi for phytec phycore and toradex verdin boards is updated by separate patches in this series, and the now-redundant runtime filter is removed by the final patch in the series. Signed-off-by: Aristo Chen Reviewed-by: Anshul Dalal --- arch/arm/dts/k3-am625-sk-binman.dtsi | 61 ++++++++++++++++++++++++-------- arch/arm/dts/k3-am62a-sk-binman.dtsi | 28 ++++++++++----- arch/arm/dts/k3-am62p-sk-binman.dtsi | 28 ++++++++++----- arch/arm/mach-k3/common.c | 27 ++++++++++++++ arch/arm/mach-k3/common.h | 10 ------ arch/arm/mach-k3/include/mach/hardware.h | 11 ++++++ board/ti/am62ax/evm.c | 6 ++++ board/ti/am62px/evm.c | 6 ++++ board/ti/am62x/evm.c | 6 ++++ 9 files changed, 140 insertions(+), 43 deletions(-) diff --git a/arch/arm/dts/k3-am625-sk-binman.dtsi b/arch/arm/dts/k3-am625-sk-binman.dtsi index ba29a047406..1717621a850 100644 --- a/arch/arm/dts/k3-am625-sk-binman.dtsi +++ b/arch/arm/dts/k3-am625-sk-binman.dtsi @@ -263,12 +263,21 @@ }; configurations { - default = "conf-0"; - conf-0 { - description = "k3-am625-sk-falcon"; + default = "conf-hs-fs"; + conf-hs-fs { + description = "k3-am625-sk-falcon-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm"; + }; + conf-hs-se { + description = "k3-am625-sk-falcon-hs-se"; + firmware = "atf"; + loadables = "tee", "tifsstub-hs", "dm"; + }; + conf-gp { + description = "k3-am625-sk-falcon-gp"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "tifsstub-gp", "dm"; + loadables = "tee", "tifsstub-gp", "dm"; }; }; }; @@ -376,13 +385,24 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am625-sk"; + conf-hs-fs { + description = "k3-am625-sk-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am625-sk-hs-se"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "tifsstub-gp", "dm", "spl"; + loadables = "tee", "tifsstub-hs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-gp { + description = "k3-am625-sk-gp"; + firmware = "atf"; + loadables = "tee", "tifsstub-gp", "dm", "spl"; fdt = "fdt-0"; }; }; @@ -497,13 +517,24 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am625-sk"; + conf-hs-fs { + description = "k3-am625-sk-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am625-sk-hs-se"; + firmware = "atf"; + loadables = "tee", "tifsstub-hs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-gp { + description = "k3-am625-sk-gp"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "tifsstub-gp", "dm", "spl"; + loadables = "tee", "tifsstub-gp", "dm", "spl"; fdt = "fdt-0"; }; }; diff --git a/arch/arm/dts/k3-am62a-sk-binman.dtsi b/arch/arm/dts/k3-am62a-sk-binman.dtsi index 49c90f5855c..6e7deb218e9 100644 --- a/arch/arm/dts/k3-am62a-sk-binman.dtsi +++ b/arch/arm/dts/k3-am62a-sk-binman.dtsi @@ -185,11 +185,16 @@ }; configurations { - default = "conf-0"; - conf-0 { - description = "k3-am62a7-sk-falcon"; + default = "conf-hs-fs"; + conf-hs-fs { + description = "k3-am62a7-sk-falcon-hs-fs"; + firmware = "atf"; + loadables = "tee", "dm", "tifsstub-fs"; + }; + conf-hs-se { + description = "k3-am62a7-sk-falcon-hs-se"; firmware = "atf"; - loadables = "tee", "dm", "tifsstub-hs", "tifsstub-fs"; + loadables = "tee", "dm", "tifsstub-hs"; }; }; }; @@ -284,13 +289,18 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - ti_spl_conf_0: conf-0 { - description = "k3-am62a7-sk"; + ti_spl_conf_0: conf-hs-fs { + description = "k3-am62a7-sk-hs-fs"; + firmware = "atf"; + loadables = "tee", "dm", "spl", "tifsstub-fs"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am62a7-sk-hs-se"; firmware = "atf"; - loadables = "tee", "dm", "spl", - "tifsstub-hs", "tifsstub-fs"; + loadables = "tee", "dm", "spl", "tifsstub-hs"; fdt = "fdt-0"; }; }; diff --git a/arch/arm/dts/k3-am62p-sk-binman.dtsi b/arch/arm/dts/k3-am62p-sk-binman.dtsi index cca56b76d69..c56ecad85a6 100644 --- a/arch/arm/dts/k3-am62p-sk-binman.dtsi +++ b/arch/arm/dts/k3-am62p-sk-binman.dtsi @@ -206,11 +206,16 @@ }; configurations { - default = "conf-0"; - conf-0 { - description = "k3-am62p5-sk-falcon"; + default = "conf-hs-fs"; + conf-hs-fs { + description = "k3-am62p5-sk-falcon-hs-fs"; firmware = "atf"; - loadables = "tee", "dm", "tifsstub-hs", "tifsstub-fs"; + loadables = "tee", "dm", "tifsstub-fs"; + }; + conf-hs-se { + description = "k3-am62p5-sk-falcon-hs-se"; + firmware = "atf"; + loadables = "tee", "dm", "tifsstub-hs"; }; }; }; @@ -309,13 +314,18 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am62px-sk"; + conf-hs-fs { + description = "k3-am62px-sk-hs-fs"; + firmware = "atf"; + loadables = "tee", "dm", "spl", "tifsstub-fs"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am62px-sk-hs-se"; firmware = "atf"; - loadables = "tee", "dm", "spl", - "tifsstub-hs", "tifsstub-fs"; + loadables = "tee", "dm", "spl", "tifsstub-hs"; fdt = "fdt-0"; }; }; diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c index 19a6e24f38b..6e382efdb3b 100644 --- a/arch/arm/mach-k3/common.c +++ b/arch/arm/mach-k3/common.c @@ -191,6 +191,33 @@ enum k3_device_type get_device_type(void) } } +int k3_fit_config_match_security_state(const char *name) +{ + const char *suffix; + size_t name_len, suffix_len; + + switch (get_device_type()) { + case K3_DEVICE_TYPE_HS_SE: + suffix = "-hs-se"; + break; + case K3_DEVICE_TYPE_HS_FS: + suffix = "-hs-fs"; + break; + case K3_DEVICE_TYPE_GP: + suffix = "-gp"; + break; + default: + return -EINVAL; + } + + name_len = strlen(name); + suffix_len = strlen(suffix); + if (name_len < suffix_len) + return -EINVAL; + + return strncmp(name + name_len - suffix_len, suffix, suffix_len); +} + #if defined(CONFIG_DISPLAY_CPUINFO) static const char *get_device_type_name(void) { diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h index 466ad22f895..37ff98d8992 100644 --- a/arch/arm/mach-k3/common.h +++ b/arch/arm/mach-k3/common.h @@ -32,15 +32,6 @@ enum k3_firewall_region_type { K3_FIREWALL_REGION_BACKGROUND }; -enum k3_device_type { - K3_DEVICE_TYPE_BAD, - K3_DEVICE_TYPE_GP, - K3_DEVICE_TYPE_TEST, - K3_DEVICE_TYPE_EMU, - K3_DEVICE_TYPE_HS_FS, - K3_DEVICE_TYPE_HS_SE, -}; - void setup_k3_mpu_regions(void); int early_console_init(void); void disable_linefill_optimization(void); @@ -55,7 +46,6 @@ const struct k3_speed_grade_map *k3_get_speed_grade_map(void); void k3_fix_rproc_clock(const char *path); void mmr_unlock(uintptr_t base, u32 partition); bool is_rom_loaded_sysfw(struct rom_extended_boot_data *data); -enum k3_device_type get_device_type(void); struct ti_sci_handle *get_ti_sci_handle(void); void do_board_detect(void); void ti_secure_image_check_binary(void **p_image, size_t *p_size); diff --git a/arch/arm/mach-k3/include/mach/hardware.h b/arch/arm/mach-k3/include/mach/hardware.h index b337a71956f..2c771a1195f 100644 --- a/arch/arm/mach-k3/include/mach/hardware.h +++ b/arch/arm/mach-k3/include/mach/hardware.h @@ -124,8 +124,19 @@ struct rom_extended_boot_data { u32 num_components; }; +enum k3_device_type { + K3_DEVICE_TYPE_BAD, + K3_DEVICE_TYPE_GP, + K3_DEVICE_TYPE_TEST, + K3_DEVICE_TYPE_EMU, + K3_DEVICE_TYPE_HS_FS, + K3_DEVICE_TYPE_HS_SE, +}; + u32 get_boot_device(void); const char *get_reset_reason(void); +enum k3_device_type get_device_type(void); +int k3_fit_config_match_security_state(const char *name); #define writel_verify(val, addr) \ do { \ diff --git a/board/ti/am62ax/evm.c b/board/ti/am62ax/evm.c index 4916eec3b2b..adb784e69a8 100644 --- a/board/ti/am62ax/evm.c +++ b/board/ti/am62ax/evm.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include @@ -17,6 +18,11 @@ #include "../common/fdt_ops.h" #include "../common/k3_32k_lfosc.h" +int board_fit_config_name_match(const char *name) +{ + return k3_fit_config_match_security_state(name); +} + #if defined(CONFIG_XPL_BUILD) void spl_perform_board_fixups(struct spl_image_info *spl_image) { diff --git a/board/ti/am62px/evm.c b/board/ti/am62px/evm.c index 8fde47fb1be..9fa0a1c9f72 100644 --- a/board/ti/am62px/evm.c +++ b/board/ti/am62px/evm.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -43,6 +44,11 @@ struct efi_capsule_update_info update_info = { .images = fw_images, }; +int board_fit_config_name_match(const char *name) +{ + return k3_fit_config_match_security_state(name); +} + #if IS_ENABLED(CONFIG_SPL_BUILD) void spl_board_init(void) { diff --git a/board/ti/am62x/evm.c b/board/ti/am62x/evm.c index 49e58ad6d6c..90beed341b6 100644 --- a/board/ti/am62x/evm.c +++ b/board/ti/am62x/evm.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -135,6 +136,11 @@ int board_late_init(void) } #endif +int board_fit_config_name_match(const char *name) +{ + return k3_fit_config_match_security_state(name); +} + #if defined(CONFIG_XPL_BUILD) void spl_board_init(void) { -- cgit v1.3.1 From 857c2151ca8d41add88fec01a7fea8965d0d2c74 Mon Sep 17 00:00:00 2001 From: Aristo Chen Date: Tue, 23 Jun 2026 14:15:16 +0000 Subject: board: phytec: phycore-am62: select tifsstub via FIT config Use the k3_fit_config_match_security_state() helper introduced in the earlier "arm: k3: select tifsstub via board_fit_config_name_match" patch to pick the right tifsstub variant on phycore AM62x and AM62Ax SoMs at FIT config selection time. The k3-am625-phycore-som-binman.dtsi and k3-am62a-phycore-som-binman.dtsi FIT images are split into per-security-state configurations (conf-hs-se, conf-hs-fs), and board_fit_config_name_match() in each phycore board file forwards to the shared K3 helper. Signed-off-by: Aristo Chen --- arch/arm/dts/k3-am625-phycore-som-binman.dtsi | 42 ++++++++++++++++++++------- arch/arm/dts/k3-am62a-phycore-som-binman.dtsi | 15 ++++++---- board/phytec/phycore_am62ax/phycore-am62ax.c | 6 ++++ board/phytec/phycore_am62x/phycore-am62x.c | 6 ++++ 4 files changed, 54 insertions(+), 15 deletions(-) diff --git a/arch/arm/dts/k3-am625-phycore-som-binman.dtsi b/arch/arm/dts/k3-am625-phycore-som-binman.dtsi index 0499c719396..6d57a5d9ffa 100644 --- a/arch/arm/dts/k3-am625-phycore-som-binman.dtsi +++ b/arch/arm/dts/k3-am625-phycore-som-binman.dtsi @@ -314,13 +314,24 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am625-phyboard-lyra-rdk"; + conf-hs-fs { + description = "k3-am625-phyboard-lyra-rdk-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am625-phyboard-lyra-rdk-hs-se"; + firmware = "atf"; + loadables = "tee", "tifsstub-hs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-gp { + description = "k3-am625-phyboard-lyra-rdk-gp"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "tifsstub-gp", "dm", "spl"; + loadables = "tee", "tifsstub-gp", "dm", "spl"; fdt = "fdt-0"; }; }; @@ -552,13 +563,24 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am625-phyboard-lyra-rdk"; + conf-hs-fs { + description = "k3-am625-phyboard-lyra-rdk-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am625-phyboard-lyra-rdk-hs-se"; + firmware = "atf"; + loadables = "tee", "tifsstub-hs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-gp { + description = "k3-am625-phyboard-lyra-rdk-gp"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "tifsstub-gp", "dm", "spl"; + loadables = "tee", "tifsstub-gp", "dm", "spl"; fdt = "fdt-0"; }; }; diff --git a/arch/arm/dts/k3-am62a-phycore-som-binman.dtsi b/arch/arm/dts/k3-am62a-phycore-som-binman.dtsi index 6f82a40908f..cdc9a100a04 100644 --- a/arch/arm/dts/k3-am62a-phycore-som-binman.dtsi +++ b/arch/arm/dts/k3-am62a-phycore-som-binman.dtsi @@ -247,13 +247,18 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am62a7-phyboard-lyra-rdk"; + conf-hs-fs { + description = "k3-am62a7-phyboard-lyra-rdk-hs-fs"; + firmware = "atf"; + loadables = "tee", "dm", "spl", "tifsstub-fs"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am62a7-phyboard-lyra-rdk-hs-se"; firmware = "atf"; - loadables = "tee", "dm", "spl", - "tifsstub-hs", "tifsstub-fs"; + loadables = "tee", "dm", "spl", "tifsstub-hs"; fdt = "fdt-0"; }; }; diff --git a/board/phytec/phycore_am62ax/phycore-am62ax.c b/board/phytec/phycore_am62ax/phycore-am62ax.c index 3e1c4102cc1..b22ffe9072f 100644 --- a/board/phytec/phycore_am62ax/phycore-am62ax.c +++ b/board/phytec/phycore_am62ax/phycore-am62ax.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "../common/am6_som_detection.h" @@ -57,3 +58,8 @@ void spl_board_init(void) dram_init_banksize(); } #endif + +int board_fit_config_name_match(const char *name) +{ + return k3_fit_config_match_security_state(name); +} diff --git a/board/phytec/phycore_am62x/phycore-am62x.c b/board/phytec/phycore_am62x/phycore-am62x.c index 6df521d789f..376379767cf 100644 --- a/board/phytec/phycore_am62x/phycore-am62x.c +++ b/board/phytec/phycore_am62x/phycore-am62x.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "phycore-ddr-data.h" #include "../common/k3/k3_ddrss_patch.h" @@ -237,3 +238,8 @@ void spl_board_init(void) MCU_CTRL_DEVICE_CLKOUT_32K_CTRL); } #endif + +int board_fit_config_name_match(const char *name) +{ + return k3_fit_config_match_security_state(name); +} -- cgit v1.3.1 From feb2b13377534725ee0f428ed4252db7fddaa57f Mon Sep 17 00:00:00 2001 From: Aristo Chen Date: Tue, 23 Jun 2026 14:15:17 +0000 Subject: board: toradex: verdin-am62: select tifsstub via FIT config Use the k3_fit_config_match_security_state() helper introduced in the earlier "arm: k3: select tifsstub via board_fit_config_name_match" patch to pick the right tifsstub variant on Verdin AM62 and AM62P SoMs at FIT config selection time. The k3-am625-verdin-wifi-dev-binman.dtsi and k3-am62p5-verdin-wifi-dev-binman.dtsi FIT images are split into per-security-state configurations (conf-hs-se, conf-hs-fs), and board_fit_config_name_match() in each verdin board file forwards to the shared K3 helper. The previous implementation returned 0 unconditionally which matched the first listed configuration regardless of the actual silicon, which after the dtsi split would load the wrong tifsstub variant on HS-SE parts. Signed-off-by: Aristo Chen --- arch/arm/dts/k3-am625-verdin-wifi-dev-binman.dtsi | 42 ++++++++++++++++------ arch/arm/dts/k3-am62p5-verdin-wifi-dev-binman.dtsi | 15 +++++--- board/toradex/verdin-am62/verdin-am62.c | 5 ++- board/toradex/verdin-am62p/verdin-am62p.c | 5 ++- 4 files changed, 46 insertions(+), 21 deletions(-) diff --git a/arch/arm/dts/k3-am625-verdin-wifi-dev-binman.dtsi b/arch/arm/dts/k3-am625-verdin-wifi-dev-binman.dtsi index e72065209f2..35b7f8b256e 100644 --- a/arch/arm/dts/k3-am625-verdin-wifi-dev-binman.dtsi +++ b/arch/arm/dts/k3-am625-verdin-wifi-dev-binman.dtsi @@ -299,13 +299,24 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am625-verdin-wifi-dev"; + conf-hs-fs { + description = "k3-am625-verdin-wifi-dev-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am625-verdin-wifi-dev-hs-se"; + firmware = "atf"; + loadables = "tee", "tifsstub-hs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-gp { + description = "k3-am625-verdin-wifi-dev-gp"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "tifsstub-gp", "dm", "spl"; + loadables = "tee", "tifsstub-gp", "dm", "spl"; fdt = "fdt-0"; }; }; @@ -418,13 +429,24 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am625-verdin-wifi-dev"; + conf-hs-fs { + description = "k3-am625-verdin-wifi-dev-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am625-verdin-wifi-dev-hs-se"; + firmware = "atf"; + loadables = "tee", "tifsstub-hs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-gp { + description = "k3-am625-verdin-wifi-dev-gp"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "tifsstub-gp", "dm", "spl"; + loadables = "tee", "tifsstub-gp", "dm", "spl"; fdt = "fdt-0"; }; }; diff --git a/arch/arm/dts/k3-am62p5-verdin-wifi-dev-binman.dtsi b/arch/arm/dts/k3-am62p5-verdin-wifi-dev-binman.dtsi index 2682ba13afb..307cac5ebc7 100644 --- a/arch/arm/dts/k3-am62p5-verdin-wifi-dev-binman.dtsi +++ b/arch/arm/dts/k3-am62p5-verdin-wifi-dev-binman.dtsi @@ -252,13 +252,18 @@ }; configurations { - default = "conf-0"; + default = "conf-hs-fs"; - conf-0 { - description = "k3-am62p5-verdin-wifi-dev"; + conf-hs-fs { + description = "k3-am62p5-verdin-wifi-dev-hs-fs"; + firmware = "atf"; + loadables = "tee", "tifsstub-fs", "dm", "spl"; + fdt = "fdt-0"; + }; + conf-hs-se { + description = "k3-am62p5-verdin-wifi-dev-hs-se"; firmware = "atf"; - loadables = "tee", "tifsstub-hs", "tifsstub-fs", - "dm", "spl"; + loadables = "tee", "tifsstub-hs", "dm", "spl"; fdt = "fdt-0"; }; }; diff --git a/board/toradex/verdin-am62/verdin-am62.c b/board/toradex/verdin-am62/verdin-am62.c index 26af1af2069..a174cc43ade 100644 --- a/board/toradex/verdin-am62/verdin-am62.c +++ b/board/toradex/verdin-am62/verdin-am62.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -57,12 +58,10 @@ phys_addr_t board_get_usable_ram_top(phys_size_t total_size) return 0x9C000000; } -#if defined(CONFIG_SPL_LOAD_FIT) int board_fit_config_name_match(const char *name) { - return 0; + return k3_fit_config_match_security_state(name); } -#endif #if IS_ENABLED(CONFIG_OF_LIBFDT) && IS_ENABLED(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) diff --git a/board/toradex/verdin-am62p/verdin-am62p.c b/board/toradex/verdin-am62p/verdin-am62p.c index ec7775e06a7..1e7fcc9fd9d 100644 --- a/board/toradex/verdin-am62p/verdin-am62p.c +++ b/board/toradex/verdin-am62p/verdin-am62p.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -83,12 +84,10 @@ int dram_init_banksize(void) return ret; } -#if IS_ENABLED(CONFIG_SPL_LOAD_FIT) int board_fit_config_name_match(const char *name) { - return 0; + return k3_fit_config_match_security_state(name); } -#endif #if IS_ENABLED(CONFIG_OF_LIBFDT) && IS_ENABLED(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) -- cgit v1.3.1 From a5567f46697a733a9ad03eaec9941c8d80e6fb40 Mon Sep 17 00:00:00 2001 From: Aristo Chen Date: Tue, 23 Jun 2026 14:15:18 +0000 Subject: arm: k3: drop redundant tifsstub runtime filter With all AM62x family boards (TI EVMs, phytec phycore, toradex verdin) now using per-security-state FIT configurations and selecting the right one via board_fit_config_name_match(), the runtime filter in board_fit_image_post_process() that zero'd out *p_size for the wrong tifsstub variant is no longer reached. Only one tifsstub variant is present in the selected FIT configuration, and it is always the correct one for the current silicon. Drop the filter so board_fit_image_post_process() simply debug-logs the variant name and returns. Acked-by: Neha Malcom Francis Reviewed-by: Anshul Dalal Signed-off-by: Aristo Chen --- arch/arm/mach-k3/r5/common.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/arch/arm/mach-k3/r5/common.c b/arch/arm/mach-k3/r5/common.c index 484d96f9536..13736ca5dbc 100644 --- a/arch/arm/mach-k3/r5/common.c +++ b/arch/arm/mach-k3/r5/common.c @@ -348,19 +348,7 @@ void board_fit_image_post_process(const void *fit, int node, void **p_image, } if (i < IMAGE_AMT && i > IMAGE_ID_DM_FW) { - int device_type = get_device_type(); - - if ((device_type == K3_DEVICE_TYPE_HS_SE && - strcmp(os, "tifsstub-hs")) || - (device_type == K3_DEVICE_TYPE_HS_FS && - strcmp(os, "tifsstub-fs")) || - (device_type == K3_DEVICE_TYPE_GP && - strcmp(os, "tifsstub-gp"))) { - *p_size = 0; - } else { - debug("tifsstub-type: %s\n", os); - } - + debug("tifsstub-type: %s\n", os); return; } -- cgit v1.3.1