mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 01:02:19 +02:00
env: ext4: Allow overriding interface, device and partition
For platform which can boot on different device, this allows to override interface, device and partition from board code. Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
This commit is contained in:
34
env/ext4.c
vendored
34
env/ext4.c
vendored
@@ -30,6 +30,16 @@
|
|||||||
#include <ext4fs.h>
|
#include <ext4fs.h>
|
||||||
#include <mmc.h>
|
#include <mmc.h>
|
||||||
|
|
||||||
|
__weak const char *env_ext4_get_intf(void)
|
||||||
|
{
|
||||||
|
return (const char *)CONFIG_ENV_EXT4_INTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
__weak const char *env_ext4_get_dev_part(void)
|
||||||
|
{
|
||||||
|
return (const char *)CONFIG_ENV_EXT4_DEVICE_AND_PART;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_SAVEENV
|
#ifdef CONFIG_CMD_SAVEENV
|
||||||
static int env_ext4_save(void)
|
static int env_ext4_save(void)
|
||||||
{
|
{
|
||||||
@@ -38,13 +48,14 @@ static int env_ext4_save(void)
|
|||||||
disk_partition_t info;
|
disk_partition_t info;
|
||||||
int dev, part;
|
int dev, part;
|
||||||
int err;
|
int err;
|
||||||
|
const char *ifname = env_ext4_get_intf();
|
||||||
|
const char *dev_and_part = env_ext4_get_dev_part();
|
||||||
|
|
||||||
err = env_export(&env_new);
|
err = env_export(&env_new);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
part = blk_get_device_part_str(CONFIG_ENV_EXT4_INTERFACE,
|
part = blk_get_device_part_str(ifname, dev_and_part,
|
||||||
CONFIG_ENV_EXT4_DEVICE_AND_PART,
|
|
||||||
&dev_desc, &info, 1);
|
&dev_desc, &info, 1);
|
||||||
if (part < 0)
|
if (part < 0)
|
||||||
return 1;
|
return 1;
|
||||||
@@ -54,8 +65,7 @@ static int env_ext4_save(void)
|
|||||||
|
|
||||||
if (!ext4fs_mount(info.size)) {
|
if (!ext4fs_mount(info.size)) {
|
||||||
printf("\n** Unable to use %s %s for saveenv **\n",
|
printf("\n** Unable to use %s %s for saveenv **\n",
|
||||||
CONFIG_ENV_EXT4_INTERFACE,
|
ifname, dev_and_part);
|
||||||
CONFIG_ENV_EXT4_DEVICE_AND_PART);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,8 +75,7 @@ static int env_ext4_save(void)
|
|||||||
|
|
||||||
if (err == -1) {
|
if (err == -1) {
|
||||||
printf("\n** Unable to write \"%s\" from %s%d:%d **\n",
|
printf("\n** Unable to write \"%s\" from %s%d:%d **\n",
|
||||||
CONFIG_ENV_EXT4_FILE, CONFIG_ENV_EXT4_INTERFACE, dev,
|
CONFIG_ENV_EXT4_FILE, ifname, dev, part);
|
||||||
part);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,14 +92,15 @@ static int env_ext4_load(void)
|
|||||||
int dev, part;
|
int dev, part;
|
||||||
int err;
|
int err;
|
||||||
loff_t off;
|
loff_t off;
|
||||||
|
const char *ifname = env_ext4_get_intf();
|
||||||
|
const char *dev_and_part = env_ext4_get_dev_part();
|
||||||
|
|
||||||
#ifdef CONFIG_MMC
|
#ifdef CONFIG_MMC
|
||||||
if (!strcmp(CONFIG_ENV_EXT4_INTERFACE, "mmc"))
|
if (!strcmp(ifname, "mmc"))
|
||||||
mmc_initialize(NULL);
|
mmc_initialize(NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
part = blk_get_device_part_str(CONFIG_ENV_EXT4_INTERFACE,
|
part = blk_get_device_part_str(ifname, dev_and_part,
|
||||||
CONFIG_ENV_EXT4_DEVICE_AND_PART,
|
|
||||||
&dev_desc, &info, 1);
|
&dev_desc, &info, 1);
|
||||||
if (part < 0)
|
if (part < 0)
|
||||||
goto err_env_relocate;
|
goto err_env_relocate;
|
||||||
@@ -100,8 +110,7 @@ static int env_ext4_load(void)
|
|||||||
|
|
||||||
if (!ext4fs_mount(info.size)) {
|
if (!ext4fs_mount(info.size)) {
|
||||||
printf("\n** Unable to use %s %s for loading the env **\n",
|
printf("\n** Unable to use %s %s for loading the env **\n",
|
||||||
CONFIG_ENV_EXT4_INTERFACE,
|
ifname, dev_and_part);
|
||||||
CONFIG_ENV_EXT4_DEVICE_AND_PART);
|
|
||||||
goto err_env_relocate;
|
goto err_env_relocate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,8 +120,7 @@ static int env_ext4_load(void)
|
|||||||
|
|
||||||
if (err == -1) {
|
if (err == -1) {
|
||||||
printf("\n** Unable to read \"%s\" from %s%d:%d **\n",
|
printf("\n** Unable to read \"%s\" from %s%d:%d **\n",
|
||||||
CONFIG_ENV_EXT4_FILE, CONFIG_ENV_EXT4_INTERFACE, dev,
|
CONFIG_ENV_EXT4_FILE, ifname, dev, part);
|
||||||
part);
|
|
||||||
goto err_env_relocate;
|
goto err_env_relocate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user