--- a/drivers/mtd/ar7part.c +++ b/drivers/mtd/ar7part.c @@ -29,11 +29,14 @@ #include #include +#include + #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 @@ -45,6 +48,10 @@ struct ar7_bin_rec { unsigned int address; }; +int create_titan_partitions(struct mtd_info *master, + struct mtd_partition **pparts, + struct mtd_part_parser_data *data); + static int create_mtd_partitions(struct mtd_info *master, struct mtd_partition **pparts, struct mtd_part_parser_data *data) @@ -58,6 +65,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, data); + } + ar7_parts = kzalloc(sizeof(*ar7_parts) * AR7_PARTS, GFP_KERNEL); if (!ar7_parts) return -ENOMEM; --- a/drivers/mtd/titanpart.c +++ b/drivers/mtd/titanpart.c @@ -149,7 +149,7 @@ static void titan_add_partition(char * e } int create_titan_partitions(struct mtd_info *master, struct mtd_partition **pparts, - unsigned long origin) + struct mtd_part_parser_data *data) { struct nsp_img_hdr_head hdr; struct nsp_img_hdr_section_info sect_info;