From 91207ae10128bd35e281e65858f33163ec17b38c Mon Sep 17 00:00:00 2001 From: juhosg Date: Fri, 15 May 2009 19:16:47 +0000 Subject: [PATCH] [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 +++++++++++++++++++ ...-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 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 + #include + #include ++#include + #include + #include + #include +@@ -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);