From d2d058365cf87e678f9b840c25aa84d76cdbd4e5 Mon Sep 17 00:00:00 2001 From: Herve Codina Date: Mon, 9 Jun 2014 17:14:08 +0200 Subject: [PATCH] mtd: fix mtd erasesize Set mtd erasize using max erasesize from erase regions Signed-off-by: Herve Codina Signed-off-by: Sascha Hauer --- drivers/mtd/nor/cfi_flash.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/nor/cfi_flash.c b/drivers/mtd/nor/cfi_flash.c index 3d3d23149..a8118cb43 100644 --- a/drivers/mtd/nor/cfi_flash.c +++ b/drivers/mtd/nor/cfi_flash.c @@ -949,6 +949,8 @@ static int cfi_mtd_erase(struct mtd_info *mtd, struct erase_info *instr) static void cfi_init_mtd(struct flash_info *info) { struct mtd_info *mtd = &info->mtd; + u_int32_t erasesize; + int i; mtd->read = cfi_mtd_read; mtd->write = cfi_mtd_write; @@ -956,7 +958,14 @@ static void cfi_init_mtd(struct flash_info *info) mtd->lock = cfi_mtd_lock; mtd->unlock = cfi_mtd_unlock; mtd->size = info->size; - mtd->erasesize = info->eraseregions[1].erasesize; /* FIXME */ + + erasesize = 0; + for (i=0; i < info->numeraseregions; i++) { + if (erasesize < info->eraseregions[i].erasesize) + erasesize = info->eraseregions[i].erasesize; + } + mtd->erasesize = erasesize; + mtd->writesize = 1; mtd->subpage_sft = 0; mtd->eraseregions = info->eraseregions;