[U-Boot] [PATCH v3 2/3] env_sf: generalize call to spi_flash_free after accesses
Valentin Longchamp
valentin.longchamp at keymile.com
Fri Nov 13 14:25:54 CET 2015
Some board require spi_flash_free to be called after all the accesses,
in order, for instance, to restore the pin multiplexing configuration in
the case where the SPI pins are multiplexed.
This was done only in env_relocate_spec and not in saveenv. saveenv is
thus changed in order to have the same behavior as env_relocate_spec.
Since the static env_flash variable will be NULL after every function
call, it is thus removed and its functionality is replaced by a
systematic call to spi_flash_probe at the start of both
env_relocate_spec and saveenv.
Signed-off-by: Valentin Longchamp <valentin.longchamp at keymile.com>
---
Changes in v3:
- Rebased on v2015.10
Changes in v2: None
common/env_sf.c | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/common/env_sf.c b/common/env_sf.c
index 9409831..19fcbd3 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -52,14 +52,11 @@ int saveenv(void)
u32 saved_size, saved_offset, sector = 1;
int ret;
+ env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
+ CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
if (!env_flash) {
- env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS,
- CONFIG_ENV_SPI_CS,
- CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
- if (!env_flash) {
- set_default_env("!spi_flash_probe() failed");
- return 1;
- }
+ set_default_env("!spi_flash_probe() failed");
+ return 1;
}
ret = env_export(&env_new);
@@ -131,6 +128,9 @@ int saveenv(void)
if (saved_buffer)
free(saved_buffer);
+ spi_flash_free(env_flash);
+ env_flash = NULL;
+
return ret;
}
@@ -228,14 +228,11 @@ int saveenv(void)
int ret = 1;
env_t env_new;
+ env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
+ CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
if (!env_flash) {
- env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS,
- CONFIG_ENV_SPI_CS,
- CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
- if (!env_flash) {
- set_default_env("!spi_flash_probe() failed");
- return 1;
- }
+ set_default_env("!spi_flash_probe() failed");
+ return 1;
}
/* Is the sector larger than the env (i.e. embedded) */
@@ -288,6 +285,9 @@ int saveenv(void)
if (saved_buffer)
free(saved_buffer);
+ spi_flash_free(env_flash);
+ env_flash = NULL;
+
return ret;
}
--
1.8.3.1
More information about the U-Boot
mailing list