From 508d2dcbfeac2bb3ee228aaca8e2459b08579fe8 Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Fri, 25 Dec 2020 11:37:46 +0800 Subject: [PATCH] soc: rockchip: mtd_vendor_storage: Erase block in initial progress Change-Id: Ibbff54cd7a14d5f37ec23a4d52ab557c820caec3 Signed-off-by: Jon Lin --- drivers/soc/rockchip/mtd_vendor_storage.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/soc/rockchip/mtd_vendor_storage.c b/drivers/soc/rockchip/mtd_vendor_storage.c index dd8ea3abe097..1cce16889d93 100644 --- a/drivers/soc/rockchip/mtd_vendor_storage.c +++ b/drivers/soc/rockchip/mtd_vendor_storage.c @@ -117,6 +117,7 @@ static int mtd_vendor_storage_init(void) { int err, offset; size_t bytes_read; + struct erase_info ei; mtd = get_mtd_device_nm(vendor_mtd_name); if (IS_ERR(mtd)) @@ -170,6 +171,14 @@ static int mtd_vendor_storage_init(void) g_vendor->version = 1; g_vendor->tag = MTD_VENDOR_TAG; g_vendor->free_size = sizeof(g_vendor->data); + for (offset = 0; offset < mtd->size; offset += mtd->erasesize) { + if (!mtd_block_isbad(mtd, offset)) { + memset(&ei, 0, sizeof(struct erase_info)); + ei.addr = nand_info.blk_offset + offset; + ei.len = mtd->erasesize; + mtd_erase(mtd, &ei); + } + } } return 0;