From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Roese Date: Wed, 18 Mar 2009 11:17:37 +0100 Subject: [U-Boot] [PATCH] MTD: Change cfi-mtd to accept non-uniform sector sizes Message-ID: <1237371457-27193-1-git-send-email-sr@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de With this patch non-uniform NOR FLASH chips (chips with multiple erase regions) can be exported via the cfi-mtd layer and therefor used by UBI. We select the largest sector size as erasesize. The cfi driver will make sure that the smaller sectors are handled correctly. Signed-off-by: Stefan Roese --- drivers/mtd/cfi_mtd.c | 18 ++++-------------- 1 files changed, 4 insertions(+), 14 deletions(-) diff --git a/drivers/mtd/cfi_mtd.c b/drivers/mtd/cfi_mtd.c index cf82d92..1000f1b 100644 --- a/drivers/mtd/cfi_mtd.c +++ b/drivers/mtd/cfi_mtd.c @@ -141,22 +141,12 @@ static int cfi_mtd_set_erasesize(struct mtd_info *mtd, flash_info_t *fi) int sect_size = 0; int sect; + /* + * Select the largest sector size as erasesize (e.g. for UBI) + */ for (sect = 0; sect < fi->sector_count; sect++) { - if (!sect_size) { + if (flash_sector_size(fi, sect) > sect_size) sect_size = flash_sector_size(fi, sect); - continue; - } - - if (sect_size != flash_sector_size(fi, sect)) { - sect_size = 0; - break; - } - } - - if (!sect_size) { - puts("cfi-mtd: devices with multiple sector sizes are" - "not supported\n"); - return -EINVAL; } mtd->erasesize = sect_size; -- 1.6.2.1