diff options
author | Patrick Delaunay | 2020-03-18 09:24:55 +0100 |
---|---|---|
committer | Patrick Delaunay | 2020-05-14 09:02:12 +0200 |
commit | 8f035f7b48f79460d296824b37b69dd5cc0b9567 (patch) | |
tree | 4c8213413b0ba24698fa641bc5ed752280b5463e /board/st | |
parent | eb845d6f8b72c5c12ecc8a455418e0dd7b8b79a1 (diff) |
stm32mp: stm32prog: adapt the MTD partitions
Dynamically adapt the MTD partitions in NOR/NAND/SPI-NAND when stm32prog
command detects in the parsed flash layout files:
- a fsbl partition in NOR.
- a tee partition in NOR/NAND/SPI-NAND
Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
Diffstat (limited to 'board/st')
-rw-r--r-- | board/st/common/stm32mp_mtdparts.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/board/st/common/stm32mp_mtdparts.c b/board/st/common/stm32mp_mtdparts.c index 50285110770..9f5897f8c86 100644 --- a/board/st/common/stm32mp_mtdparts.c +++ b/board/st/common/stm32mp_mtdparts.c @@ -4,12 +4,14 @@ */ #include <common.h> +#include <dfu.h> #include <dm.h> #include <env.h> #include <env_internal.h> #include <mtd.h> #include <mtd_node.h> #include <tee.h> +#include <asm/arch/stm32prog.h> #include <asm/arch/sys_proto.h> #define MTDPARTS_LEN 256 @@ -66,7 +68,7 @@ void board_mtdparts_default(const char **mtdids, const char **mtdparts) static char parts[3 * MTDPARTS_LEN + 1]; static char ids[MTDIDS_LEN + 1]; static bool mtd_initialized; - bool tee, nor, nand, spinand; + bool tee, nor, nand, spinand, serial; if (mtd_initialized) { *mtdids = ids; @@ -78,10 +80,18 @@ void board_mtdparts_default(const char **mtdids, const char **mtdparts) nor = false; nand = false; spinand = false; + serial = false; switch (get_bootmode() & TAMP_BOOT_DEVICE_MASK) { case BOOT_SERIAL_UART: case BOOT_SERIAL_USB: + serial = true; + if (CONFIG_IS_ENABLED(CMD_STM32PROG)) { + tee = stm32prog_get_tee_partitions(); + nor = stm32prog_get_fsbl_nor(); + } + nand = true; + spinand = true; break; case BOOT_FLASH_NAND: nand = true; @@ -96,7 +106,7 @@ void board_mtdparts_default(const char **mtdids, const char **mtdparts) break; } - if (CONFIG_IS_ENABLED(OPTEE) && + if (!serial && CONFIG_IS_ENABLED(OPTEE) && tee_find_device(NULL, NULL, NULL, NULL)) tee = true; |