| 1 | --- a/drivers/mtd/ar7part.c |
| 2 | +++ b/drivers/mtd/ar7part.c |
| 3 | @@ -29,11 +29,14 @@ |
| 4 | #include <linux/magic.h> |
| 5 | #include <linux/module.h> |
| 6 | |
| 7 | +#include <asm/mach-ar7/prom.h> |
| 8 | + |
| 9 | #define AR7_PARTS 4 |
| 10 | #define ROOT_OFFSET 0xe0000 |
| 11 | |
| 12 | #define LOADER_MAGIC1 le32_to_cpu(0xfeedfa42) |
| 13 | #define LOADER_MAGIC2 le32_to_cpu(0xfeed1281) |
| 14 | +#define LOADER_MAGIC3 le32_to_cpu(0x434d4d4c) |
| 15 | |
| 16 | #ifndef SQUASHFS_MAGIC |
| 17 | #define SQUASHFS_MAGIC 0x73717368 |
| 18 | @@ -45,6 +48,10 @@ struct ar7_bin_rec { |
| 19 | unsigned int address; |
| 20 | }; |
| 21 | |
| 22 | +int create_titan_partitions(struct mtd_info *master, |
| 23 | + struct mtd_partition **pparts, |
| 24 | + struct mtd_part_parser_data *data); |
| 25 | + |
| 26 | static int create_mtd_partitions(struct mtd_info *master, |
| 27 | struct mtd_partition **pparts, |
| 28 | struct mtd_part_parser_data *data) |
| 29 | @@ -58,6 +65,16 @@ static int create_mtd_partitions(struct |
| 30 | int retries = 10; |
| 31 | struct mtd_partition *ar7_parts; |
| 32 | |
| 33 | + const char *prod_id ; |
| 34 | + prod_id = prom_getenv("ProductID"); |
| 35 | + if(prod_id && |
| 36 | + (strcmp(prod_id, "CYWL")==0 || |
| 37 | + strcmp(prod_id, "CYWM")==0 || |
| 38 | + strcmp(prod_id, "CYLM")==0 || |
| 39 | + strcmp(prod_id, "CYLL")==0)){ |
| 40 | + return create_titan_partitions(master, pparts, data); |
| 41 | + } |
| 42 | + |
| 43 | ar7_parts = kzalloc(sizeof(*ar7_parts) * AR7_PARTS, GFP_KERNEL); |
| 44 | if (!ar7_parts) |
| 45 | return -ENOMEM; |
| 46 | --- a/drivers/mtd/titanpart.c |
| 47 | +++ b/drivers/mtd/titanpart.c |
| 48 | @@ -149,7 +149,7 @@ static void titan_add_partition(char * e |
| 49 | } |
| 50 | int create_titan_partitions(struct mtd_info *master, |
| 51 | struct mtd_partition **pparts, |
| 52 | - unsigned long origin) |
| 53 | + struct mtd_part_parser_data *data) |
| 54 | { |
| 55 | struct nsp_img_hdr_head hdr; |
| 56 | struct nsp_img_hdr_section_info sect_info; |
| 57 | |