env: Load env when ENV_IS_NOWHERE is only location selected
This patch prevent u-boot from hanging on a UltraZed EG board (zynqmp). Without the patch, (drv = env_driver_lookup(ENVOP_INIT, prio)) evaluates to 0, causing prio = 0 Then, (!prio) is hit, returning -ENODEV causing a stall. With the patch, instead of returning -ENODEV and causing a stall, we set gd->env_addr (is this really needed?) and then mark gd->env_valid = ENV_INVALID to use the default env.
This commit is contained in:
parent
545eceb520
commit
8d61237edb
13
env/env.c
vendored
13
env/env.c
vendored
@ -322,17 +322,18 @@ int env_init(void)
|
||||
|
||||
debug("%s: Environment %s init done (ret=%d)\n", __func__,
|
||||
drv->name, ret);
|
||||
|
||||
if (gd->env_valid == ENV_INVALID)
|
||||
ret = -ENOENT;
|
||||
}
|
||||
|
||||
if (!prio)
|
||||
return -ENODEV;
|
||||
if (!prio) {
|
||||
gd->env_addr = (ulong)&default_environment[0];
|
||||
gd->env_valid = ENV_INVALID;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ret == -ENOENT) {
|
||||
gd->env_addr = (ulong)&default_environment[0];
|
||||
gd->env_valid = ENV_VALID;
|
||||
gd->env_valid = ENV_INVALID;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user