diff options
Diffstat (limited to 'libflash/libffs.c')
-rw-r--r-- | libflash/libffs.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libflash/libffs.c b/libflash/libffs.c index c03c56a..f4aafd8 100644 --- a/libflash/libffs.c +++ b/libflash/libffs.c @@ -73,12 +73,12 @@ static int ffs_check_convert_header(struct ffs_hdr *dst, struct ffs_hdr *src) } int ffs_init(uint32_t offset, uint32_t max_size, struct blocklevel_device *bl, - struct ffs_handle **ffs) + struct ffs_handle **ffs, int mark_ecc) { struct ffs_hdr hdr; struct ffs_handle *f; uint32_t total_size; - int rc; + int rc, i; if (!ffs || !bl) return FLASH_ERR_PARM_ERROR; @@ -140,6 +140,16 @@ int ffs_init(uint32_t offset, uint32_t max_size, struct blocklevel_device *bl, goto out; } + if (mark_ecc) { + uint32_t start, total_size; + bool ecc; + for (i = 0; i < f->hdr.entry_count; i++) { + ffs_part_info(f, i, NULL, &start, &total_size, NULL, &ecc); + if (ecc) + blocklevel_ecc_protect(bl, start, total_size); + } + } + out: if (rc == 0) *ffs = f; |