Enable saving variables to MMC(FAT) and SPI based on primary
bootmode. If bootmode is JTAG, dont save env anywhere(NOWHERE).

Enable ENV_FAT_DEVICE_AND_PART="0:auto" for Versal Gen2 platform.

Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbar...@amd.com>
---
 board/amd/versal2/board.c          | 32 ++++++++++++++++++++++++++++++
 configs/amd_versal2_virt_defconfig |  3 +++
 env/Kconfig                        |  2 +-
 3 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/board/amd/versal2/board.c b/board/amd/versal2/board.c
index 5651d516a9e..23c76238f01 100644
--- a/board/amd/versal2/board.c
+++ b/board/amd/versal2/board.c
@@ -341,3 +341,35 @@ int dram_init(void)
 void reset_cpu(void)
 {
 }
+
+#if defined(CONFIG_ENV_IS_NOWHERE)
+enum env_location env_get_location(enum env_operation op, int prio)
+{
+       u32 bootmode = versal_net_get_bootmode();
+
+       if (prio)
+               return ENVL_UNKNOWN;
+
+       switch (bootmode) {
+       case EMMC_MODE:
+       case SD_MODE:
+       case SD1_LSHFT_MODE:
+       case SD_MODE1:
+               if (IS_ENABLED(CONFIG_ENV_IS_IN_FAT))
+                       return ENVL_FAT;
+               if (IS_ENABLED(CONFIG_ENV_IS_IN_EXT4))
+                       return ENVL_EXT4;
+               return ENVL_NOWHERE;
+       case OSPI_MODE:
+       case QSPI_MODE_24BIT:
+       case QSPI_MODE_32BIT:
+               if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH))
+                       return ENVL_SPI_FLASH;
+               return ENVL_NOWHERE;
+       case JTAG_MODE:
+       case SELECTMAP_MODE:
+       default:
+               return ENVL_NOWHERE;
+       }
+}
+#endif
diff --git a/configs/amd_versal2_virt_defconfig 
b/configs/amd_versal2_virt_defconfig
index 9911caa0e46..a8d9f5cc777 100644
--- a/configs/amd_versal2_virt_defconfig
+++ b/configs/amd_versal2_virt_defconfig
@@ -66,6 +66,9 @@ CONFIG_PARTITION_TYPE_GUID=y
 CONFIG_OF_BOARD=y
 CONFIG_DTB_RESELECT=y
 CONFIG_MULTI_DTB_FIT=y
+CONFIG_ENV_IS_NOWHERE=y
+CONFIG_ENV_IS_IN_FAT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_NET_LWIP=y
diff --git a/env/Kconfig b/env/Kconfig
index 4438f0b392c..9507aeed12a 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -485,7 +485,7 @@ config ENV_FAT_DEVICE_AND_PART
        string "Device and partition for where to store the environemt in FAT"
        depends on ENV_IS_IN_FAT
        default "0:1" if TI_COMMON_CMD_OPTIONS
-       default "0:auto" if ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL || 
ARCH_VERSAL_NET
+       default "0:auto" if ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL || 
ARCH_VERSAL_NET || ARCH_VERSAL2
        default ":auto" if ARCH_SUNXI
        default "0" if ARCH_AT91
        help
-- 
2.34.1

Reply via email to