env: correctly handle env_load_prio
Only update gd->env_load_prio in generic function env_load() and no more in the weak function env_get_location() which is called in many place (for example in env_driver_lookup, even for ENVOP_SAVE operation). This patch is a preliminary step to use env_driver_lookup()/ env_get_location() in new function env_select() without updating gd->env_load_prio. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
This commit is contained in:
parent
22140d16e5
commit
6d8d8400a2
7
env/env.c
vendored
7
env/env.c
vendored
@ -131,8 +131,6 @@ __weak enum env_location env_get_location(enum env_operation op, int prio)
|
||||
if (prio >= ARRAY_SIZE(env_locations))
|
||||
return ENVL_UNKNOWN;
|
||||
|
||||
gd->env_load_prio = prio;
|
||||
|
||||
return env_locations[prio];
|
||||
}
|
||||
|
||||
@ -204,6 +202,8 @@ int env_load(void)
|
||||
ret = drv->load();
|
||||
if (!ret) {
|
||||
printf("OK\n");
|
||||
gd->env_load_prio = prio;
|
||||
|
||||
return 0;
|
||||
} else if (ret == -ENOMSG) {
|
||||
/* Handle "bad CRC" case */
|
||||
@ -227,7 +227,8 @@ int env_load(void)
|
||||
debug("Selecting environment with bad CRC\n");
|
||||
else
|
||||
best_prio = 0;
|
||||
env_get_location(ENVOP_LOAD, best_prio);
|
||||
|
||||
gd->env_load_prio = best_prio;
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user