[U-Boot] [PATCH 2/5] sunxi: autodetect SD/eMMC device for environment

Andre Przywara andre.przywara at arm.com
Sat Jun 8 01:26:55 UTC 2019


When using the environment from a raw MMC device, we are required to
specify the desired device number at configuration time. This creates
problems when the same image is booted from SD cards and eMMC devices.

Override the generic weak definition of mmc_get_env_dev() to query for
the boot source, returning the corresponding device number. This will
automatically pick the environment from the right device.

Signed-off-by: Andre Przywara <andre.przywara at arm.com>
---
 board/sunxi/board.c            | 19 +++++++++++++++++++
 include/configs/sunxi-common.h |  7 -------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 98bc3cd0c1..973dba4578 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -208,6 +208,25 @@ enum env_location env_get_location(enum env_operation op, int prio)
 }
 #endif
 
+/* Determine whether to use the environment from SD card or eMMC. */
+int mmc_get_env_dev(void)
+{
+	/* Use the environment from the boot device, if booted from (e)MMC. */
+	switch (sunxi_get_boot_device()) {
+	case BOOT_DEVICE_MMC1:
+		return 0;
+	case BOOT_DEVICE_MMC2:
+		return 1;
+	}
+
+	/* If there is no eMMC configured, use the SD card. */
+	if (CONFIG_MMC_SUNXI_SLOT_EXTRA == -1)
+		return 0;
+
+	/* Otherwise use the environment on the eMMC. */
+	return 1;
+}
+
 #ifdef CONFIG_DM_MMC
 static void mmc_pinmux_setup(int sdc);
 #endif
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index fceb812448..aca0eca806 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -138,13 +138,6 @@
 #define CONFIG_BOARD_SIZE_LIMIT		0x7e000
 #endif
 
-#if CONFIG_MMC_SUNXI_SLOT_EXTRA != -1
-/* If we have two devices (most likely eMMC + MMC), favour the eMMC */
-#define CONFIG_SYS_MMC_ENV_DEV		1
-#else
-/* Otherwise, use the only device we have */
-#define CONFIG_SYS_MMC_ENV_DEV		0
-#endif
 #define CONFIG_SYS_MMC_MAX_DEVICE	4
 #endif
 
-- 
2.14.5



More information about the U-Boot mailing list