[U-Boot] [PATCH v3 2/3] env: introduce macro ENV_IS_IN_SOMEWHERE
Patrick Delaunay
patrick.delaunay at st.com
Wed Sep 18 09:29:19 UTC 2019
This patch introduce a macro ENV_IS_IN_SOMEWHERE to check if the
the environment can be saved somewhere, in a device or in a file system,
without assumption on CONFIG$(SPL_TPL_)ENV_IS_NOWHERE.
Since the commit 208bd2b85ecc ("env: allow ENV_IS_NOWHERE with
other storage target"), is is allowed to activated ENV_IS_NOWHERE with
other CONFIG_IS_IN...
It is only the case for U-Boot but the restriction in Kconfig
could also removed for SPL and TPL
(depends on !SPL_ENV_IS_NOWHERE / depends on !TPL_ENV_IS_NOWHERE).
This macro ENV_IS_IN_DEVICE can be used in code to check if the
environment for U-Boot / SPL / TPL is really managed (at least one
CONFIG$(SPL_TPL_)ENV_IS_IN_.. is activated).
Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com>
---
Changes in v3: None
Changes in v2: None
cmd/nvedit.c | 29 +++++++----------------------
include/env.h | 13 +++++++++++++
2 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/cmd/nvedit.c b/cmd/nvedit.c
index 1cb0bc1460..7a6ec5ae30 100644
--- a/cmd/nvedit.c
+++ b/cmd/nvedit.c
@@ -40,28 +40,13 @@
DECLARE_GLOBAL_DATA_PTR;
-#if defined(CONFIG_ENV_IS_IN_EEPROM) || \
- defined(CONFIG_ENV_IS_IN_FLASH) || \
- defined(CONFIG_ENV_IS_IN_MMC) || \
- defined(CONFIG_ENV_IS_IN_FAT) || \
- defined(CONFIG_ENV_IS_IN_EXT4) || \
- defined(CONFIG_ENV_IS_IN_NAND) || \
- defined(CONFIG_ENV_IS_IN_NVRAM) || \
- defined(CONFIG_ENV_IS_IN_ONENAND) || \
- defined(CONFIG_ENV_IS_IN_SATA) || \
- defined(CONFIG_ENV_IS_IN_SPI_FLASH) || \
- defined(CONFIG_ENV_IS_IN_REMOTE) || \
- defined(CONFIG_ENV_IS_IN_UBI)
-
-#define ENV_IS_IN_DEVICE
-
-#endif
-
-#if !defined(ENV_IS_IN_DEVICE) && \
- !defined(CONFIG_ENV_IS_NOWHERE)
+#if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(ENV_SUPPORT)
+#if !ENV_IS_IN_SOMEWHERE && \
+ !CONFIG_IS_ENABLED(ENV_IS_NOWHERE)
# error Define one of CONFIG_ENV_IS_IN_{EEPROM|FLASH|MMC|FAT|EXT4|\
NAND|NVRAM|ONENAND|SATA|SPI_FLASH|REMOTE|UBI} or CONFIG_ENV_IS_NOWHERE
#endif
+#endif
/*
* Maximum expected input data size for import command
@@ -744,7 +729,7 @@ ulong env_get_ulong(const char *name, int base, ulong default_val)
}
#ifndef CONFIG_SPL_BUILD
-#if defined(CONFIG_CMD_SAVEENV) && defined(ENV_IS_IN_DEVICE)
+#if defined(CONFIG_CMD_SAVEENV) && ENV_IS_IN_SOMEWHERE
static int do_env_save(cmd_tbl_t *cmdtp, int flag, int argc,
char * const argv[])
{
@@ -1309,7 +1294,7 @@ static cmd_tbl_t cmd_env_sub[] = {
#if defined(CONFIG_CMD_RUN)
U_BOOT_CMD_MKENT(run, CONFIG_SYS_MAXARGS, 1, do_run, "", ""),
#endif
-#if defined(CONFIG_CMD_SAVEENV) && defined(ENV_IS_IN_DEVICE)
+#if defined(CONFIG_CMD_SAVEENV) && ENV_IS_IN_SOMEWHERE
U_BOOT_CMD_MKENT(save, 1, 0, do_env_save, "", ""),
#if defined(CONFIG_CMD_ERASEENV)
U_BOOT_CMD_MKENT(erase, 1, 0, do_env_erase, "", ""),
@@ -1392,7 +1377,7 @@ static char env_help_text[] =
#if defined(CONFIG_CMD_RUN)
"env run var [...] - run commands in an environment variable\n"
#endif
-#if defined(CONFIG_CMD_SAVEENV) && defined(ENV_IS_IN_DEVICE)
+#if defined(CONFIG_CMD_SAVEENV) && ENV_IS_IN_SOMEWHERE
"env save - save environment\n"
#if defined(CONFIG_CMD_ERASEENV)
"env erase - erase environment\n"
diff --git a/include/env.h b/include/env.h
index a74a261337..0088d3b1e8 100644
--- a/include/env.h
+++ b/include/env.h
@@ -35,6 +35,19 @@ struct env_clbk_tbl {
int flags);
};
+#define ENV_IS_IN_SOMEWHERE \
+ (CONFIG_IS_ENABLED(ENV_IS_IN_EEPROM) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_EXT4) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_FAT) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_FLASH) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_MMC) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_NAND) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_NVRAM) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_ONENAND) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_REMOTE) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH) || \
+ CONFIG_IS_ENABLED(ENV_IS_IN_UBI))
+
/*
* Define a callback that can be associated with variables.
* when associated through the ".callbacks" environment variable, the callback
--
2.17.1
More information about the U-Boot
mailing list