mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
Merge branch '2019-01-25-master-imports'
- snapdragon 820c improvements - poplar updates - DFU + SPL cleanups - Improve the mediatek mmc driver - Other minor cleanups / improvements
This commit is contained in:
4
env/common.c
vendored
4
env/common.c
vendored
@@ -115,7 +115,7 @@ int env_import(const char *buf, int check)
|
||||
|
||||
if (crc32(0, ep->data, ENV_SIZE) != crc) {
|
||||
set_default_env("bad CRC", 0);
|
||||
return -EIO;
|
||||
return -ENOMSG; /* needed for env_load() */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ int env_import_redund(const char *buf1, int buf1_read_fail,
|
||||
|
||||
if (!crc1_ok && !crc2_ok) {
|
||||
set_default_env("bad CRC", 0);
|
||||
return -EIO;
|
||||
return -ENOMSG; /* needed for env_load() */
|
||||
} else if (crc1_ok && !crc2_ok) {
|
||||
gd->env_valid = ENV_VALID;
|
||||
} else if (!crc1_ok && crc2_ok) {
|
||||
|
25
env/env.c
vendored
25
env/env.c
vendored
@@ -177,6 +177,7 @@ int env_get_char(int index)
|
||||
int env_load(void)
|
||||
{
|
||||
struct env_driver *drv;
|
||||
int best_prio = -1;
|
||||
int prio;
|
||||
|
||||
for (prio = 0; (drv = env_driver_lookup(ENVOP_LOAD, prio)); prio++) {
|
||||
@@ -195,20 +196,32 @@ int env_load(void)
|
||||
* one message.
|
||||
*/
|
||||
ret = drv->load();
|
||||
if (ret) {
|
||||
debug("Failed (%d)\n", ret);
|
||||
} else {
|
||||
if (!ret) {
|
||||
printf("OK\n");
|
||||
return 0;
|
||||
} else if (ret == -ENOMSG) {
|
||||
/* Handle "bad CRC" case */
|
||||
if (best_prio == -1)
|
||||
best_prio = prio;
|
||||
} else {
|
||||
debug("Failed (%d)\n", ret);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* In case of invalid environment, we set the 'default' env location
|
||||
* to the highest priority. In this way, next calls to env_save()
|
||||
* will restore the environment at the right place.
|
||||
* to the best choice, i.e.:
|
||||
* 1. Environment location with bad CRC, if such location was found
|
||||
* 2. Otherwise use the location with highest priority
|
||||
*
|
||||
* This way, next calls to env_save() will restore the environment
|
||||
* at the right place.
|
||||
*/
|
||||
env_get_location(ENVOP_LOAD, 0);
|
||||
if (best_prio >= 0)
|
||||
debug("Selecting environment with bad CRC\n");
|
||||
else
|
||||
best_prio = 0;
|
||||
env_get_location(ENVOP_LOAD, best_prio);
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
Reference in New Issue
Block a user