summaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2019-07-16 02:06:10 -0700
committerYe Li <ye.li@nxp.com>2019-07-17 00:14:12 -0700
commit64c02d26555491eb7cb758f58511620c1590c378 (patch)
tree6b2ef4a3cca08b991de40c9d94e9d9c005cdfce7 /env
parent5b12d7cabb14bab9a95af7460b36c6c85db1b328 (diff)
MLK-22279-2 env: Add a config to enable nowhere as default location
When booting from USB there is no place to store the environment and should use default env. However CONFIG_ENV_IS_NOWHERE has dependence with other env storage config. If we enable multiple storages, NOWHERE can't be enabled. And saveenv won't be built if NOWHERE is set. This patch introduces a new CONFIG_ENV_DEFAULT_NOWHERE, that can enable NOWHERE as a default env location when other storage are not avaliable. And allow to build saveenv. Signed-off-by: Ye Li <ye.li@nxp.com>
Diffstat (limited to 'env')
-rw-r--r--env/Kconfig7
-rw-r--r--env/Makefile1
-rw-r--r--env/common.c2
-rw-r--r--env/env.c2
4 files changed, 10 insertions, 2 deletions
diff --git a/env/Kconfig b/env/Kconfig
index 73332ceeb0..ac2ef067b3 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -21,6 +21,13 @@ config ENV_IS_NOWHERE
stored. U-Boot will therefore always start up with a default
environment.
+config ENV_DEFAULT_NOWHERE
+ depends on !ENV_IS_NOWHERE
+ bool "Environment is not stored if no matched location"
+ help
+ Define this when multiple ENV locations are defined and use nowhere as
+ default when no storage medium is matched.
+
config ENV_IS_IN_EEPROM
bool "Environment in EEPROM"
depends on !CHAIN_OF_TRUST
diff --git a/env/Makefile b/env/Makefile
index 7ce8231d9a..e804ace5c0 100644
--- a/env/Makefile
+++ b/env/Makefile
@@ -28,6 +28,7 @@ obj-$(CONFIG_ENV_IS_IN_SPI_FLASH) += sf.o
obj-$(CONFIG_ENV_IS_IN_REMOTE) += remote.o
obj-$(CONFIG_ENV_IS_IN_UBI) += ubi.o
obj-$(CONFIG_ENV_IS_NOWHERE) += nowhere.o
+obj-$(CONFIG_ENV_DEFAULT_NOWHERE) += nowhere.o
endif
ifdef CONFIG_SPL_BUILD
diff --git a/env/common.c b/env/common.c
index f21ff70096..760b55b9b0 100644
--- a/env/common.c
+++ b/env/common.c
@@ -230,7 +230,7 @@ void env_relocate(void)
env_htab.change_ok += gd->reloc_off;
#endif
if (gd->env_valid == ENV_INVALID) {
-#if defined(CONFIG_ENV_IS_NOWHERE) || defined(CONFIG_SPL_BUILD)
+#if defined(CONFIG_ENV_IS_NOWHERE) || defined(CONFIG_ENV_DEFAULT_NOWHERE) || defined(CONFIG_SPL_BUILD)
/* Environment not changable */
set_default_env(NULL);
#else
diff --git a/env/env.c b/env/env.c
index a2a65bde5e..9de26888e7 100644
--- a/env/env.c
+++ b/env/env.c
@@ -60,7 +60,7 @@ static enum env_location env_locations[] = {
#ifdef CONFIG_ENV_IS_IN_UBI
ENVL_UBI,
#endif
-#ifdef CONFIG_ENV_IS_NOWHERE
+#if defined(CONFIG_ENV_IS_NOWHERE) || defined(CONFIG_ENV_DEFAULT_NOWHERE)
ENVL_NOWHERE,
#endif
};