Skip to content

Commit

Permalink
env: ubi: add support of command env erase
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Patrice Chotard <[email protected]>
Reviewed-by: Heiko Schocher <[email protected]>
  • Loading branch information
patrickdelaunay authored and trini committed Jan 11, 2023
1 parent e64289e commit 91fc785
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions env/ubi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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),
};

0 comments on commit 91fc785

Please sign in to comment.