[U-Boot] [PATCH v5 15/30] env: Drop common init() functions

Simon Glass sjg at chromium.org
Thu Aug 3 18:22:02 UTC 2017


Most of the init() implementations just use the default environment.
Adjust env_init_new() to do this automatically, and drop the redundant
code.

Signed-off-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Tom Rini <trini at konsulko.com>
---

Changes in v5: None
Changes in v4:
- Fix incorrect setting of env_valid in env_init_new()

Changes in v3: None
Changes in v2: None

 env/dataflash.c       | 16 ----------------
 env/eeprom.c          | 14 --------------
 env/env.c             | 14 +++++++++-----
 env/ext4.c            | 10 ----------
 env/fat.c             | 10 ----------
 env/mmc.c             | 10 ----------
 env/nowhere.c         | 19 -------------------
 env/onenand.c         | 10 ----------
 env/remote.c          |  4 +---
 env/sata.c            | 10 ----------
 env/sf.c              | 10 ----------
 env/ubi.c             | 10 ----------
 include/environment.h |  3 ++-
 13 files changed, 12 insertions(+), 128 deletions(-)

diff --git a/env/dataflash.c b/env/dataflash.c
index 6d95d6409b..8ab482b3b4 100644
--- a/env/dataflash.c
+++ b/env/dataflash.c
@@ -68,25 +68,9 @@ static int env_dataflash_save(void)
 				CONFIG_ENV_SIZE);
 }
 
-/*
- * Initialize environment use
- *
- * We are still running from ROM, so data use is limited.
- * Use a (moderately small) buffer on the stack
- */
-int env_dataflash_init(void)
-{
-	/* use default */
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-
-	return 0;
-}
-
 U_BOOT_ENV_LOCATION(dataflash) = {
 	.location	= ENVL_DATAFLASH,
 	.get_char	= env_dataflash_get_char,
 	.load		= env_dataflash_load,
 	.save		= env_save_ptr(env_dataflash_save),
-	.init		= env_dataflash_init,
 };
diff --git a/env/eeprom.c b/env/eeprom.c
index eb69f75f7b..3cc412620a 100644
--- a/env/eeprom.c
+++ b/env/eeprom.c
@@ -231,23 +231,9 @@ static int env_eeprom_save(void)
 	return rc;
 }
 
-/*
- * Initialize Environment use
- *
- * We are still running from ROM, so data use is limited.
- * Use a (moderately small) buffer on the stack
- */
-static int env_eeprom_init(void)
-{
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-	return 0;
-}
-
 U_BOOT_ENV_LOCATION(eeprom) = {
 	.location	= ENVL_EEPROM,
 	.get_char	= env_eeprom_get_char,
 	.load		= env_eeprom_load,
 	.save		= env_save_ptr(env_eeprom_save),
-	.init		= env_eeprom_init,
 };
diff --git a/env/env.c b/env/env.c
index d327f9cdff..12cd4750df 100644
--- a/env/env.c
+++ b/env/env.c
@@ -128,14 +128,18 @@ int env_save(void)
 int env_init_new(void)
 {
 	struct env_driver *drv = env_driver_lookup_default();
-	int ret;
+	int ret = -ENOENT;
 
 	if (!drv)
 		return -ENODEV;
-	if (!drv->init)
-		return -ENOSYS;
-	ret = drv->init();
-	if (ret) {
+	if (drv->init)
+		ret = drv->init();
+	if (ret == -ENOENT) {
+		gd->env_addr = (ulong)&default_environment[0];
+		gd->env_valid = 0;
+
+		return 0;
+	} else if (ret) {
 		debug("%s: Environment failed to init (err=%d)\n", __func__,
 		      ret);
 		return ret;
diff --git a/env/ext4.c b/env/ext4.c
index aa69219021..25a5cbecdd 100644
--- a/env/ext4.c
+++ b/env/ext4.c
@@ -37,15 +37,6 @@ env_t *env_ptr;
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static int env_ext4_init(void)
-{
-	/* use default */
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-
-	return 0;
-}
-
 #ifdef CONFIG_CMD_SAVEENV
 static int env_ext4_save(void)
 {
@@ -132,5 +123,4 @@ U_BOOT_ENV_LOCATION(ext4) = {
 	.location	= ENVL_EXT4,
 	.load		= env_ext4_load,
 	.save		= env_save_ptr(env_ext4_save),
-	.init		= env_ext4_init,
 };
diff --git a/env/fat.c b/env/fat.c
index b959013a88..1ff3d9dc86 100644
--- a/env/fat.c
+++ b/env/fat.c
@@ -37,15 +37,6 @@ env_t *env_ptr;
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static int env_fat_init(void)
-{
-	/* use default */
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-
-	return 0;
-}
-
 #ifdef CMD_SAVEENV
 static int env_fat_save(void)
 {
@@ -131,5 +122,4 @@ U_BOOT_ENV_LOCATION(fat) = {
 #ifdef CMD_SAVEENV
 	.save		= env_save_ptr(env_fat_save),
 #endif
-	.init		= env_fat_init,
 };
diff --git a/env/mmc.c b/env/mmc.c
index d63feea2b8..966f620653 100644
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -82,15 +82,6 @@ __weak int mmc_get_env_dev(void)
 	return CONFIG_SYS_MMC_ENV_DEV;
 }
 
-static int env_mmc_init(void)
-{
-	/* use default */
-	gd->env_addr	= (ulong)&default_environment[0];
-	gd->env_valid	= ENV_VALID;
-
-	return 0;
-}
-
 #ifdef CONFIG_SYS_MMC_ENV_PART
 __weak uint mmc_get_env_part(struct mmc *mmc)
 {
@@ -331,5 +322,4 @@ U_BOOT_ENV_LOCATION(mmc) = {
 #ifndef CONFIG_SPL_BUILD
 	.save		= env_save_ptr(env_mmc_save),
 #endif
-	.init		= env_mmc_init,
 };
diff --git a/env/nowhere.c b/env/nowhere.c
index 6a67ab09ff..1d2ae85a57 100644
--- a/env/nowhere.c
+++ b/env/nowhere.c
@@ -17,25 +17,6 @@ DECLARE_GLOBAL_DATA_PTR;
 
 env_t *env_ptr;
 
-static void env_nowhere_load(void)
-{
-}
-
-/*
- * Initialize Environment use
- *
- * We are still running from ROM, so data use is limited
- */
-static int env_nowhere_init(void)
-{
-	gd->env_addr	= (ulong)&default_environment[0];
-	gd->env_valid	= 0;
-
-	return 0;
-}
-
 U_BOOT_ENV_LOCATION(nowhere) = {
 	.location	= ENVL_NOWHERE,
-	.load		= env_nowhere_load,
-	.init		= env_nowhere_init,
 };
diff --git a/env/onenand.c b/env/onenand.c
index f72aa4b036..cb1ab53216 100644
--- a/env/onenand.c
+++ b/env/onenand.c
@@ -106,18 +106,8 @@ static int env_onenand_save(void)
 	return 0;
 }
 
-static int env_onenand_init(void)
-{
-	/* use default */
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-
-	return 0;
-}
-
 U_BOOT_ENV_LOCATION(onenand) = {
 	.location	= ENVL_ONENAND,
 	.load		= env_onenand_load,
 	.save		= env_save_ptr(env_onenand_save),
-	.init		= env_onenand_init,
 };
diff --git a/env/remote.c b/env/remote.c
index 0324cba099..c5dce5b966 100644
--- a/env/remote.c
+++ b/env/remote.c
@@ -33,9 +33,7 @@ static int env_remote_init(void)
 		return 0;
 	}
 
-	gd->env_addr = (ulong)default_environment;
-	gd->env_valid = 0;
-	return 0;
+	return -ENOENT;
 }
 
 #ifdef CONFIG_CMD_SAVEENV
diff --git a/env/sata.c b/env/sata.c
index 6f9099873d..a5ff54c287 100644
--- a/env/sata.c
+++ b/env/sata.c
@@ -33,15 +33,6 @@ __weak int sata_get_env_dev(void)
 	return CONFIG_SYS_SATA_ENV_DEV;
 }
 
-static int env_sata_init(void)
-{
-	/* use default */
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-
-	return 0;
-}
-
 #ifdef CONFIG_CMD_SAVEENV
 static inline int write_env(struct blk_desc *sata, unsigned long size,
 			    unsigned long offset, void *buffer)
@@ -130,5 +121,4 @@ U_BOOT_ENV_LOCATION(sata) = {
 	.location	= ENVL_ESATA,
 	.load		= env_sata_load,
 	.save		= env_save_ptr(env_sata_save),
-	.init		= env_sata_init,
 };
diff --git a/env/sf.c b/env/sf.c
index 82babaab67..a07641b7d4 100644
--- a/env/sf.c
+++ b/env/sf.c
@@ -344,20 +344,10 @@ out:
 }
 #endif
 
-static int env_sf_init(void)
-{
-	/* SPI flash isn't usable before relocation */
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-
-	return 0;
-}
-
 U_BOOT_ENV_LOCATION(sf) = {
 	.location	= ENVL_SPI_FLASH,
 	.load		= env_sf_load,
 #ifdef CMD_SAVEENV
 	.save		= env_save_ptr(env_sf_save),
 #endif
-	.init		= env_sf_init,
 };
diff --git a/env/ubi.c b/env/ubi.c
index 3b6344df7a..4811f97413 100644
--- a/env/ubi.c
+++ b/env/ubi.c
@@ -22,15 +22,6 @@ env_t *env_ptr;
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static int env_ubi_init(void)
-{
-	/* use default */
-	gd->env_addr = (ulong)&default_environment[0];
-	gd->env_valid = ENV_VALID;
-
-	return 0;
-}
-
 #ifdef CONFIG_CMD_SAVEENV
 #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
 static int env_ubi_save(void)
@@ -182,5 +173,4 @@ U_BOOT_ENV_LOCATION(ubi) = {
 	.location	= ENVL_UBI,
 	.load		= env_ubi_load,
 	.save		= env_save_ptr(env_ubi_save),
-	.init		= env_ubi_init,
 };
diff --git a/include/environment.h b/include/environment.h
index ff3f54263a..7eaba72181 100644
--- a/include/environment.h
+++ b/include/environment.h
@@ -259,7 +259,8 @@ struct env_driver {
 	 *
 	 * This method is optional.
 	 *
-	 * @return 0 if OK, -ve on error
+	 * @return 0 if OK, -ENOENT if no initial environment could be found,
+	 * other -ve on error
 	 */
 	int (*init)(void);
 };
-- 
2.14.0.rc1.383.gd1ce394fe2-goog



More information about the U-Boot mailing list