112 lines
3.3 KiB
Diff
112 lines
3.3 KiB
Diff
diff -Nurb linux-2.6.17/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.17-patched/drivers/mtd/chips/cfi_cmdset_0001.c
|
|
--- linux-2.6.17/drivers/mtd/chips/cfi_cmdset_0001.c 2006-06-17 18:49:35.000000000 -0700
|
|
+++ linux-2.6.17-patched/drivers/mtd/chips/cfi_cmdset_0001.c 2006-09-25 11:27:06.000000000 -0700
|
|
@@ -40,7 +40,7 @@
|
|
/* #define CMDSET0001_DISABLE_WRITE_SUSPEND */
|
|
|
|
// debugging, turns off buffer write mode if set to 1
|
|
-#define FORCE_WORD_WRITE 0
|
|
+#define FORCE_WORD_WRITE 1
|
|
|
|
#define MANUFACTURER_INTEL 0x0089
|
|
#define I82802AB 0x00ad
|
|
diff -Nurb linux-2.6.17/drivers/mtd/maps/lubbock-flash.c linux-2.6.17-patched/drivers/mtd/maps/lubbock-flash.c
|
|
--- linux-2.6.17/drivers/mtd/maps/lubbock-flash.c 2006-06-17 18:49:35.000000000 -0700
|
|
+++ linux-2.6.17-patched/drivers/mtd/maps/lubbock-flash.c 2006-09-25 10:50:08.000000000 -0700
|
|
@@ -26,6 +26,7 @@
|
|
#include <asm/hardware.h>
|
|
#include <asm/arch/pxa-regs.h>
|
|
#include <asm/arch/lubbock.h>
|
|
+#include <linux/mtd/concat.h>
|
|
|
|
|
|
#define ROM_ADDR 0x00000000
|
|
@@ -48,24 +49,27 @@
|
|
.inval_cache = lubbock_map_inval_cache,
|
|
} };
|
|
|
|
-static struct mtd_partition lubbock_partitions[] = {
|
|
+static struct mtd_partition lubbock_partitions[] =
|
|
+{
|
|
{
|
|
- .name = "Bootloader",
|
|
- .size = 0x00040000,
|
|
- .offset = 0,
|
|
- .mask_flags = MTD_WRITEABLE /* force read-only */
|
|
- },{
|
|
- .name = "Kernel",
|
|
- .size = 0x00100000,
|
|
- .offset = 0x00040000,
|
|
- },{
|
|
- .name = "Filesystem",
|
|
- .size = MTDPART_SIZ_FULL,
|
|
- .offset = 0x00140000
|
|
- }
|
|
+ .name = "root",
|
|
+ .offset = 0x00410000
|
|
+ },
|
|
+ {
|
|
+ .name = "kernel",
|
|
+ .size = 0x00150000,
|
|
+ .offset = 0x000B0000
|
|
+ },
|
|
+ {
|
|
+ .name = "bootloader",
|
|
+ .size = 0x000B0000,
|
|
+ .offset = 0x00000000
|
|
+ },
|
|
};
|
|
|
|
+
|
|
static struct mtd_info *mymtds[2];
|
|
+static struct mtd_info *merged_mtd;
|
|
static struct mtd_partition *parsed_parts[2];
|
|
static int nr_parsed_parts[2];
|
|
|
|
@@ -83,8 +87,8 @@
|
|
printk(KERN_NOTICE "Lubbock configured to boot from %s (bank %d)\n",
|
|
flashboot?"Flash":"ROM", flashboot);
|
|
|
|
- lubbock_maps[flashboot^1].name = "Lubbock Application Flash";
|
|
- lubbock_maps[flashboot].name = "Lubbock Boot ROM";
|
|
+ lubbock_maps[flashboot^1].name = "Flash-1";
|
|
+ lubbock_maps[flashboot].name = "Flash-0";
|
|
|
|
for (i = 0; i < 2; i++) {
|
|
lubbock_maps[i].virt = ioremap(lubbock_maps[i].phys, WINDOW_SIZE);
|
|
@@ -125,25 +129,23 @@
|
|
if (!mymtds[0] && !mymtds[1])
|
|
return ret;
|
|
|
|
- for (i = 0; i < 2; i++) {
|
|
- if (!mymtds[i]) {
|
|
- printk(KERN_WARNING "%s is absent. Skipping\n", lubbock_maps[i].name);
|
|
- } else if (nr_parsed_parts[i]) {
|
|
- add_mtd_partitions(mymtds[i], parsed_parts[i], nr_parsed_parts[i]);
|
|
- } else if (!i) {
|
|
- printk("Using static partitions on %s\n", lubbock_maps[i].name);
|
|
- add_mtd_partitions(mymtds[i], lubbock_partitions, ARRAY_SIZE(lubbock_partitions));
|
|
- } else {
|
|
- printk("Registering %s as whole device\n", lubbock_maps[i].name);
|
|
- add_mtd_device(mymtds[i]);
|
|
- }
|
|
- }
|
|
+ if (mymtds[0] && mymtds[1]) {
|
|
+ merged_mtd = mtd_concat_create(mymtds, 2, "Concated Flash #1 and #2");
|
|
+ if(merged_mtd)
|
|
+ add_mtd_partitions(merged_mtd, lubbock_partitions, ARRAY_SIZE(lubbock_partitions));
|
|
+ else
|
|
+ printk("YoKu: Failed to concate\n");
|
|
return 0;
|
|
+ }
|
|
}
|
|
|
|
static void __exit cleanup_lubbock(void)
|
|
{
|
|
int i;
|
|
+
|
|
+ del_mtd_partitions(merged_mtd);
|
|
+ map_destroy(merged_mtd);
|
|
+
|
|
for (i = 0; i < 2; i++) {
|