diff options
| author | Stefan Roese <sr@denx.de> | 2009-03-18 11:17:37 +0100 | 
|---|---|---|
| committer | Stefan Roese <sr@denx.de> | 2009-04-29 11:06:06 +0200 | 
| commit | f8e2b3107ee00f2782f8ebf47e3f09cda4e2353a (patch) | |
| tree | d3a0679e1dfc290fcb87485e1a25e0614d5fa887 | |
| parent | 4d9eab89b3b2c2ed432b14d355a56f274d8aac75 (diff) | |
| download | olio-uboot-2014.01-f8e2b3107ee00f2782f8ebf47e3f09cda4e2353a.tar.xz olio-uboot-2014.01-f8e2b3107ee00f2782f8ebf47e3f09cda4e2353a.zip | |
MTD: Change cfi-mtd to accept non-uniform sector sizes
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 <sr@denx.de>
| -rw-r--r-- | 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 9ac1c86cc..f03e4fbd7 100644 --- a/drivers/mtd/cfi_mtd.c +++ b/drivers/mtd/cfi_mtd.c @@ -142,22 +142,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; |