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

York Sun york.sun at nxp.com
Mon Jan 8 18:23:23 UTC 2018


On 12/14/2017 04:06 AM, Ashish Kumar wrote:
> ENV variables can now be used before relocation.
> 
> Signed-off-by: Ashish Kumar <Ashish.Kumar at nxp.com>
> ---
> v2:
> replace & with && in #if
> 
> Tested on ls1088ardb.
> Tested on ls1012hexa after defining CONFIG_ENV_ADDR
> 
>  env/sf.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> 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
>  };
> 

Please run get_maintainer.pl to get the CC list if you don't use patman.

I wonder how SPI worked before. Did it work, Simon and Jagan?

York


More information about the U-Boot mailing list