summaryrefslogtreecommitdiffstats
path: root/target/linux/ar7/patches-2.6.37/920-ar7part.patch
blob: 84958551be9e8c561021211760572288b2e4e947 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
--- 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