From: Artem B. Bityutskiy Date: Fri, 30 Sep 2005 14:49:12 +0000 (+0100) Subject: [MTD] mtdpart.c: Allow eraseblock size != power of 2 X-Git-Tag: v2.6.16.28-rc1~3195^2~34 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=5cea5dadfebdede8045fca118328860058129eb2;p=karo-tx-linux.git [MTD] mtdpart.c: Allow eraseblock size != power of 2 Don't assume eraseblock size is power of 2. Dataflash can have aligned eraseblock size. From: Peter Menzebach Acked-by: Artem B. Bityutskiy Signed-off-by: Thomas Gleixner --- diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index b92e6bfffaf2..e9168b5cd518 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c @@ -5,7 +5,7 @@ * * This code is GPL * - * $Id: mtdpart.c,v 1.53 2005/02/08 17:11:13 nico Exp $ + * $Id: mtdpart.c,v 1.54 2005/09/30 14:49:08 dedekind Exp $ * * 02-21-2002 Thomas Gleixner * added support for read_oob, write_oob @@ -465,9 +465,10 @@ int add_mtd_partitions(struct mtd_info *master, if (slave->offset == MTDPART_OFS_APPEND) slave->offset = cur_offset; if (slave->offset == MTDPART_OFS_NXTBLK) { - u_int32_t emask = master->erasesize-1; - slave->offset = (cur_offset + emask) & ~emask; - if (slave->offset != cur_offset) { + slave->offset = cur_offset; + if ((cur_offset % master->erasesize) != 0) { + /* Round up to next erasesize */ + slave->offset = ((cur_offset / master->erasesize) + 1) * master->erasesize; printk(KERN_NOTICE "Moving partition %d: " "0x%08x -> 0x%08x\n", i, cur_offset, slave->offset);