From 91207ae10128bd35e281e65858f33163ec17b38c Mon Sep 17 00:00:00 2001
From: juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Fri, 15 May 2009 19:16:47 +0000
Subject: [gemini] add static mtd map for the WBD-111

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15874 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../patches/003-wbd111-static-flash-map.patch      | 62 ++++++++++++++++++++++
 ...0-mtd-physmap-try-static-partitions-first.patch | 30 +++++++++++
 2 files changed, 92 insertions(+)
 create mode 100644 target/linux/gemini/patches/003-wbd111-static-flash-map.patch
 create mode 100644 target/linux/gemini/patches/100-mtd-physmap-try-static-partitions-first.patch

(limited to 'target/linux/gemini/patches')

diff --git a/target/linux/gemini/patches/003-wbd111-static-flash-map.patch b/target/linux/gemini/patches/003-wbd111-static-flash-map.patch
new file mode 100644
index 000000000..9a2b2bd29
--- /dev/null
+++ b/target/linux/gemini/patches/003-wbd111-static-flash-map.patch
@@ -0,0 +1,62 @@
+--- a/arch/arm/mach-gemini/board-wbd111.c
++++ b/arch/arm/mach-gemini/board-wbd111.c
+@@ -15,6 +15,7 @@
+ #include <linux/input.h>
+ #include <linux/gpio_keys.h>
+ #include <linux/mdio-gpio.h>
++#include <linux/mtd/partitions.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/time.h>
+@@ -101,11 +102,50 @@ static struct sys_timer wbd111_timer = {
+ 	.init	= gemini_timer_init,
+ };
+ 
++#ifdef CONFIG_MTD_PARTITIONS
++static struct mtd_partition wbd111_partitions[] = {
++	{
++		.name		= "RedBoot",
++		.offset		= 0,
++		.size		= 0x020000,
++		.mask_flags	= MTD_WRITEABLE,
++	} , {
++		.name		= "kernel",
++		.offset		= 0x020000,
++		.size		= 0x100000,
++	} , {
++		.name		= "rootfs",
++		.offset		= 0x120000,
++		.size		= 0x6a0000,
++	} , {
++		.name		= "VCTL",
++		.offset		= 0x7c0000,
++		.size		= 0x010000,
++		.mask_flags	= MTD_WRITEABLE,
++	} , {
++		.name		= "cfg",
++		.offset		= 0x7d0000,
++		.size		= 0x010000,
++		.mask_flags	= MTD_WRITEABLE,
++	} , {
++		.name		= "FIS",
++		.offset		= 0x7e0000,
++		.size		= 0x010000,
++		.mask_flags	= MTD_WRITEABLE,
++	}
++};
++#define wbd111_num_partitions	ARRAY_SIZE(wbd111_partitions)
++#else
++#define wbd111_partitions	NULL
++#define wbd111_num_partitions	0
++#endif /* CONFIG_MTD_PARTITIONS */
++
+ static void __init wbd111_init(void)
+ {
+ 	gemini_gpio_init();
+ 	platform_register_uart();
+-	platform_register_pflash(SZ_8M, NULL, 0);
++	platform_register_pflash(SZ_8M, wbd111_partitions,
++				 wbd111_num_partitions);
+ 	platform_device_register(&wbd111_leds_device);
+ 	platform_device_register(&wbd111_keys_device);
+ 	platform_device_register(&wbd111_phy_device);
diff --git a/target/linux/gemini/patches/100-mtd-physmap-try-static-partitions-first.patch b/target/linux/gemini/patches/100-mtd-physmap-try-static-partitions-first.patch
new file mode 100644
index 000000000..887dab0b7
--- /dev/null
+++ b/target/linux/gemini/patches/100-mtd-physmap-try-static-partitions-first.patch
@@ -0,0 +1,30 @@
+--- a/drivers/mtd/maps/physmap.c
++++ b/drivers/mtd/maps/physmap.c
+@@ -170,6 +170,13 @@ static int physmap_flash_probe(struct pl
+ 		goto err_out;
+ 
+ #ifdef CONFIG_MTD_PARTITIONS
++	if (physmap_data->nr_parts) {
++		printk(KERN_NOTICE "Using physmap partition information\n");
++		add_mtd_partitions(info->cmtd, physmap_data->parts,
++				   physmap_data->nr_parts);
++		return 0;
++	}
++
+ 	err = parse_mtd_partitions(info->cmtd, part_probe_types,
+ 				&info->parts, 0);
+ 	if (err > 0) {
+@@ -177,13 +184,6 @@ static int physmap_flash_probe(struct pl
+ 		info->nr_parts = err;
+ 		return 0;
+ 	}
+-
+-	if (physmap_data->nr_parts) {
+-		printk(KERN_NOTICE "Using physmap partition information\n");
+-		add_mtd_partitions(info->cmtd, physmap_data->parts,
+-				   physmap_data->nr_parts);
+-		return 0;
+-	}
+ #endif
+ 
+ 	add_mtd_device(info->cmtd);
-- 
cgit v1.2.3