Commit 5cea5dad authored by Artem B. Bityutskiy's avatar Artem B. Bityutskiy Committed by Thomas Gleixner

[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 <pm-mtd@mw-itcon.de>
Acked-by: default avatarArtem B. Bityutskiy <dedekind@infradead.org>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent daba5cc4
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* *
* This code is GPL * 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 <gleixner@autronix.de> * 02-21-2002 Thomas Gleixner <gleixner@autronix.de>
* added support for read_oob, write_oob * added support for read_oob, write_oob
...@@ -465,9 +465,10 @@ int add_mtd_partitions(struct mtd_info *master, ...@@ -465,9 +465,10 @@ int add_mtd_partitions(struct mtd_info *master,
if (slave->offset == MTDPART_OFS_APPEND) if (slave->offset == MTDPART_OFS_APPEND)
slave->offset = cur_offset; slave->offset = cur_offset;
if (slave->offset == MTDPART_OFS_NXTBLK) { if (slave->offset == MTDPART_OFS_NXTBLK) {
u_int32_t emask = master->erasesize-1; slave->offset = cur_offset;
slave->offset = (cur_offset + emask) & ~emask; if ((cur_offset % master->erasesize) != 0) {
if (slave->offset != cur_offset) { /* Round up to next erasesize */
slave->offset = ((cur_offset / master->erasesize) + 1) * master->erasesize;
printk(KERN_NOTICE "Moving partition %d: " printk(KERN_NOTICE "Moving partition %d: "
"0x%08x -> 0x%08x\n", i, "0x%08x -> 0x%08x\n", i,
cur_offset, slave->offset); cur_offset, slave->offset);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment