summaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
authorAshish Kumar <Ashish.Kumar@nxp.com>2017-12-07 10:45:13 (GMT)
committerPrabhakar Kushwaha <prabhakar.kushwaha@nxp.com>2018-01-12 06:24:12 (GMT)
commitcb11ee1a8483fd607d0eb74a2ea96585ccd1f090 (patch)
tree1c8caff3de6e2eff5a16eb589be6c28686a9ca88 /env
parent70ba3deaac4236fa9b00b7c280564fb1e92af5ec (diff)
downloadu-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>
Diffstat (limited to 'env')
-rw-r--r--env/sf.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/env/sf.c b/env/sf.c
index e51b1ae..a2e4c93 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
};