1
0
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:
Tom Rini
2019-01-26 22:47:55 -05:00
61 changed files with 846 additions and 245 deletions

4
env/common.c vendored
View File

@@ -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
View File

@@ -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;
}