diff options
author | Herve Codina <Herve.CODINA@celad.com> | 2014-06-09 17:14:08 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-06-10 08:38:39 +0200 |
commit | d2d058365cf87e678f9b840c25aa84d76cdbd4e5 (patch) | |
tree | 09af9cd06b037e2e1cb42d77ac5a3c610c556dcf | |
parent | 4d032fd6fa5ca8fe14ea811f8fbee70e5ebcd927 (diff) | |
download | barebox-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.c | 11 |
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; |