env/ext4.c: allow loading from an EXT4 partition on the MMC boot device

This parallels what I added for FAT in commit 6731bef696, 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>
This commit is contained in:
David Woodhouse 2020-08-04 10:05:47 +01:00 committed by Tom Rini
parent 4dee3f7851
commit b0493bb75a
2 changed files with 18 additions and 0 deletions

4
env/Kconfig vendored
View File

@ -477,6 +477,10 @@ config ENV_EXT4_DEVICE_AND_PART
If none, first valid partition in device D. If no If none, first valid partition in device D. If no
partition table then means device D. 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 config ENV_EXT4_FILE
string "Name of the EXT4 file to use for the environment" string "Name of the EXT4 file to use for the environment"
depends on ENV_IS_IN_EXT4 depends on ENV_IS_IN_EXT4

14
env/ext4.c vendored
View File

@ -41,7 +41,21 @@ __weak const char *env_ext4_get_intf(void)
__weak const char *env_ext4_get_dev_part(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; return (const char *)CONFIG_ENV_EXT4_DEVICE_AND_PART;
#endif
} }
static int env_ext4_save_buffer(env_t *env_new) static int env_ext4_save_buffer(env_t *env_new)