env: Switch over to use environment location drivers

Move over to use a the master implementation of the location drivers, with
each method calling out to the appropriate driver.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Simon Glass 2017-08-03 12:22:01 -06:00 committed by Tom Rini
parent c9d728dd33
commit e5bce247b0
15 changed files with 128 additions and 114 deletions

16
env/dataflash.c vendored
View File

@ -18,7 +18,7 @@ env_t *env_ptr;
char *env_name_spec = "dataflash";
uchar env_get_char_spec(int index)
static unsigned char env_dataflash_get_char(int index)
{
uchar c;
@ -27,7 +27,7 @@ uchar env_get_char_spec(int index)
return c;
}
void env_relocate_spec(void)
static void env_dataflash_load(void)
{
ulong crc, new = 0;
unsigned off;
@ -54,7 +54,7 @@ void env_relocate_spec(void)
#error No support for redundant environment on dataflash yet!
#endif
int saveenv(void)
static int env_dataflash_save(void)
{
env_t env_new;
int ret;
@ -74,7 +74,7 @@ int saveenv(void)
* We are still running from ROM, so data use is limited.
* Use a (moderately small) buffer on the stack
*/
int env_init(void)
int env_dataflash_init(void)
{
/* use default */
gd->env_addr = (ulong)&default_environment[0];
@ -85,8 +85,8 @@ int env_init(void)
U_BOOT_ENV_LOCATION(dataflash) = {
.location = ENVL_DATAFLASH,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.get_char = env_dataflash_get_char,
.load = env_dataflash_load,
.save = env_save_ptr(env_dataflash_save),
.init = env_dataflash_init,
};

16
env/eeprom.c vendored
View File

@ -65,7 +65,7 @@ static int eeprom_bus_write(unsigned dev_addr, unsigned offset,
return rcode;
}
uchar env_get_char_spec(int index)
static uchar env_eeprom_get_char(int index)
{
uchar c;
unsigned int off = CONFIG_ENV_OFFSET;
@ -80,7 +80,7 @@ uchar env_get_char_spec(int index)
return c;
}
void env_relocate_spec(void)
static void env_eeprom_load(void)
{
char buf_env[CONFIG_ENV_SIZE];
unsigned int off = CONFIG_ENV_OFFSET;
@ -188,7 +188,7 @@ void env_relocate_spec(void)
env_import(buf_env, 1);
}
int saveenv(void)
static int env_eeprom_save(void)
{
env_t env_new;
int rc;
@ -237,7 +237,7 @@ int saveenv(void)
* We are still running from ROM, so data use is limited.
* Use a (moderately small) buffer on the stack
*/
int env_init(void)
static int env_eeprom_init(void)
{
gd->env_addr = (ulong)&default_environment[0];
gd->env_valid = ENV_VALID;
@ -246,8 +246,8 @@ int env_init(void)
U_BOOT_ENV_LOCATION(eeprom) = {
.location = ENVL_EEPROM,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.get_char = env_eeprom_get_char,
.load = env_eeprom_load,
.save = env_save_ptr(env_eeprom_save),
.init = env_eeprom_init,
};

20
env/env.c vendored
View File

@ -143,3 +143,23 @@ int env_init_new(void)
return 0;
}
unsigned char env_get_char_spec(int index)
{
return *(uchar *)(gd->env_addr + index);
}
void env_relocate_spec(void)
{
env_load();
}
int saveenv(void)
{
return env_save();
}
int env_init(void)
{
return env_init_new();
}

13
env/ext4.c vendored
View File

@ -37,7 +37,7 @@ env_t *env_ptr;
DECLARE_GLOBAL_DATA_PTR;
int env_init(void)
static int env_ext4_init(void)
{
/* use default */
gd->env_addr = (ulong)&default_environment[0];
@ -47,7 +47,7 @@ int env_init(void)
}
#ifdef CONFIG_CMD_SAVEENV
int saveenv(void)
static int env_ext4_save(void)
{
env_t env_new;
struct blk_desc *dev_desc = NULL;
@ -88,7 +88,7 @@ int saveenv(void)
}
#endif /* CONFIG_CMD_SAVEENV */
void env_relocate_spec(void)
static void env_ext4_load(void)
{
ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
struct blk_desc *dev_desc = NULL;
@ -130,8 +130,7 @@ err_env_relocate:
U_BOOT_ENV_LOCATION(ext4) = {
.location = ENVL_EXT4,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.load = env_ext4_load,
.save = env_save_ptr(env_ext4_save),
.init = env_ext4_init,
};

13
env/fat.c vendored
View File

@ -37,7 +37,7 @@ env_t *env_ptr;
DECLARE_GLOBAL_DATA_PTR;
int env_init(void)
static int env_fat_init(void)
{
/* use default */
gd->env_addr = (ulong)&default_environment[0];
@ -47,7 +47,7 @@ int env_init(void)
}
#ifdef CMD_SAVEENV
int saveenv(void)
static int env_fat_save(void)
{
env_t env_new;
struct blk_desc *dev_desc = NULL;
@ -87,7 +87,7 @@ int saveenv(void)
#endif /* CMD_SAVEENV */
#ifdef LOADENV
void env_relocate_spec(void)
static void env_fat_load(void)
{
ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
struct blk_desc *dev_desc = NULL;
@ -125,12 +125,11 @@ err_env_relocate:
U_BOOT_ENV_LOCATION(fat) = {
.location = ENVL_FAT,
.get_char = env_get_char_spec,
#ifdef LOADENV
.load = env_relocate_spec,
.load = env_fat_load,
#endif
#ifdef CMD_SAVEENV
.save = env_save_ptr(saveenv),
.save = env_save_ptr(env_fat_save),
#endif
.init = env_init,
.init = env_fat_init,
};

34
env/flash.c vendored
View File

@ -50,30 +50,30 @@ char *env_name_spec = "Flash";
#ifdef ENV_IS_EMBEDDED
env_t *env_ptr = &environment;
static env_t *flash_addr = (env_t *)CONFIG_ENV_ADDR;
static __maybe_unused env_t *flash_addr = (env_t *)CONFIG_ENV_ADDR;
#else /* ! ENV_IS_EMBEDDED */
env_t *env_ptr = (env_t *)CONFIG_ENV_ADDR;
static env_t *flash_addr = (env_t *)CONFIG_ENV_ADDR;
static __maybe_unused env_t *flash_addr = (env_t *)CONFIG_ENV_ADDR;
#endif /* ENV_IS_EMBEDDED */
#if defined(CMD_SAVEENV) || defined(CONFIG_ENV_ADDR_REDUND)
/* CONFIG_ENV_ADDR is supposed to be on sector boundary */
static ulong end_addr = CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1;
#endif
static ulong __maybe_unused end_addr =
CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1;
#ifdef CONFIG_ENV_ADDR_REDUND
static env_t *flash_addr_new = (env_t *)CONFIG_ENV_ADDR_REDUND;
static env_t __maybe_unused *flash_addr_new = (env_t *)CONFIG_ENV_ADDR_REDUND;
/* CONFIG_ENV_ADDR_REDUND is supposed to be on sector boundary */
static ulong end_addr_new = CONFIG_ENV_ADDR_REDUND + CONFIG_ENV_SECT_SIZE - 1;
static ulong __maybe_unused end_addr_new =
CONFIG_ENV_ADDR_REDUND + CONFIG_ENV_SECT_SIZE - 1;
#endif /* CONFIG_ENV_ADDR_REDUND */
#ifdef CONFIG_ENV_ADDR_REDUND
#ifdef INITENV
int env_init(void)
static int env_flash_init(void)
{
int crc1_ok = 0, crc2_ok = 0;
@ -119,7 +119,7 @@ int env_init(void)
#endif
#ifdef CMD_SAVEENV
int saveenv(void)
static int env_flash_save(void)
{
env_t env_new;
char *saved_data = NULL;
@ -224,7 +224,7 @@ done:
#else /* ! CONFIG_ENV_ADDR_REDUND */
#ifdef INITENV
int env_init(void)
static int env_flash_init(void)
{
if (crc32(0, env_ptr->data, ENV_SIZE) == env_ptr->crc) {
gd->env_addr = (ulong)&(env_ptr->data);
@ -239,7 +239,7 @@ int env_init(void)
#endif
#ifdef CMD_SAVEENV
int saveenv(void)
static int env_flash_save(void)
{
env_t env_new;
int rc = 1;
@ -309,7 +309,8 @@ done:
#endif /* CONFIG_ENV_ADDR_REDUND */
void env_relocate_spec(void)
#ifdef LOADENV
static void env_flash_load(void)
{
#ifdef CONFIG_ENV_ADDR_REDUND
if (gd->env_addr != (ulong)&(flash_addr->data)) {
@ -354,16 +355,17 @@ void env_relocate_spec(void)
env_import((char *)flash_addr, 1);
}
#endif /* LOADENV */
U_BOOT_ENV_LOCATION(flash) = {
.location = ENVL_FLASH,
#ifdef LOADENV
.load = env_relocate_spec,
.load = env_flash_load,
#endif
#ifdef CMD_SAVEENV
.save = env_save_ptr(saveenv),
.save = env_save_ptr(env_flash_save),
#endif
#ifdef INITENV
.init = env_init,
.init = env_flash_init,
#endif
};

19
env/mmc.c vendored
View File

@ -82,7 +82,7 @@ __weak int mmc_get_env_dev(void)
return CONFIG_SYS_MMC_ENV_DEV;
}
int env_init(void)
static int env_mmc_init(void)
{
/* use default */
gd->env_addr = (ulong)&default_environment[0];
@ -145,7 +145,7 @@ static void fini_mmc_for_env(struct mmc *mmc)
#endif
}
#ifdef CONFIG_CMD_SAVEENV
#if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_SPL_BUILD)
static inline int write_env(struct mmc *mmc, unsigned long size,
unsigned long offset, const void *buffer)
{
@ -160,7 +160,7 @@ static inline int write_env(struct mmc *mmc, unsigned long size,
return (n == blk_cnt) ? 0 : -1;
}
int saveenv(void)
static int env_mmc_save(void)
{
ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
int dev = mmc_get_env_dev();
@ -207,7 +207,7 @@ fini:
fini_mmc_for_env(mmc);
return ret;
}
#endif /* CONFIG_CMD_SAVEENV */
#endif /* CONFIG_CMD_SAVEENV && !CONFIG_SPL_BUILD */
static inline int read_env(struct mmc *mmc, unsigned long size,
unsigned long offset, const void *buffer)
@ -224,7 +224,7 @@ static inline int read_env(struct mmc *mmc, unsigned long size,
}
#ifdef CONFIG_ENV_OFFSET_REDUND
void env_relocate_spec(void)
static void env_mmc_load(void)
{
#if !defined(ENV_IS_EMBEDDED)
struct mmc *mmc;
@ -284,7 +284,7 @@ err:
#endif
}
#else /* ! CONFIG_ENV_OFFSET_REDUND */
void env_relocate_spec(void)
static void env_mmc_load(void)
{
#if !defined(ENV_IS_EMBEDDED)
ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
@ -327,10 +327,9 @@ err:
U_BOOT_ENV_LOCATION(mmc) = {
.location = ENVL_MMC,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.load = env_mmc_load,
#ifndef CONFIG_SPL_BUILD
.save = env_save_ptr(saveenv),
.save = env_save_ptr(env_mmc_save),
#endif
.init = env_init,
.init = env_mmc_init,
};

14
env/nand.c vendored
View File

@ -64,7 +64,7 @@ DECLARE_GLOBAL_DATA_PTR;
* This way the SPL loads not only the U-Boot image from NAND but
* also the environment.
*/
int env_init(void)
static int env_nand_init(void)
{
#if defined(ENV_IS_EMBEDDED) || defined(CONFIG_NAND_ENV_DST)
int crc1_ok = 0, crc2_ok = 0;
@ -185,7 +185,7 @@ static int erase_and_write_env(const struct nand_env_location *location,
return ret;
}
int saveenv(void)
static int env_nand_save(void)
{
int ret = 0;
ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
@ -317,7 +317,7 @@ int get_nand_env_oob(struct mtd_info *mtd, unsigned long *result)
#endif
#ifdef CONFIG_ENV_OFFSET_REDUND
void env_relocate_spec(void)
static void env_nand_load(void)
{
#if !defined(ENV_IS_EMBEDDED)
int read1_fail = 0, read2_fail = 0;
@ -365,7 +365,7 @@ done:
* device i.e., nand_dev_desc + 0. This is also the behaviour using
* the new NAND code.
*/
void env_relocate_spec(void)
static void env_nand_load(void)
{
#if !defined(ENV_IS_EMBEDDED)
int ret;
@ -398,9 +398,9 @@ void env_relocate_spec(void)
U_BOOT_ENV_LOCATION(nand) = {
.location = ENVL_NAND,
.load = env_relocate_spec,
.load = env_nand_load,
#if defined(CMD_SAVEENV)
.save = env_save_ptr(saveenv),
.save = env_save_ptr(env_nand_save),
#endif
.init = env_init,
.init = env_nand_init,
};

8
env/nowhere.c vendored
View File

@ -17,7 +17,7 @@ DECLARE_GLOBAL_DATA_PTR;
env_t *env_ptr;
void env_relocate_spec(void)
static void env_nowhere_load(void)
{
}
@ -26,7 +26,7 @@ void env_relocate_spec(void)
*
* We are still running from ROM, so data use is limited
*/
int env_init(void)
static int env_nowhere_init(void)
{
gd->env_addr = (ulong)&default_environment[0];
gd->env_valid = 0;
@ -36,6 +36,6 @@ int env_init(void)
U_BOOT_ENV_LOCATION(nowhere) = {
.location = ENVL_NOWHERE,
.load = env_relocate_spec,
.init = env_init,
.load = env_nowhere_load,
.init = env_nowhere_init,
};

16
env/nvram.c vendored
View File

@ -44,7 +44,7 @@ env_t *env_ptr = (env_t *)CONFIG_ENV_ADDR;
char *env_name_spec = "NVRAM";
#ifdef CONFIG_SYS_NVRAM_ACCESS_ROUTINE
uchar env_get_char_spec(int index)
static uchar env_nvram_get_char(int index)
{
uchar c;
@ -54,7 +54,7 @@ uchar env_get_char_spec(int index)
}
#endif
void env_relocate_spec(void)
static void env_nvram_load(void)
{
char buf[CONFIG_ENV_SIZE];
@ -66,7 +66,7 @@ void env_relocate_spec(void)
env_import(buf, 1);
}
int saveenv(void)
static int env_nvram_save(void)
{
env_t env_new;
int rcode = 0;
@ -89,7 +89,7 @@ int saveenv(void)
*
* We are still running from ROM, so data use is limited
*/
int env_init(void)
static int env_nvram_init(void)
{
#if defined(CONFIG_SYS_NVRAM_ACCESS_ROUTINE)
ulong crc;
@ -116,9 +116,9 @@ int env_init(void)
U_BOOT_ENV_LOCATION(nvram) = {
.location = ENVL_NVRAM,
#ifdef CONFIG_SYS_NVRAM_ACCESS_ROUTINE
.get_char = env_get_char_spec,
.get_char = env_nvram_get_char,
#endif
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.load = env_nvram_load,
.save = env_save_ptr(env_nvram_save),
.init = env_nvram_init,
};

13
env/onenand.c vendored
View File

@ -28,7 +28,7 @@ char *env_name_spec = "OneNAND";
DECLARE_GLOBAL_DATA_PTR;
void env_relocate_spec(void)
static void env_onenand_load(void)
{
struct mtd_info *mtd = &onenand_mtd;
#ifdef CONFIG_ENV_ADDR_FLEX
@ -63,7 +63,7 @@ void env_relocate_spec(void)
gd->env_valid = ENV_VALID;
}
int saveenv(void)
static int env_onenand_save(void)
{
env_t env_new;
int ret;
@ -106,7 +106,7 @@ int saveenv(void)
return 0;
}
int env_init(void)
static int env_onenand_init(void)
{
/* use default */
gd->env_addr = (ulong)&default_environment[0];
@ -117,8 +117,7 @@ int env_init(void)
U_BOOT_ENV_LOCATION(onenand) = {
.location = ENVL_ONENAND,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.load = env_onenand_load,
.save = env_save_ptr(env_onenand_save),
.init = env_onenand_init,
};

13
env/remote.c vendored
View File

@ -25,7 +25,7 @@ DECLARE_GLOBAL_DATA_PTR;
#define CONFIG_ENV_OFFSET 0
#endif
int env_init(void)
static int env_remote_init(void)
{
if (crc32(0, env_ptr->data, ENV_SIZE) == env_ptr->crc) {
gd->env_addr = (ulong)&(env_ptr->data);
@ -39,7 +39,7 @@ int env_init(void)
}
#ifdef CONFIG_CMD_SAVEENV
int saveenv(void)
static int env_remote_save(void)
{
#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
printf("Can not support the 'saveenv' when boot from SRIO or PCIE!\n");
@ -50,7 +50,7 @@ int saveenv(void)
}
#endif /* CONFIG_CMD_SAVEENV */
void env_relocate_spec(void)
static void env_remote_load(void)
{
#ifndef ENV_IS_EMBEDDED
env_import((char *)env_ptr, 1);
@ -59,8 +59,7 @@ void env_relocate_spec(void)
U_BOOT_ENV_LOCATION(remote) = {
.location = ENVL_REMOTE,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.load = env_remote_load,
.save = env_save_ptr(env_remote_save),
.init = env_remote_init,
};

13
env/sata.c vendored
View File

@ -33,7 +33,7 @@ __weak int sata_get_env_dev(void)
return CONFIG_SYS_SATA_ENV_DEV;
}
int env_init(void)
static int env_sata_init(void)
{
/* use default */
gd->env_addr = (ulong)&default_environment[0];
@ -56,7 +56,7 @@ static inline int write_env(struct blk_desc *sata, unsigned long size,
return (n == blk_cnt) ? 0 : -1;
}
int saveenv(void)
static int env_sata_save(void)
{
ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
struct blk_desc *sata = NULL;
@ -102,7 +102,7 @@ static inline int read_env(struct blk_desc *sata, unsigned long size,
return (n == blk_cnt) ? 0 : -1;
}
void env_relocate_spec(void)
static void env_sata_load(void)
{
ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
struct blk_desc *sata = NULL;
@ -128,8 +128,7 @@ void env_relocate_spec(void)
U_BOOT_ENV_LOCATION(sata) = {
.location = ENVL_ESATA,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.load = env_sata_load,
.save = env_save_ptr(env_sata_save),
.init = env_sata_init,
};

17
env/sf.c vendored
View File

@ -84,7 +84,7 @@ static int setup_flash_device(void)
#if defined(CONFIG_ENV_OFFSET_REDUND)
#ifdef CMD_SAVEENV
int saveenv(void)
static int env_sf_save(void)
{
env_t env_new;
char *saved_buffer = NULL, flag = OBSOLETE_FLAG;
@ -164,7 +164,7 @@ int saveenv(void)
}
#endif /* CMD_SAVEENV */
void env_relocate_spec(void)
static void env_sf_load(void)
{
int ret;
int crc1_ok = 0, crc2_ok = 0;
@ -249,7 +249,7 @@ out:
}
#else
#ifdef CMD_SAVEENV
int saveenv(void)
static int env_sf_save(void)
{
u32 saved_size, saved_offset, sector;
char *saved_buffer = NULL;
@ -310,7 +310,7 @@ int saveenv(void)
}
#endif /* CMD_SAVEENV */
void env_relocate_spec(void)
static void env_sf_load(void)
{
int ret;
char *buf = NULL;
@ -344,7 +344,7 @@ out:
}
#endif
int env_init(void)
static int env_sf_init(void)
{
/* SPI flash isn't usable before relocation */
gd->env_addr = (ulong)&default_environment[0];
@ -355,10 +355,9 @@ int env_init(void)
U_BOOT_ENV_LOCATION(sf) = {
.location = ENVL_SPI_FLASH,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.load = env_sf_load,
#ifdef CMD_SAVEENV
.save = env_save_ptr(saveenv),
.save = env_save_ptr(env_sf_save),
#endif
.init = env_init,
.init = env_sf_init,
};

17
env/ubi.c vendored
View File

@ -22,7 +22,7 @@ env_t *env_ptr;
DECLARE_GLOBAL_DATA_PTR;
int env_init(void)
static int env_ubi_init(void)
{
/* use default */
gd->env_addr = (ulong)&default_environment[0];
@ -33,7 +33,7 @@ int env_init(void)
#ifdef CONFIG_CMD_SAVEENV
#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
int saveenv(void)
static int env_ubi_save(void)
{
ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
int ret;
@ -75,7 +75,7 @@ int saveenv(void)
return 0;
}
#else /* ! CONFIG_SYS_REDUNDAND_ENVIRONMENT */
int saveenv(void)
static int env_ubi_save(void)
{
ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
int ret;
@ -104,7 +104,7 @@ int saveenv(void)
#endif /* CONFIG_CMD_SAVEENV */
#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
void env_relocate_spec(void)
static void env_ubi_load(void)
{
ALLOC_CACHE_ALIGN_BUFFER(char, env1_buf, CONFIG_ENV_SIZE);
ALLOC_CACHE_ALIGN_BUFFER(char, env2_buf, CONFIG_ENV_SIZE);
@ -146,7 +146,7 @@ void env_relocate_spec(void)
env_import_redund((char *)tmp_env1, (char *)tmp_env2);
}
#else /* ! CONFIG_SYS_REDUNDAND_ENVIRONMENT */
void env_relocate_spec(void)
static void env_ubi_load(void)
{
ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
@ -180,8 +180,7 @@ void env_relocate_spec(void)
U_BOOT_ENV_LOCATION(ubi) = {
.location = ENVL_UBI,
.get_char = env_get_char_spec,
.load = env_relocate_spec,
.save = env_save_ptr(saveenv),
.init = env_init,
.load = env_ubi_load,
.save = env_save_ptr(env_ubi_save),
.init = env_ubi_init,
};