flash: NOR: add jffs2 clean marker support

during NOR rootfs image flashing , each block in the
remaning space (rootfs_data) will be updated with jffs2 clean marker

Change-Id: I324ee3d61b427533473ebed6653ae8716b31600b
Signed-off-by: Rajkumar Ayyasamy <quic_arajkuma@quicinc.com>
This commit is contained in:
Rajkumar Ayyasamy 2023-10-04 20:02:38 +05:30
parent 881cdd8aa0
commit 2fd3774e61
2 changed files with 30 additions and 0 deletions

View file

@ -213,6 +213,12 @@ char * const argv[])
char* layout_linux[] = {"rootfs", "0:BOOTCONFIG", "0:BOOTCONFIG1"};
int len, i;
#endif
#ifdef CONFIG_IPQ_JFFS2_CLEANMARKER
int cleanmarker[3] = {0x20031985 , 0xc, 0xe41eb0b1}, j;
char runcmd[256];
bool write_cleanmarker = 0;
#endif
offset = 0;
part_size = 0;
layout = "default";
@ -401,6 +407,11 @@ char * const argv[])
offset = sfi->flash_block_size * start_block;
part_size = sfi->flash_block_size * size_block;
#ifdef CONFIG_IPQ_JFFS2_CLEANMARKER
if (!strncmp(part_name, "rootfs", sizeof("rootfs")))
write_cleanmarker = 1;
#endif
}
}
@ -434,6 +445,24 @@ char * const argv[])
ret = write_to_flash(flash_type, load_addr, offset, part_size,
file_size, layout);
#ifdef CONFIG_IPQ_JFFS2_CLEANMARKER
if (write_cleanmarker) {
file_size = ALIGN(file_size, sfi->flash_block_size);
printf("Adding clean markers in rootfs_data\n");
setenv("stdout", "nulldev");
for (j = 0; j < part_size - file_size;
j += sfi->flash_block_size) {
snprintf(runcmd, sizeof(runcmd),
"sf write 0x%x 0x%x 0x%x && ",
(uint32_t)cleanmarker, offset + file_size + j,
sizeof(cleanmarker));
ret = run_command(runcmd, 0);
if (ret != CMD_RET_SUCCESS)
break;
}
setenv("stdout", "serial");
}
#endif
} else
ret = fl_erase(flash_type, offset, part_size, layout);
exit:

View file

@ -457,6 +457,7 @@ extern loff_t board_env_size;
#define CONFIG_DISABLE_KERNEL64
#define CONFIG_CMD_DISABLE_EXECTZT
#define CONFIG_DISABLE_RAMDISK
#define CONFIG_IPQ_JFFS2_CLEANMARKER
#else
#define CONFIG_IPQ_ELF_AUTH
#define CONFIG_IPQ_FDT_FIXUP