aboutsummaryrefslogtreecommitdiff
path: root/board/st
diff options
context:
space:
mode:
authorPatrick Delaunay2020-03-18 09:24:55 +0100
committerPatrick Delaunay2020-05-14 09:02:12 +0200
commit8f035f7b48f79460d296824b37b69dd5cc0b9567 (patch)
tree4c8213413b0ba24698fa641bc5ed752280b5463e /board/st
parenteb845d6f8b72c5c12ecc8a455418e0dd7b8b79a1 (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.c14
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;