stm32mp1: Add env_get_location()
authorPatrice Chotard <patrice.chotard@st.com>
Thu, 2 May 2019 16:28:05 +0000 (18:28 +0200)
committerPatrice Chotard <patrice.chotard@st.com>
Thu, 6 Jun 2019 15:40:14 +0000 (17:40 +0200)
In case of several environment location support, env_get_location
is needed to select the correct location depending of the boot
device .

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
board/st/stm32mp1/stm32mp1.c

index 316cd48195aeb3da3492d1c31219d8955910b55c..4f7d24acaa5266f2f01eb63e9d9344e1aab3026e 100644 (file)
@@ -7,6 +7,7 @@
 #include <config.h>
 #include <clk.h>
 #include <dm.h>
+#include <environment.h>
 #include <g_dnl.h>
 #include <generic-phy.h>
 #include <i2c.h>
@@ -506,6 +507,28 @@ void board_quiesce_devices(void)
        setup_led(LEDST_OFF);
 }
 
+enum env_location env_get_location(enum env_operation op, int prio)
+{
+       u32 bootmode = get_bootmode();
+
+       if (prio)
+               return ENVL_UNKNOWN;
+
+       switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
+#ifdef CONFIG_ENV_IS_IN_EXT4
+       case BOOT_FLASH_SD:
+       case BOOT_FLASH_EMMC:
+               return ENVL_EXT4;
+#endif
+#ifdef CONFIG_ENV_IS_IN_UBI
+       case BOOT_FLASH_NAND:
+               return ENVL_UBI;
+#endif
+       default:
+               return ENVL_NOWHERE;
+       }
+}
+
 #if defined(CONFIG_ENV_IS_IN_EXT4)
 const char *env_ext4_get_intf(void)
 {