--- a/drivers/mtd/ar7part.c +++ b/drivers/mtd/ar7part.c @@ -27,12 +27,14 @@ #include #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 @@ -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