diff options
author | Ashish Kumar <Ashish.Kumar@nxp.com> | 2017-12-07 10:45:13 (GMT) |
---|---|---|
committer | Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com> | 2018-01-12 06:24:12 (GMT) |
commit | cb11ee1a8483fd607d0eb74a2ea96585ccd1f090 (patch) | |
tree | 1c8caff3de6e2eff5a16eb589be6c28686a9ca88 | |
parent | 70ba3deaac4236fa9b00b7c280564fb1e92af5ec (diff) | |
download | u-boot-cb11ee1a8483fd607d0eb74a2ea96585ccd1f090.tar.xz |
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>
-rw-r--r-- | env/sf.c | 21 | ||||
-rw-r--r-- | include/configs/ls1088a_common.h | 6 | ||||
-rw-r--r-- | include/configs/ls1088aqds.h | 1 | ||||
-rw-r--r-- | include/configs/ls1088ardb.h | 1 |
4 files changed, 27 insertions, 2 deletions
@@ -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 }; diff --git a/include/configs/ls1088a_common.h b/include/configs/ls1088a_common.h index ed6909e..6c0384b 100644 --- a/include/configs/ls1088a_common.h +++ b/include/configs/ls1088a_common.h @@ -46,6 +46,12 @@ #define CONFIG_SUPPORT_RAW_INITRD +#ifdef CONFIG_QSPI_BOOT +#define CONFIG_SYS_FSL_QSPI_BASE 0x20000000 +#define CONFIG_ENV_OFFSET 0x300000 /* 3MB */ +#define CONFIG_ENV_ADDR (CONFIG_SYS_FSL_QSPI_BASE + \ + CONFIG_ENV_OFFSET) +#endif #define CONFIG_SKIP_LOWLEVEL_INIT diff --git a/include/configs/ls1088aqds.h b/include/configs/ls1088aqds.h index e0ea03e..dcf307f 100644 --- a/include/configs/ls1088aqds.h +++ b/include/configs/ls1088aqds.h @@ -21,7 +21,6 @@ unsigned long get_board_ddr_clk(void); #if defined(CONFIG_QSPI_BOOT) #define CONFIG_ENV_SIZE 0x2000 /* 8KB */ -#define CONFIG_ENV_OFFSET 0x300000 /* 3MB */ #define CONFIG_ENV_SECT_SIZE 0x40000 #elif defined(CONFIG_SD_BOOT) #define CONFIG_ENV_OFFSET (3 * 1024 * 1024) diff --git a/include/configs/ls1088ardb.h b/include/configs/ls1088ardb.h index 3c6c666..d0066e3 100644 --- a/include/configs/ls1088ardb.h +++ b/include/configs/ls1088ardb.h @@ -17,7 +17,6 @@ #if defined(CONFIG_QSPI_BOOT) #define CONFIG_ENV_SIZE 0x2000 /* 8KB */ -#define CONFIG_ENV_OFFSET 0x300000 /* 3MB */ #define CONFIG_ENV_SECT_SIZE 0x40000 #elif defined(CONFIG_SD_BOOT) #define CONFIG_ENV_OFFSET (3 * 1024 * 1024) |