[gemini] add static mtd map for the WBD-111
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 15 May 2009 19:16:47 +0000 (19:16 +0000)
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 15 May 2009 19:16:47 +0000 (19:16 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15874 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/gemini/patches/003-wbd111-static-flash-map.patch [new file with mode: 0644]
target/linux/gemini/patches/100-mtd-physmap-try-static-partitions-first.patch [new file with mode: 0644]

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 (file)
index 0000000..9a2b2bd
--- /dev/null
@@ -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 (file)
index 0000000..887dab0
--- /dev/null
@@ -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);