From 64c02d26555491eb7cb758f58511620c1590c378 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Tue, 16 Jul 2019 02:06:10 -0700 Subject: 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 --- env/Kconfig | 7 +++++++ env/Makefile | 1 + env/common.c | 2 +- env/env.c | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) (limited to 'env') 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 }; -- cgit v1.2.3