board: stm32mp1: support boot from spi-nand
authorPatrick Delaunay <patrick.delaunay@st.com>
Wed, 18 Mar 2020 08:22:52 +0000 (09:22 +0100)
committerPatrick Delaunay <patrick.delaunay@st.com>
Thu, 14 May 2020 07:02:12 +0000 (09:02 +0200)
Manage BOOT_FLASH_SPINAND, with boot_device="spi-nand"
and treat this value in bootcmd_stm32mp.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
arch/arm/mach-stm32mp/cpu.c
arch/arm/mach-stm32mp/include/mach/stm32.h
arch/arm/mach-stm32mp/spl.c
board/st/stm32mp1/stm32mp1.c
include/configs/stm32mp1.h

index 74d03fa7dd82fff41a0f1318fe2b109f6b77851e..73d8b753474d9f2f6f03ab6089ad0411a722c84f 100644 (file)
@@ -435,6 +435,10 @@ static void setup_boot_mode(void)
                env_set("boot_device", "nand");
                env_set("boot_instance", "0");
                break;
+       case BOOT_FLASH_SPINAND:
+               env_set("boot_device", "spi-nand");
+               env_set("boot_instance", "0");
+               break;
        case BOOT_FLASH_NOR:
                env_set("boot_device", "nor");
                env_set("boot_instance", "0");
index 76d593d785d5534e9622d1bf58688e05bf1d40c0..242bacc50b0a96ee09bf1e940c4a6f6d09e5aba4 100644 (file)
@@ -80,6 +80,9 @@ enum boot_device {
 
        BOOT_SERIAL_USB = 0x60,
        BOOT_SERIAL_USB_OTG = 0x62,
+
+       BOOT_FLASH_SPINAND = 0x70,
+       BOOT_FLASH_SPINAND_1 = 0x71,
 };
 
 /* TAMP registers */
index 9fbc3ac953dabbd066b4a959471f3bf53cdebac9..760fe45f56fcd9e0cff075c37d12f916c3008ca2 100644 (file)
@@ -39,6 +39,8 @@ u32 spl_boot_device(void)
                return BOOT_DEVICE_NAND;
        case BOOT_FLASH_NOR_QSPI:
                return BOOT_DEVICE_SPI;
+       case BOOT_FLASH_SPINAND_1:
+               return BOOT_DEVICE_NONE; /* SPINAND not supported in SPL */
        }
 
        return BOOT_DEVICE_MMC1;
index 496ca56a1458beb300faa2b12192b80088d30a70..fe54947c1c757487a137517489be342e1505c431 100644 (file)
@@ -789,6 +789,7 @@ enum env_location env_get_location(enum env_operation op, int prio)
 #endif
 #ifdef CONFIG_ENV_IS_IN_UBI
        case BOOT_FLASH_NAND:
+       case BOOT_FLASH_SPINAND:
                return ENVL_UBI;
 #endif
 #ifdef CONFIG_ENV_IS_IN_SPI_FLASH
@@ -829,6 +830,7 @@ int ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FDT_FIXUP_PARTITIONS
        struct node_info nodes[] = {
                { "st,stm32f469-qspi",          MTD_DEV_TYPE_NOR,  },
+               { "st,stm32f469-qspi",          MTD_DEV_TYPE_SPINAND},
                { "st,stm32mp15-fmc2",          MTD_DEV_TYPE_NAND, },
        };
        fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
index feb4cc21a9f746fa7a1bce2a9d4ac16a5fa14768..f271b84a59eda33ade155969727794b12d0e20d5 100644 (file)
  * bootcmd for stm32mp1:
  * for serial/usb: execute the stm32prog command
  * for mmc boot (eMMC, SD card), boot only on the same device
- * for nand boot, boot with on ubifs partition on nand
+ * for nand or spi-nand boot, boot with on ubifs partition on UBI partition
  * for nor boot, use the default order
  */
 #define STM32MP_BOOTCMD "bootcmd_stm32mp=" \
                "run env_check;" \
                "if test ${boot_device} = mmc;" \
                "then env set boot_targets \"mmc${boot_instance}\"; fi;" \
-               "if test ${boot_device} = nand;" \
+               "if test ${boot_device} = nand ||" \
+                 " test ${boot_device} = spi-nand ;" \
                "then env set boot_targets ubifs0; fi;" \
                "run distro_bootcmd;" \
        "fi;\0"