summaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
Diffstat (limited to 'env')
-rw-r--r--env/eeprom.c6
-rw-r--r--env/env.c29
-rw-r--r--env/nvram.c8
3 files changed, 15 insertions, 28 deletions
diff --git a/env/eeprom.c b/env/eeprom.c
index 55d19d9d99..63842d6ff3 100644
--- a/env/eeprom.c
+++ b/env/eeprom.c
@@ -61,7 +61,10 @@ static int eeprom_bus_write(unsigned dev_addr, unsigned offset,
return rcode;
}
-static int env_eeprom_get_char(int index)
+/** Call this function from overridden env_get_char_spec() if you need
+ * this functionality.
+ */
+int env_eeprom_get_char(int index)
{
uchar c;
unsigned int off = CONFIG_ENV_OFFSET;
@@ -228,7 +231,6 @@ 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 edfb575c0e..3795dbc24e 100644
--- a/env/env.c
+++ b/env/env.c
@@ -147,32 +147,17 @@ static struct env_driver *env_driver_lookup(enum env_operation op, int prio)
return drv;
}
-int env_get_char(int index)
+__weak int env_get_char_spec(int index)
{
- struct env_driver *drv;
- int prio;
+ return *(uchar *)(gd->env_addr + index);
+}
+int env_get_char(int index)
+{
if (gd->env_valid == ENV_INVALID)
return default_environment[index];
-
- for (prio = 0; (drv = env_driver_lookup(ENVOP_GET_CHAR, prio)); prio++) {
- int ret;
-
- if (!drv->get_char)
- continue;
-
- if (!env_has_inited(drv->location))
- continue;
-
- ret = drv->get_char(index);
- if (!ret)
- return 0;
-
- debug("%s: Environment %s failed to load (err=%d)\n", __func__,
- drv->name, ret);
- }
-
- return -ENODEV;
+ else
+ return env_get_char_spec(index);
}
int env_load(void)
diff --git a/env/nvram.c b/env/nvram.c
index 6f76fe4b8d..7cc62b631e 100644
--- a/env/nvram.c
+++ b/env/nvram.c
@@ -41,7 +41,10 @@ env_t *env_ptr = (env_t *)CONFIG_ENV_ADDR;
#endif
#ifdef CONFIG_SYS_NVRAM_ACCESS_ROUTINE
-static int env_nvram_get_char(int index)
+/** Call this function from overridden env_get_char_spec() if you need
+ * this functionality.
+ */
+int env_nvram_get_char(int index)
{
uchar c;
@@ -113,9 +116,6 @@ 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
.load = env_nvram_load,
.save = env_save_ptr(env_nvram_save),
.init = env_nvram_init,