openwrt-owl/target/linux/ar7/patches-2.6.37/920-ar7part.patch

56 lines
1.6 KiB
Diff

--- a/drivers/mtd/ar7part.c
+++ b/drivers/mtd/ar7part.c
@@ -27,12 +27,14 @@
#include <linux/mtd/partitions.h>
#include <linux/bootmem.h>
#include <linux/magic.h>
+#include <asm/mach-ar7/prom.h>
#define AR7_PARTS 4
#define ROOT_OFFSET 0xe0000
#define LOADER_MAGIC1 le32_to_cpu(0xfeedfa42)
#define LOADER_MAGIC2 le32_to_cpu(0xfeed1281)
+#define LOADER_MAGIC3 le32_to_cpu(0x434d4d4c)
#ifndef SQUASHFS_MAGIC
#define SQUASHFS_MAGIC 0x73717368
@@ -44,6 +46,10 @@ struct ar7_bin_rec {
unsigned int address;
};
+int create_titan_partitions(struct mtd_info *master,
+ struct mtd_partition **pparts,
+ unsigned long origin);
+
static int create_mtd_partitions(struct mtd_info *master,
struct mtd_partition **pparts,
unsigned long origin)
@@ -57,6 +63,16 @@ static int create_mtd_partitions(struct
int retries = 10;
struct mtd_partition *ar7_parts;
+ const char *prod_id ;
+ prod_id = prom_getenv("ProductID");
+ if(prod_id &&
+ (strcmp(prod_id, "CYWL")==0 ||
+ strcmp(prod_id, "CYWM")==0 ||
+ strcmp(prod_id, "CYLM")==0 ||
+ strcmp(prod_id, "CYLL")==0)){
+ return create_titan_partitions(master, pparts, origin);
+ }
+
ar7_parts = kzalloc(sizeof(*ar7_parts) * AR7_PARTS, GFP_KERNEL);
if (!ar7_parts)
return -ENOMEM;
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_MTD_REDBOOT_PARTS) += redbo
obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o
+obj-$(CONFIG_MTD_AR7_PARTS) += titanpart.o
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o