[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