board: stm32mp1: support boot from spi-nand

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>
This commit is contained in:
Patrick Delaunay 2020-03-18 09:22:52 +01:00
parent ccf6e9ff95
commit b664a74537
5 changed files with 14 additions and 2 deletions

View File

@ -435,6 +435,10 @@ static void setup_boot_mode(void)
env_set("boot_device", "nand"); env_set("boot_device", "nand");
env_set("boot_instance", "0"); env_set("boot_instance", "0");
break; break;
case BOOT_FLASH_SPINAND:
env_set("boot_device", "spi-nand");
env_set("boot_instance", "0");
break;
case BOOT_FLASH_NOR: case BOOT_FLASH_NOR:
env_set("boot_device", "nor"); env_set("boot_device", "nor");
env_set("boot_instance", "0"); env_set("boot_instance", "0");

View File

@ -80,6 +80,9 @@ enum boot_device {
BOOT_SERIAL_USB = 0x60, BOOT_SERIAL_USB = 0x60,
BOOT_SERIAL_USB_OTG = 0x62, BOOT_SERIAL_USB_OTG = 0x62,
BOOT_FLASH_SPINAND = 0x70,
BOOT_FLASH_SPINAND_1 = 0x71,
}; };
/* TAMP registers */ /* TAMP registers */

View File

@ -39,6 +39,8 @@ u32 spl_boot_device(void)
return BOOT_DEVICE_NAND; return BOOT_DEVICE_NAND;
case BOOT_FLASH_NOR_QSPI: case BOOT_FLASH_NOR_QSPI:
return BOOT_DEVICE_SPI; return BOOT_DEVICE_SPI;
case BOOT_FLASH_SPINAND_1:
return BOOT_DEVICE_NONE; /* SPINAND not supported in SPL */
} }
return BOOT_DEVICE_MMC1; return BOOT_DEVICE_MMC1;

View File

@ -789,6 +789,7 @@ enum env_location env_get_location(enum env_operation op, int prio)
#endif #endif
#ifdef CONFIG_ENV_IS_IN_UBI #ifdef CONFIG_ENV_IS_IN_UBI
case BOOT_FLASH_NAND: case BOOT_FLASH_NAND:
case BOOT_FLASH_SPINAND:
return ENVL_UBI; return ENVL_UBI;
#endif #endif
#ifdef CONFIG_ENV_IS_IN_SPI_FLASH #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 #ifdef CONFIG_FDT_FIXUP_PARTITIONS
struct node_info nodes[] = { struct node_info nodes[] = {
{ "st,stm32f469-qspi", MTD_DEV_TYPE_NOR, }, { "st,stm32f469-qspi", MTD_DEV_TYPE_NOR, },
{ "st,stm32f469-qspi", MTD_DEV_TYPE_SPINAND},
{ "st,stm32mp15-fmc2", MTD_DEV_TYPE_NAND, }, { "st,stm32mp15-fmc2", MTD_DEV_TYPE_NAND, },
}; };
fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes)); fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));

View File

@ -122,7 +122,7 @@
* bootcmd for stm32mp1: * bootcmd for stm32mp1:
* for serial/usb: execute the stm32prog command * for serial/usb: execute the stm32prog command
* for mmc boot (eMMC, SD card), boot only on the same device * 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 * for nor boot, use the default order
*/ */
#define STM32MP_BOOTCMD "bootcmd_stm32mp=" \ #define STM32MP_BOOTCMD "bootcmd_stm32mp=" \
@ -133,7 +133,8 @@
"run env_check;" \ "run env_check;" \
"if test ${boot_device} = mmc;" \ "if test ${boot_device} = mmc;" \
"then env set boot_targets \"mmc${boot_instance}\"; fi;" \ "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;" \ "then env set boot_targets ubifs0; fi;" \
"run distro_bootcmd;" \ "run distro_bootcmd;" \
"fi;\0" "fi;\0"