summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2020-08-04 10:05:47 +0100
committerTom Rini <trini@konsulko.com>2020-10-14 11:16:34 -0400
commitb0493bb75a4c5ab8c729dd714bc8a4b2e93eb35b (patch)
tree1c16bb635dc3ac2cf435d21ee60f59955148fe43
parent4dee3f785124af2fb533e820579f2f1139c42f99 (diff)
downloadu-boot-b0493bb75a4c5ab8c729dd714bc8a4b2e93eb35b.tar.gz
u-boot-b0493bb75a4c5ab8c729dd714bc8a4b2e93eb35b.tar.xz
u-boot-b0493bb75a4c5ab8c729dd714bc8a4b2e93eb35b.zip
env/ext4.c: allow loading from an EXT4 partition on the MMC boot device
This parallels what I added for FAT in commit 6731bef6966, allowing the environment to be found in a specific partition on the device that the board's mmc_get_env_dev() returns. On the Banana Pi R2 that means the device that U-Boot was loaded from; either the internal eMMC or an SD card. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
-rw-r--r--env/Kconfig4
-rw-r--r--env/ext4.c14
2 files changed, 18 insertions, 0 deletions
diff --git a/env/Kconfig b/env/Kconfig
index c6ba08878d..aa63fae021 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -477,6 +477,10 @@ config ENV_EXT4_DEVICE_AND_PART
If none, first valid partition in device D. If no
partition table then means device D.
+ If ENV_EXT4_INTERFACE is set to "mmc" then device 'D' can be omitted,
+ leaving the string starting with a colon, and the boot device will
+ be used.
+
config ENV_EXT4_FILE
string "Name of the EXT4 file to use for the environment"
depends on ENV_IS_IN_EXT4
diff --git a/env/ext4.c b/env/ext4.c
index f823b69409..e666f7b945 100644
--- a/env/ext4.c
+++ b/env/ext4.c
@@ -41,7 +41,21 @@ __weak const char *env_ext4_get_intf(void)
__weak const char *env_ext4_get_dev_part(void)
{
+#ifdef CONFIG_MMC
+ static char *part_str;
+
+ if (!part_str) {
+ part_str = CONFIG_ENV_EXT4_DEVICE_AND_PART;
+ if (!strcmp(CONFIG_ENV_EXT4_INTERFACE, "mmc") && part_str[0] == ':') {
+ part_str = "0" CONFIG_ENV_EXT4_DEVICE_AND_PART;
+ part_str[0] += mmc_get_env_dev();
+ }
+ }
+
+ return part_str;
+#else
return (const char *)CONFIG_ENV_EXT4_DEVICE_AND_PART;
+#endif
}
static int env_ext4_save_buffer(env_t *env_new)