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

Ashish Kumar Ashish.Kumar at nxp.com
Thu Dec 14 11:57:02 UTC 2017


ENV variables can now be used before relocation.

Signed-off-by: Ashish Kumar <Ashish.Kumar at 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
 };
-- 
2.7.4



More information about the U-Boot mailing list