From: Simon Glass Date: Thu, 3 Aug 2017 18:22:02 +0000 (-0600) Subject: env: Drop common init() functions X-Git-Tag: v2017.09-rc3~91 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7938822a6b75;p=oweals%2Fu-boot.git env: Drop common init() functions 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 Reviewed-by: Tom Rini --- 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); };