summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerve Codina <Herve.CODINA@celad.com>2014-06-09 17:14:08 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-06-10 08:38:39 +0200
commitd2d058365cf87e678f9b840c25aa84d76cdbd4e5 (patch)
tree09af9cd06b037e2e1cb42d77ac5a3c610c556dcf
parent4d032fd6fa5ca8fe14ea811f8fbee70e5ebcd927 (diff)
downloadbarebox-d2d058365cf87e678f9b840c25aa84d76cdbd4e5.tar.gz
barebox-d2d058365cf87e678f9b840c25aa84d76cdbd4e5.tar.xz
mtd: fix mtd erasesize
Set mtd erasize using max erasesize from erase regions Signed-off-by: Herve Codina <Herve.CODINA@celad.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/mtd/nor/cfi_flash.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/mtd/nor/cfi_flash.c b/drivers/mtd/nor/cfi_flash.c
index 3d3d231496..a8118cb434 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;