[U-Boot] [PATCH v2 25/34] env: Drop the env_name_spec global

Simon Glass
2017-07-24T03:20:00Z

Add a name to the driver and use that instead of the global variable
declared by each driver.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2: None

cmd/nvedit.c | 4 +++-
env/dataflash.c | 3 +--
env/eeprom.c | 3 +--
env/env.c | 2 +-
env/ext4.c | 3 +--
env/fat.c | 3 +--
env/flash.c | 3 +--
env/mmc.c | 3 +--
env/nand.c | 3 +--
env/nowhere.c | 1 +
env/nvram.c | 3 +--
env/onenand.c | 3 +--
env/remote.c | 3 +--
env/sata.c | 3 +--
env/sf.c | 3 +--
env/ubi.c | 2 --
include/environment.h | 19 +++++++++++++++----
17 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/cmd/nvedit.c b/cmd/nvedit.c
index cd17db6409..75df997592 100644
--- a/cmd/nvedit.c
+++ b/cmd/nvedit.c
@@ -706,7 +706,9 @@ ulong getenv_ulong(const char *name, int base, ulong default_val)
static int do_env_save(cmd_tbl_t *cmdtp, int flag, int argc,
char * const argv[])
{
- printf("Saving Environment to %s...\n", env_name_spec);
+ struct env_driver *env = env_driver_lookup_default();
+
+ printf("Saving Environment to %s...\n", env->name);

return saveenv() ? 1 : 0;
}
diff --git a/env/dataflash.c b/env/dataflash.c
index 8ab482b3b4..9421a6a5b2 100644
--- a/env/dataflash.c
+++ b/env/dataflash.c
@@ -16,8 +16,6 @@ DECLARE_GLOBAL_DATA_PTR;

env_t *env_ptr;

-char *env_name_spec = "dataflash";
-
static unsigned char env_dataflash_get_char(int index)
{
uchar c;
@@ -70,6 +68,7 @@ static int env_dataflash_save(void)

U_BOOT_ENV_LOCATION(dataflash) = {
.location = ENVL_DATAFLASH,
+ ENV_NAME("dataflash")
.get_char = env_dataflash_get_char,
.load = env_dataflash_load,
.save = env_save_ptr(env_dataflash_save),
diff --git a/env/eeprom.c b/env/eeprom.c
index 3cc412620a..2c795b9236 100644
--- a/env/eeprom.c
+++ b/env/eeprom.c
@@ -23,8 +23,6 @@ DECLARE_GLOBAL_DATA_PTR;

env_t *env_ptr;

-char *env_name_spec = "EEPROM";
-
static int eeprom_bus_read(unsigned dev_addr, unsigned offset,
uchar *buffer, unsigned cnt)
{
@@ -233,6 +231,7 @@ static int env_eeprom_save(void)

U_BOOT_ENV_LOCATION(eeprom) = {
.location = ENVL_EEPROM,
+ ENV_NAME("EEPROM")
.get_char = env_eeprom_get_char,
.load = env_eeprom_load,
.save = env_save_ptr(env_eeprom_save),
diff --git a/env/env.c b/env/env.c
index 73547002d1..a649457270 100644
--- a/env/env.c
+++ b/env/env.c
@@ -54,7 +54,7 @@ static enum env_location env_get_default_location(void)
return ENVL_UNKNOWN;
}

-static struct env_driver *env_driver_lookup_default(void)
+struct env_driver *env_driver_lookup_default(void)
{
enum env_location loc = env_get_default_location();
struct env_driver *drv;
diff --git a/env/ext4.c b/env/ext4.c
index 25a5cbecdd..5acdf0eda0 100644
--- a/env/ext4.c
+++ b/env/ext4.c
@@ -31,8 +31,6 @@
#include <ext4fs.h>
#include <mmc.h>

-char *env_name_spec = "EXT4";
-
env_t *env_ptr;

DECLARE_GLOBAL_DATA_PTR;
@@ -121,6 +119,7 @@ err_env_relocate:

U_BOOT_ENV_LOCATION(ext4) = {
.location = ENVL_EXT4,
+ ENV_NAME("EXT4")
.load = env_ext4_load,
.save = env_save_ptr(env_ext4_save),
};
diff --git a/env/fat.c b/env/fat.c
index bd31b2904d..ad0c4321c7 100644
--- a/env/fat.c
+++ b/env/fat.c
@@ -31,8 +31,6 @@
# endif
#endif

-char *env_name_spec = "FAT";
-
env_t *env_ptr;

DECLARE_GLOBAL_DATA_PTR;
@@ -116,6 +114,7 @@ err_env_relocate:

U_BOOT_ENV_LOCATION(fat) = {
.location = ENVL_FAT,
+ ENV_NAME("FAT")
#ifdef LOADENV
.load = env_fat_load,
#endif
diff --git a/env/flash.c b/env/flash.c
index 6ec9b61883..2d72c51622 100644
--- a/env/flash.c
+++ b/env/flash.c
@@ -45,8 +45,6 @@ DECLARE_GLOBAL_DATA_PTR;
#define INITENV
#endif

-char *env_name_spec = "Flash";
-
#ifdef ENV_IS_EMBEDDED
env_t *env_ptr = &environment;

@@ -359,6 +357,7 @@ static void env_flash_load(void)

U_BOOT_ENV_LOCATION(flash) = {
.location = ENVL_FLASH,
+ ENV_NAME("Flash")
#ifdef LOADENV
.load = env_flash_load,
#endif
diff --git a/env/mmc.c b/env/mmc.c
index 2dd0382bfb..ae10b5b1f8 100644
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -23,8 +23,6 @@
#error CONFIG_ENV_SIZE_REDUND should be the same as CONFIG_ENV_SIZE
#endif

-char *env_name_spec = "MMC";
-
#ifdef ENV_IS_EMBEDDED
env_t *env_ptr = &environment;
#else /* ! ENV_IS_EMBEDDED */
@@ -348,6 +346,7 @@ err:

U_BOOT_ENV_LOCATION(mmc) = {
.location = ENVL_MMC,
+ ENV_NAME("MMC")
.load = env_mmc_load,
#ifndef CONFIG_SPL_BUILD
.save = env_save_ptr(env_mmc_save),
diff --git a/env/nand.c b/env/nand.c
index 23cb812d78..e26f5638c4 100644
--- a/env/nand.c
+++ b/env/nand.c
@@ -40,8 +40,6 @@
#define CONFIG_ENV_RANGE CONFIG_ENV_SIZE
#endif

-char *env_name_spec = "NAND";
-
#if defined(ENV_IS_EMBEDDED)
env_t *env_ptr = &environment;
#elif defined(CONFIG_NAND_ENV_DST)
@@ -427,6 +425,7 @@ static void env_nand_load(void)

U_BOOT_ENV_LOCATION(nand) = {
.location = ENVL_NAND,
+ ENV_NAME("NAND")
.load = env_nand_load,
#if defined(CMD_SAVEENV)
.save = env_save_ptr(env_nand_save),
diff --git a/env/nowhere.c b/env/nowhere.c
index 1d2ae85a57..1a17d6978b 100644
--- a/env/nowhere.c
+++ b/env/nowhere.c
@@ -19,4 +19,5 @@ env_t *env_ptr;

U_BOOT_ENV_LOCATION(nowhere) = {
.location = ENVL_NOWHERE,
+ ENV_NAME("nowhere")
};
diff --git a/env/nvram.c b/env/nvram.c
index 09091b8eb7..0f4b491fd3 100644
--- a/env/nvram.c
+++ b/env/nvram.c
@@ -41,8 +41,6 @@ env_t *env_ptr;
env_t *env_ptr = (env_t *)CONFIG_ENV_ADDR;
#endif

-char *env_name_spec = "NVRAM";
-
#ifdef CONFIG_SYS_NVRAM_ACCESS_ROUTINE
static uchar env_nvram_get_char(int index)
{
@@ -115,6 +113,7 @@ static int env_nvram_init(void)

U_BOOT_ENV_LOCATION(nvram) = {
.location = ENVL_NVRAM,
+ ENV_NAME("NVRAM")
#ifdef CONFIG_SYS_NVRAM_ACCESS_ROUTINE
.get_char = env_nvram_get_char,
#endif
diff --git a/env/onenand.c b/env/onenand.c
index cb1ab53216..319f553262 100644
--- a/env/onenand.c
+++ b/env/onenand.c
@@ -21,8 +21,6 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/onenand.h>

-char *env_name_spec = "OneNAND";
-
#define ONENAND_MAX_ENV_SIZE CONFIG_ENV_SIZE
#define ONENAND_ENV_SIZE(mtd) (ONENAND_MAX_ENV_SIZE - ENV_HEADER_SIZE)

@@ -108,6 +106,7 @@ static int env_onenand_save(void)

U_BOOT_ENV_LOCATION(onenand) = {
.location = ENVL_ONENAND,
+ ENV_NAME("OneNAND")
.load = env_onenand_load,
.save = env_save_ptr(env_onenand_save),
};
diff --git a/env/remote.c b/env/remote.c
index c5dce5b966..0d8865bd67 100644
--- a/env/remote.c
+++ b/env/remote.c
@@ -11,8 +11,6 @@
#include <environment.h>
#include <linux/stddef.h>

-char *env_name_spec = "Remote";
-
#ifdef ENV_IS_EMBEDDED
env_t *env_ptr = &environment;
#else /* ! ENV_IS_EMBEDDED */
@@ -57,6 +55,7 @@ static void env_remote_load(void)

U_BOOT_ENV_LOCATION(remote) = {
.location = ENVL_REMOTE,
+ ENV_NAME("Remote")
.load = env_remote_load,
.save = env_save_ptr(env_remote_save),
.init = env_remote_init,
diff --git a/env/sata.c b/env/sata.c
index a5ff54c287..16d8f939db 100644
--- a/env/sata.c
+++ b/env/sata.c
@@ -24,8 +24,6 @@
#error CONFIG_ENV_OFFSET or CONFIG_ENV_SIZE not defined
#endif

-char *env_name_spec = "SATA";
-
DECLARE_GLOBAL_DATA_PTR;

__weak int sata_get_env_dev(void)
@@ -119,6 +117,7 @@ static void env_sata_load(void)

U_BOOT_ENV_LOCATION(sata) = {
.location = ENVL_ESATA,
+ ENV_NAME("SATA")
.load = env_sata_load,
.save = env_save_ptr(env_sata_save),
};
diff --git a/env/sf.c b/env/sf.c
index a07641b7d4..07386c629a 100644
--- a/env/sf.c
+++ b/env/sf.c
@@ -48,8 +48,6 @@ static ulong env_new_offset = CONFIG_ENV_OFFSET_REDUND;

DECLARE_GLOBAL_DATA_PTR;

-char *env_name_spec = "SPI Flash";
-
static struct spi_flash *env_flash;

static int setup_flash_device(void)
@@ -346,6 +344,7 @@ out:

U_BOOT_ENV_LOCATION(sf) = {
.location = ENVL_SPI_FLASH,
+ ENV_NAME("SPI Flash")
.load = env_sf_load,
#ifdef CMD_SAVEENV
.save = env_save_ptr(env_sf_save),
diff --git a/env/ubi.c b/env/ubi.c
index 773fcf0ed2..0f1e5bcd22 100644
--- a/env/ubi.c
+++ b/env/ubi.c
@@ -16,8 +16,6 @@
#include <ubi_uboot.h>
#undef crc32

-char *env_name_spec = "UBI";
-
env_t *env_ptr;

DECLARE_GLOBAL_DATA_PTR;
diff --git a/include/environment.h b/include/environment.h
index 87727f2b29..03fe00f215 100644
--- a/include/environment.h
+++ b/include/environment.h
@@ -143,10 +143,6 @@ extern unsigned long nand_env_oob_offset;
# define ENV_HEADER_SIZE (sizeof(uint32_t))
#endif

-#if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_ENV_IS_NOWHERE)
-extern char *env_name_spec;
-#endif
-
#ifdef CONFIG_ENV_AES
/* Make sure the payload is multiple of AES block size */
#define ENV_SIZE ((CONFIG_ENV_SIZE - ENV_HEADER_SIZE) & ~(16 - 1))
@@ -224,6 +220,7 @@ enum env_location {
};

struct env_driver {
+ const char *name;
enum env_location location;

/**
@@ -269,6 +266,13 @@ struct env_driver {
#define U_BOOT_ENV_LOCATION(__name) \
ll_entry_declare(struct env_driver, __name, env_driver)

+/* Declare the name of a location */
+#ifdef CONFIG_CMD_SAVEENV
+#define ENV_NAME(_name) .name = _name,
+#else
+#define ENV_NAME(_name)
+#endif
+
#ifdef CONFIG_CMD_SAVEENV
#define env_save_ptr(x) x
#else
@@ -298,6 +302,13 @@ int env_import(const char *buf, int check);
/* Export from hash table into binary representation */
int env_export(env_t *env_out);

+/**
+ * env_driver_lookup_default() - Look up the default environment driver
+ *
+ * @return pointer to driver, or NULL if none (which should not happen)
+ */
+struct env_driver *env_driver_lookup_default(void);
+
#endif /* DO_DEPS_ONLY */

#endif /* _ENVIRONMENT_H_ */
--
2.14.0.rc0.284.gd933b75aa4-goog