summaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
authorYork Sun <york.sun@nxp.com>2018-02-07 14:17:11 -0800
committerTom Rini <trini@konsulko.com>2018-02-16 11:12:41 -0500
commite1caa5841e8a9bc0ee658bdacae0519fa28e1e6a (patch)
tree97f85fa34ef28e76d53a27eddd76fce321acb333 /env
parent32fe36574ea5e6ea55313e16547b98a984af7767 (diff)
env: Fix env_load_location
Commit 7d714a24d725 ("env: Support multiple environments") added static variable env_load_location. When saving environmental variables, this variable is presumed to have the value set before. In case the value was set before relocation and U-Boot runs from a NOR flash, this variable wasn't writable. This causes failure when saving the environment. To save this location, global data must be used instead. Signed-off-by: York Sun <york.sun@nxp.com> CC: Maxime Ripard <maxime.ripard@free-electrons.com>
Diffstat (limited to 'env')
-rw-r--r--env/env.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/env/env.c b/env/env.c
index 9a89832c1a..edfb575c0e 100644
--- a/env/env.c
+++ b/env/env.c
@@ -62,8 +62,6 @@ static enum env_location env_locations[] = {
#endif
};
-static enum env_location env_load_location = ENVL_UNKNOWN;
-
static bool env_has_inited(enum env_location location)
{
return gd->env_has_init & BIT(location);
@@ -108,11 +106,11 @@ __weak enum env_location env_get_location(enum env_operation op, int prio)
if (prio >= ARRAY_SIZE(env_locations))
return ENVL_UNKNOWN;
- env_load_location = env_locations[prio];
- return env_load_location;
+ gd->env_load_location = env_locations[prio];
+ return gd->env_load_location;
case ENVOP_SAVE:
- return env_load_location;
+ return gd->env_load_location;
}
return ENVL_UNKNOWN;