summaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
authorFelix.Vietmeyer@jila.colorado.edu <Felix.Vietmeyer@jila.colorado.edu>2021-04-20 20:04:26 -0600
committerTom Rini <trini@konsulko.com>2022-04-07 13:52:36 -0400
commit8d61237edbf6314a701cf78da2c5893a73ff5438 (patch)
tree13c352a05cbb1af82f25ec6df490482ab7390c48 /env
parent545eceb52062cdc995c45b9581174b7ae66b0e6f (diff)
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.
Diffstat (limited to 'env')
-rw-r--r--env/env.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/env/env.c b/env/env.c
index e4dfb92e15..7168cb9d31 100644
--- a/env/env.c
+++ b/env/env.c
@@ -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;
}