summaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2020-07-07 21:51:35 +0300
committerTom Rini <trini@konsulko.com>2020-07-31 17:13:00 +0300
commit890feecaab72a630eac3344443e053173f4ad02f (patch)
treec36661a5b3a0d8e65f813cc1f5fcf06d3f100d2c /env
parentef9bef2bfed36424a3a6678d76d9eb7b710de1ac (diff)
downloadu-boot-890feecaab72a630eac3344443e053173f4ad02f.tar.xz
env: Discern environment coming from external storage
Add another custom environment flag which discerns environment coming from external storage from environment set by U-Boot itself. Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'env')
-rw-r--r--env/common.c13
-rw-r--r--env/eeprom.c2
-rw-r--r--env/ext4.c2
-rw-r--r--env/fat.c2
-rw-r--r--env/flash.c2
-rw-r--r--env/mmc.c4
-rw-r--r--env/nand.c4
-rw-r--r--env/nvram.c2
-rw-r--r--env/onenand.c2
-rw-r--r--env/remote.c2
-rw-r--r--env/sata.c2
-rw-r--r--env/sf.c4
-rw-r--r--env/ubi.c4
13 files changed, 23 insertions, 22 deletions
diff --git a/env/common.c b/env/common.c
index 0db56e610a..ed18378000 100644
--- a/env/common.c
+++ b/env/common.c
@@ -110,7 +110,7 @@ int env_set_default_vars(int nvars, char * const vars[], int flags)
* Check if CRC is valid and (if yes) import the environment.
* Note that "buf" may or may not be aligned.
*/
-int env_import(const char *buf, int check)
+int env_import(const char *buf, int check, int flags)
{
env_t *ep = (env_t *)buf;
@@ -125,7 +125,7 @@ int env_import(const char *buf, int check)
}
}
- if (himport_r(&env_htab, (char *)ep->data, ENV_SIZE, '\0', 0, 0,
+ if (himport_r(&env_htab, (char *)ep->data, ENV_SIZE, '\0', flags, 0,
0, NULL)) {
gd->flags |= GD_FLG_ENV_READY;
return 0;
@@ -142,7 +142,8 @@ int env_import(const char *buf, int check)
static unsigned char env_flags;
int env_import_redund(const char *buf1, int buf1_read_fail,
- const char *buf2, int buf2_read_fail)
+ const char *buf2, int buf2_read_fail,
+ int flags)
{
int crc1_ok, crc2_ok;
env_t *ep, *tmp_env1, *tmp_env2;
@@ -162,10 +163,10 @@ int env_import_redund(const char *buf1, int buf1_read_fail,
return -EIO;
} else if (!buf1_read_fail && buf2_read_fail) {
gd->env_valid = ENV_VALID;
- return env_import((char *)tmp_env1, 1);
+ return env_import((char *)tmp_env1, 1, flags);
} else if (buf1_read_fail && !buf2_read_fail) {
gd->env_valid = ENV_REDUND;
- return env_import((char *)tmp_env2, 1);
+ return env_import((char *)tmp_env2, 1, flags);
}
crc1_ok = crc32(0, tmp_env1->data, ENV_SIZE) ==
@@ -200,7 +201,7 @@ int env_import_redund(const char *buf1, int buf1_read_fail,
ep = tmp_env2;
env_flags = ep->flags;
- return env_import((char *)ep, 0);
+ return env_import((char *)ep, 0, flags);
}
#endif /* CONFIG_SYS_REDUNDAND_ENVIRONMENT */
diff --git a/env/eeprom.c b/env/eeprom.c
index e8126cfe39..e300470ad0 100644
--- a/env/eeprom.c
+++ b/env/eeprom.c
@@ -188,7 +188,7 @@ static int env_eeprom_load(void)
eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
off, (uchar *)buf_env, CONFIG_ENV_SIZE);
- return env_import(buf_env, 1);
+ return env_import(buf_env, 1, H_EXTERNAL);
}
static int env_eeprom_save(void)
diff --git a/env/ext4.c b/env/ext4.c
index cc36504154..f823b69409 100644
--- a/env/ext4.c
+++ b/env/ext4.c
@@ -156,7 +156,7 @@ static int env_ext4_load(void)
goto err_env_relocate;
}
- err = env_import(buf, 1);
+ err = env_import(buf, 1, H_EXTERNAL);
if (!err)
gd->env_valid = ENV_VALID;
diff --git a/env/fat.c b/env/fat.c
index 63aced9317..71bf8bfa18 100644
--- a/env/fat.c
+++ b/env/fat.c
@@ -144,7 +144,7 @@ static int env_fat_load(void)
goto err_env_relocate;
}
- return env_import(buf, 1);
+ return env_import(buf, 1, H_EXTERNAL);
err_env_relocate:
env_set_default(NULL, 0);
diff --git a/env/flash.c b/env/flash.c
index 3198147c38..722d5adf8b 100644
--- a/env/flash.c
+++ b/env/flash.c
@@ -351,7 +351,7 @@ static int env_flash_load(void)
"reading environment; recovered successfully\n\n");
#endif /* CONFIG_ENV_ADDR_REDUND */
- return env_import((char *)flash_addr, 1);
+ return env_import((char *)flash_addr, 1, H_EXTERNAL);
}
#endif /* LOADENV */
diff --git a/env/mmc.c b/env/mmc.c
index aca61b75e9..af7e5fbac3 100644
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -338,7 +338,7 @@ static int env_mmc_load(void)
read2_fail = read_env(mmc, CONFIG_ENV_SIZE, offset2, tmp_env2);
ret = env_import_redund((char *)tmp_env1, read1_fail, (char *)tmp_env2,
- read2_fail);
+ read2_fail, H_EXTERNAL);
fini:
fini_mmc_for_env(mmc);
@@ -380,7 +380,7 @@ static int env_mmc_load(void)
goto fini;
}
- ret = env_import(buf, 1);
+ ret = env_import(buf, 1, H_EXTERNAL);
if (!ret) {
ep = (env_t *)buf;
gd->env_addr = (ulong)&ep->data;
diff --git a/env/nand.c b/env/nand.c
index 8b0027d304..0d7ee19bc2 100644
--- a/env/nand.c
+++ b/env/nand.c
@@ -331,7 +331,7 @@ static int env_nand_load(void)
read2_fail = readenv(CONFIG_ENV_OFFSET_REDUND, (u_char *) tmp_env2);
ret = env_import_redund((char *)tmp_env1, read1_fail, (char *)tmp_env2,
- read2_fail);
+ read2_fail, H_EXTERNAL);
done:
free(tmp_env1);
@@ -372,7 +372,7 @@ static int env_nand_load(void)
return -EIO;
}
- return env_import(buf, 1);
+ return env_import(buf, 1, H_EXTERNAL);
#endif /* ! ENV_IS_EMBEDDED */
return 0;
diff --git a/env/nvram.c b/env/nvram.c
index 1a9fcf1c06..7c8ea26f96 100644
--- a/env/nvram.c
+++ b/env/nvram.c
@@ -64,7 +64,7 @@ static int env_nvram_load(void)
#else
memcpy(buf, (void *)CONFIG_ENV_ADDR, CONFIG_ENV_SIZE);
#endif
- return env_import(buf, 1);
+ return env_import(buf, 1, H_EXTERNAL);
}
static int env_nvram_save(void)
diff --git a/env/onenand.c b/env/onenand.c
index dfd4e939f8..a2477cef9b 100644
--- a/env/onenand.c
+++ b/env/onenand.c
@@ -55,7 +55,7 @@ static int env_onenand_load(void)
mtd->writesize = MAX_ONENAND_PAGESIZE;
#endif /* !ENV_IS_EMBEDDED */
- rc = env_import(buf, 1);
+ rc = env_import(buf, 1, H_EXTERNAL);
if (!rc)
gd->env_valid = ENV_VALID;
diff --git a/env/remote.c b/env/remote.c
index e3f0608b16..d93a137376 100644
--- a/env/remote.c
+++ b/env/remote.c
@@ -45,7 +45,7 @@ static int env_remote_save(void)
static int env_remote_load(void)
{
#ifndef ENV_IS_EMBEDDED
- return env_import((char *)env_ptr, 1);
+ return env_import((char *)env_ptr, 1, H_EXTERNAL);
#endif
return 0;
diff --git a/env/sata.c b/env/sata.c
index 8bfcc94306..9442cfcaf3 100644
--- a/env/sata.c
+++ b/env/sata.c
@@ -111,7 +111,7 @@ static void env_sata_load(void)
return -EIO;
}
- return env_import(buf, 1);
+ return env_import(buf, 1, H_EXTERNAL);
}
U_BOOT_ENV_LOCATION(sata) = {
diff --git a/env/sf.c b/env/sf.c
index a059561cb0..937778aa37 100644
--- a/env/sf.c
+++ b/env/sf.c
@@ -172,7 +172,7 @@ static int env_sf_load(void)
CONFIG_ENV_SIZE, tmp_env2);
ret = env_import_redund((char *)tmp_env1, read1_fail, (char *)tmp_env2,
- read2_fail);
+ read2_fail, H_EXTERNAL);
spi_flash_free(env_flash);
env_flash = NULL;
@@ -265,7 +265,7 @@ static int env_sf_load(void)
goto err_read;
}
- ret = env_import(buf, 1);
+ ret = env_import(buf, 1, H_EXTERNAL);
if (!ret)
gd->env_valid = ENV_VALID;
diff --git a/env/ubi.c b/env/ubi.c
index 08aac47df2..5502efe28b 100644
--- a/env/ubi.c
+++ b/env/ubi.c
@@ -141,7 +141,7 @@ static int env_ubi_load(void)
CONFIG_ENV_UBI_PART, CONFIG_ENV_UBI_VOLUME_REDUND);
return env_import_redund((char *)tmp_env1, read1_fail, (char *)tmp_env2,
- read2_fail);
+ read2_fail, H_EXTERNAL);
}
#else /* ! CONFIG_SYS_REDUNDAND_ENVIRONMENT */
static int env_ubi_load(void)
@@ -172,7 +172,7 @@ static int env_ubi_load(void)
return -EIO;
}
- return env_import(buf, 1);
+ return env_import(buf, 1, H_EXTERNAL);
}
#endif /* CONFIG_SYS_REDUNDAND_ENVIRONMENT */