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:
committed by
Tom Rini
parent
e1caa5841e
commit
b2cdef4861
29
env/env.c
vendored
29
env/env.c
vendored
@@ -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)
|
||||
|
Reference in New Issue
Block a user