Hello Patrick, On 14.12.22 16:51, Patrick Delaunay wrote: > Add support of opts erase for ubi env backend, this opts is used by > command 'env erase'. > > This command only zero-fill the env UBI volume CONFIG_ENV_UBI_VOLUME > and CONFIG_ENV_UBI_VOLUME_REDUND, so the saved environment becomes > invalid. > > This patch introduces a local define ENV_UBI_VOLUME_REDUND > only to avoid #if in the code, as CONFIG_ENV_UBI_VOLUME_REDUND > is only defined when CONFIG_SYS_REDUNDAND_ENVIRONMENT is defined. > > Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com> > --- > > env/ubi.c | 40 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+)
Reviewed-by: Heiko Schocher <h...@denx.de> bye, Heiko > > diff --git a/env/ubi.c b/env/ubi.c > index eb21c4f38b49..445d34fedb89 100644 > --- a/env/ubi.c > +++ b/env/ubi.c > @@ -28,6 +28,12 @@ > > DECLARE_GLOBAL_DATA_PTR; > > +#if CONFIG_SYS_REDUNDAND_ENVIRONMENT > +#define ENV_UBI_VOLUME_REDUND CONFIG_ENV_UBI_VOLUME_REDUND > +#else > +#define ENV_UBI_VOLUME_REDUND "invalid" > +#endif > + > #ifdef CONFIG_CMD_SAVEENV > #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT > static int env_ubi_save(void) > @@ -177,9 +183,43 @@ static int env_ubi_load(void) > } > #endif /* CONFIG_SYS_REDUNDAND_ENVIRONMENT */ > > +static int env_ubi_erase(void) > +{ > + ALLOC_CACHE_ALIGN_BUFFER(char, env_buf, CONFIG_ENV_SIZE); > + int ret = 0; > + > + if (ubi_part(CONFIG_ENV_UBI_PART, UBI_VID_OFFSET)) { > + printf("\n** Cannot find mtd partition \"%s\"\n", > + CONFIG_ENV_UBI_PART); > + return 1; > + } > + > + memset(env_buf, 0x0, CONFIG_ENV_SIZE); > + > + if (ubi_volume_write(CONFIG_ENV_UBI_VOLUME, > + (void *)env_buf, CONFIG_ENV_SIZE)) { > + printf("\n** Unable to erase env to %s:%s **\n", > + CONFIG_ENV_UBI_PART, > + CONFIG_ENV_UBI_VOLUME); > + ret = 1; > + } > + if (IS_ENABLED(CONFIG_SYS_REDUNDAND_ENVIRONMENT)) { > + if (ubi_volume_write(ENV_UBI_VOLUME_REDUND, > + (void *)env_buf, CONFIG_ENV_SIZE)) { > + printf("\n** Unable to erase env to %s:%s **\n", > + CONFIG_ENV_UBI_PART, > + ENV_UBI_VOLUME_REDUND); > + ret = 1; > + } > + } > + > + return ret; > +} > + > U_BOOT_ENV_LOCATION(ubi) = { > .location = ENVL_UBI, > ENV_NAME("UBI") > .load = env_ubi_load, > .save = env_save_ptr(env_ubi_save), > + .erase = ENV_ERASE_PTR(env_ubi_erase), > }; > -- DENX Software Engineering GmbH, Managing Director: Erika Unter HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-52 Fax: +49-8142-66989-80 Email: h...@denx.de