summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorRavi Babu <ravibabu@ti.com>2015-08-17 13:29:49 +0530
committerJagan Teki <jteki@openedev.com>2015-08-17 23:29:14 +0530
commit7dd0174467a2a1fc99d7dc19b11bbadc80f9c740 (patch)
tree5062540bf6119cd97171e2cc4c61bbad18fd41da /common
parent156e96f0382a09e3b67681566319ec945f192eb9 (diff)
downloadtalos-obmc-uboot-7dd0174467a2a1fc99d7dc19b11bbadc80f9c740.tar.gz
talos-obmc-uboot-7dd0174467a2a1fc99d7dc19b11bbadc80f9c740.zip
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>
Diffstat (limited to 'common')
-rw-r--r--common/env_sf.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/common/env_sf.c b/common/env_sf.c
index e928f5752c..940983124f 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) {
OpenPOWER on IntegriCloud