From: Felix Fietkau <nbd@openwrt.org>
Date: Wed, 30 Aug 2006 05:12:31 +0000 (+0000)
Subject: update flash map driver for jffs2, squashfs will follow later
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=d61fa4ec2a04c636e451de6a2180d425fc5981fd;p=openwrt%2Fstaging%2Fansuel.git

update flash map driver for jffs2, squashfs will follow later

SVN-Revision: 4710
---

diff --git a/openwrt/target/linux/magicbox-2.6/patches/002-flash_map.patch b/openwrt/target/linux/magicbox-2.6/patches/002-flash_map.patch
index 5b45bcad55..8038230513 100644
--- a/openwrt/target/linux/magicbox-2.6/patches/002-flash_map.patch
+++ b/openwrt/target/linux/magicbox-2.6/patches/002-flash_map.patch
@@ -1,6 +1,6 @@
-diff -Nur linux-2.6.17/drivers/mtd/maps/Kconfig linux-2.6.17-owrt/drivers/mtd/maps/Kconfig
---- linux-2.6.17/drivers/mtd/maps/Kconfig	2006-06-18 03:49:35.000000000 +0200
-+++ linux-2.6.17-owrt/drivers/mtd/maps/Kconfig	2006-08-25 23:33:05.000000000 +0200
+diff -urN linux.old/drivers/mtd/maps/Kconfig linux.dev/drivers/mtd/maps/Kconfig
+--- linux.old/drivers/mtd/maps/Kconfig	2006-08-30 06:30:59.000000000 +0200
++++ linux.dev/drivers/mtd/maps/Kconfig	2006-08-30 06:11:51.000000000 +0200
 @@ -323,6 +323,15 @@
  	  Walnut board. If you have one of these boards and would like to
  	  use the flash chips on it, say 'Y'.
@@ -17,10 +17,10 @@ diff -Nur linux-2.6.17/drivers/mtd/maps/Kconfig linux-2.6.17-owrt/drivers/mtd/ma
  config MTD_EBONY
  	tristate "Flash devices mapped on IBM 440GP Ebony"
  	depends on MTD_JEDECPROBE && EBONY
-diff -Nur linux-2.6.17/drivers/mtd/maps/magicmap.c linux-2.6.17-owrt/drivers/mtd/maps/magicmap.c
---- linux-2.6.17/drivers/mtd/maps/magicmap.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.17-owrt/drivers/mtd/maps/magicmap.c	2006-08-25 23:33:05.000000000 +0200
-@@ -0,0 +1,102 @@
+diff -urN linux.old/drivers/mtd/maps/magicmap.c linux.dev/drivers/mtd/maps/magicmap.c
+--- linux.old/drivers/mtd/maps/magicmap.c	1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/drivers/mtd/maps/magicmap.c	2006-08-30 06:52:34.000000000 +0200
+@@ -0,0 +1,112 @@
 +/*
 + * magicmap.c: Copyleft 2005  Karol Lewandowski
 + *
@@ -57,21 +57,16 @@ diff -Nur linux-2.6.17/drivers/mtd/maps/magicmap.c linux-2.6.17-owrt/drivers/mtd
 +
 +static struct mtd_partition magic_partitions[] = {
 +	{
-+		.name =   "kernel",
++		.name =   "linux",
 +		.offset = 0x0,
-+		.size =   0x0e0000,
++		.size =   0x3c0000,
 +	},
 +	{
-+		.name =   "ramdisk",
-+		.offset = 0x0e0000,
++		.name =   "rootfs",
++		.offset = 0x100000,
 +		.size =   0x2c0000,
 +	},
 +	{
-+		.name =   "persistent",
-+		.offset = 0x3a0000,
-+		.size =   0x020000,
-+	},
-+	{
 +		.name =   "bootloader",
 +		.offset = 0x3c0000,
 +		.size =   0x040000,
@@ -81,6 +76,8 @@ diff -Nur linux-2.6.17/drivers/mtd/maps/magicmap.c linux-2.6.17-owrt/drivers/mtd
 +
 +int __init init_magic(void)
 +{
++	u32 size, len;
++	
 +	magic_map.virt =
 +		(void __iomem *)ioremap(magic_map.phys, magic_map.size);
 +
@@ -94,6 +91,19 @@ diff -Nur linux-2.6.17/drivers/mtd/maps/magicmap.c linux-2.6.17-owrt/drivers/mtd
 +	flash = do_map_probe("cfi_probe", &magic_map);
 +	if (flash) {
 +		flash->owner = THIS_MODULE;
++		if (MTD_READ(flash, 12, sizeof(u32), &len, (char *) &size) ||
++			len != 4)
++			return -ENXIO;
++		if ((size > 0) && (size < 0x400000)) {
++			/* skip to next erase block */
++			if (size & (flash->erasesize - 1)) {
++				size |= (flash->erasesize - 1);
++				size += 1;
++			}
++			magic_partitions[1].offset = size;
++			magic_partitions[1].size = magic_partitions[2].offset - size;
++		}
++		
 +		add_mtd_partitions(flash, magic_partitions,
 +					ARRAY_SIZE(magic_partitions));
 +	} else {
@@ -123,9 +133,9 @@ diff -Nur linux-2.6.17/drivers/mtd/maps/magicmap.c linux-2.6.17-owrt/drivers/mtd
 +MODULE_LICENSE("GPL");
 +MODULE_AUTHOR("Karol Lewandowski");
 +MODULE_DESCRIPTION("MTD map and partitions for IBM 405EP MagicBox boards");
-diff -Nur linux-2.6.17/drivers/mtd/maps/Makefile linux-2.6.17-owrt/drivers/mtd/maps/Makefile
---- linux-2.6.17/drivers/mtd/maps/Makefile	2006-06-18 03:49:35.000000000 +0200
-+++ linux-2.6.17-owrt/drivers/mtd/maps/Makefile	2006-08-25 23:33:05.000000000 +0200
+diff -urN linux.old/drivers/mtd/maps/Makefile linux.dev/drivers/mtd/maps/Makefile
+--- linux.old/drivers/mtd/maps/Makefile	2006-08-30 06:30:59.000000000 +0200
++++ linux.dev/drivers/mtd/maps/Makefile	2006-08-30 06:11:51.000000000 +0200
 @@ -58,6 +58,7 @@
  obj-$(CONFIG_MTD_BEECH)		+= beech-mtd.o
  obj-$(CONFIG_MTD_ARCTIC)	+= arctic-mtd.o
@@ -134,4 +144,3 @@ diff -Nur linux-2.6.17/drivers/mtd/maps/Makefile linux-2.6.17-owrt/drivers/mtd/m
  obj-$(CONFIG_MTD_H720X)		+= h720x-flash.o
  obj-$(CONFIG_MTD_SBC8240)	+= sbc8240.o
  obj-$(CONFIG_MTD_NOR_TOTO)	+= omap-toto-flash.o
-