Set mtd erasize using max erasesize from erase regions

Signed-off-by: Herve Codina <[email protected]>
---
 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 3d3d231..a56183d 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;
-- 
1.7.9.5


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to