diff options
author | Ravi Babu <ravibabu@ti.com> | 2015-08-17 13:29:49 +0530 |
---|---|---|
committer | Jagan Teki <jteki@openedev.com> | 2015-08-17 23:29:14 +0530 |
commit | 7dd0174467a2a1fc99d7dc19b11bbadc80f9c740 (patch) | |
tree | 5062540bf6119cd97171e2cc4c61bbad18fd41da | |
parent | 156e96f0382a09e3b67681566319ec945f192eb9 (diff) | |
download | u-boot-imx-7dd0174467a2a1fc99d7dc19b11bbadc80f9c740.zip u-boot-imx-7dd0174467a2a1fc99d7dc19b11bbadc80f9c740.tar.gz u-boot-imx-7dd0174467a2a1fc99d7dc19b11bbadc80f9c740.tar.bz2 |
env: use cache line aligned memory for flash read
Use memalign() with ARCH_DMA_MINALIGN to allocate read buffers.
This is required because, flash drivers may use DMA for read operations
and may have to invalidate the buffer before read.
Signed-off-by: Ravi Babu <ravibabu@ti.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
Tested-by: Jagan Teki <jteki@openedev.com>
-rw-r--r-- | common/env_sf.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/common/env_sf.c b/common/env_sf.c index e928f57..9409831 100644 --- a/common/env_sf.c +++ b/common/env_sf.c @@ -79,7 +79,7 @@ int saveenv(void) if (CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE) { saved_size = CONFIG_ENV_SECT_SIZE - CONFIG_ENV_SIZE; saved_offset = env_new_offset + CONFIG_ENV_SIZE; - saved_buffer = malloc(saved_size); + saved_buffer = memalign(ARCH_DMA_MINALIGN, saved_size); if (!saved_buffer) { ret = 1; goto done; @@ -142,9 +142,10 @@ void env_relocate_spec(void) env_t *tmp_env2 = NULL; env_t *ep = NULL; - tmp_env1 = (env_t *)malloc(CONFIG_ENV_SIZE); - tmp_env2 = (env_t *)malloc(CONFIG_ENV_SIZE); - + tmp_env1 = (env_t *)memalign(ARCH_DMA_MINALIGN, + CONFIG_ENV_SIZE); + tmp_env2 = (env_t *)memalign(ARCH_DMA_MINALIGN, + CONFIG_ENV_SIZE); if (!tmp_env1 || !tmp_env2) { set_default_env("!malloc() failed"); goto out; @@ -295,7 +296,7 @@ void env_relocate_spec(void) int ret; char *buf = NULL; - buf = (char *)malloc(CONFIG_ENV_SIZE); + buf = (char *)memalign(ARCH_DMA_MINALIGN, CONFIG_ENV_SIZE); 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) { |