Skip to contentSkip to conversation

fix for mtd partitions for erase_size != 2^X

PATCH New Peter Menzebach 1 participant 1 message Sep 23, 2005 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix for mtd partitions for erase_size != 2^X

Here a trivial patch,
which allows correct creation of mtd partitions, which have erase sizes which are not a power of 2.

Best regards
Peter

Sorry, I didn't succeed to get the patch accepted by the mailing list as attachment.

Signature · 19 lines
Peter Menzebach
Menzebach und Wolff IT-Consulting GbR
Phone +49 751 355 387 1

--- drivers/mtd/mtdpart.c.orig	2005-09-23 09:28:07.000000000 +0200
+++ drivers/mtd/mtdpart.c	2005-09-23 09:29:37.000000000 +0200
@@ -465,9 +465,9 @@
 		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) {
+				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);