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>
diff --git a/board/st/common/stm32mp_mtdparts.c b/board/st/common/stm32mp_mtdparts.c
index 5028511..9f5897f 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 @@
 	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 @@
 	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 @@
 		break;
 	}
 
-	if (CONFIG_IS_ENABLED(OPTEE) &&
+	if (!serial && CONFIG_IS_ENABLED(OPTEE) &&
 	    tee_find_device(NULL, NULL, NULL, NULL))
 		tee = true;