[U-Boot] [PATCH 1/2] env: sf: Add support for env init for QSPI-NOR

ENV variables can now be used before relocation.
Signed-off-by: Ashish Kumar Ashish.Kumar@nxp.com --- Tested on ls1088ardb Tested on ls1012 after adding CONFIG_ENV_ADDR in header files
env/sf.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/env/sf.c b/env/sf.c index e51b1ae..d3d46d0 100644 --- a/env/sf.c +++ b/env/sf.c @@ -34,6 +34,7 @@
#ifndef CONFIG_SPL_BUILD #define CMD_SAVEENV +#define INITENV #endif
#ifdef CONFIG_ENV_OFFSET_REDUND @@ -348,6 +349,23 @@ out: } #endif
+#if defined(INITENV) & defined(CONFIG_ENV_ADDR) +static int env_sf_init(void) +{ + env_t *env_ptr = (env_t *)(CONFIG_ENV_ADDR); + + if (crc32(0, env_ptr->data, ENV_SIZE) == env_ptr->crc) { + gd->env_addr = (ulong)&(env_ptr->data); + gd->env_valid = 1; + } else { + gd->env_addr = (ulong)&default_environment[0]; + gd->env_valid = 1; + } + + return 0; +} +#endif + U_BOOT_ENV_LOCATION(sf) = { .location = ENVL_SPI_FLASH, ENV_NAME("SPI Flash") @@ -355,4 +373,7 @@ U_BOOT_ENV_LOCATION(sf) = { #ifdef CMD_SAVEENV .save = env_save_ptr(env_sf_save), #endif +#if defined(INITENV) & defined(CONFIG_ENV_ADDR) + .init = env_sf_init, +#endif };

Signed-off-by: Ashish Kumar Ashish.Kumar@nxp.com --- include/configs/ls1088ardb.h | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/include/configs/ls1088ardb.h b/include/configs/ls1088ardb.h index 1da8153..56416de 100644 --- a/include/configs/ls1088ardb.h +++ b/include/configs/ls1088ardb.h @@ -12,8 +12,10 @@ #define CONFIG_DISPLAY_BOARDINFO_LATE
#if defined(CONFIG_QSPI_BOOT) +#define CONFIG_SYS_FSL_QSPI_BASE 0x20000000 #define CONFIG_ENV_SIZE 0x2000 /* 8KB */ #define CONFIG_ENV_OFFSET 0x300000 /* 3MB */ +#define CONFIG_ENV_ADDR (CONFIG_SYS_FSL_QSPI_BASE + CONFIG_ENV_OFFSET) #define CONFIG_ENV_SECT_SIZE 0x40000 #elif defined(CONFIG_SD_BOOT) #define CONFIG_ENV_OFFSET (3 * 1024 * 1024)
participants (1)
-
Ashish Kumar