Decode ECSPI boot device in env_get_location() from i.MX8M ROMAPI tables.
This is necessary to correctly identify env is in SPI NOR when the system
boots from SPI NOR attached to ECSPI.

Signed-off-by: Marek Vasut <ma...@denx.de>
Cc: Fabio Estevam <feste...@denx.de>
Cc: Peng Fan <peng....@nxp.com>
Cc: Stefano Babic <sba...@denx.de>
---
 arch/arm/include/asm/mach-imx/sys_proto.h | 1 +
 arch/arm/mach-imx/imx8m/soc.c             | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h 
b/arch/arm/include/asm/mach-imx/sys_proto.h
index 0c0c7814fb2..309f8d17959 100644
--- a/arch/arm/include/asm/mach-imx/sys_proto.h
+++ b/arch/arm/include/asm/mach-imx/sys_proto.h
@@ -159,6 +159,7 @@ enum boot_dev_type_e {
        BT_DEV_TYPE_MMC = 2,
        BT_DEV_TYPE_NAND = 3,
        BT_DEV_TYPE_FLEXSPINOR = 4,
+       BT_DEV_TYPE_SPI_NOR = 6,
 
        BT_DEV_TYPE_USB = 0xE,
        BT_DEV_TYPE_MEM_DEV = 0xF,
diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index 1a5a391443d..ccbbe545810 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -597,6 +597,9 @@ enum boot_device get_boot_device(void)
        case BT_DEV_TYPE_FLEXSPINOR:
                boot_dev = QSPI_BOOT;
                break;
+       case BT_DEV_TYPE_SPI_NOR:
+               boot_dev = SPI_NOR_BOOT;
+               break;
        case BT_DEV_TYPE_USB:
                boot_dev = USB_BOOT;
                break;
@@ -1335,6 +1338,7 @@ enum env_location env_get_location(enum env_operation op, 
int prio)
 
        switch (dev) {
        case QSPI_BOOT:
+       case SPI_NOR_BOOT:
                if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH))
                        return ENVL_SPI_FLASH;
                return ENVL_NOWHERE;
-- 
2.35.1

Reply via email to