1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 08:42:12 +02:00

env: restore old env_get_char() behaviour

With multiple environments, the 'get_char' callback for env
drivers does not really make sense any more because it is
only supported by two drivers (eeprom and nvram).

To restore single character loading for these drivers,
override 'env_get_char_spec'.

Signed-off-by: Simon Goldschmidt <sgoldschmidt@de.pepperl-fuchs.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
This commit is contained in:
Goldschmidt Simon
2018-02-09 20:23:17 +00:00
committed by Tom Rini
parent e1caa5841e
commit b2cdef4861
4 changed files with 15 additions and 39 deletions

29
env/env.c vendored
View File

@@ -147,32 +147,17 @@ static struct env_driver *env_driver_lookup(enum env_operation op, int prio)
return drv;
}
__weak int env_get_char_spec(int index)
{
return *(uchar *)(gd->env_addr + index);
}
int env_get_char(int index)
{
struct env_driver *drv;
int prio;
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)