mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
env: ubi: add support of command env erase
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.delaunay@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Reviewed-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
e64289e1ec
commit
91fc785834
1 changed files with 40 additions and 0 deletions
40
env/ubi.c
vendored
40
env/ubi.c
vendored
|
@ -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),
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue