57 lines
1.6 KiB
Diff
57 lines
1.6 KiB
Diff
--- a/drivers/mtd/ar7part.c
|
|
+++ b/drivers/mtd/ar7part.c
|
|
@@ -29,11 +29,14 @@
|
|
#include <linux/magic.h>
|
|
#include <linux/module.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
|
|
@@ -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;
|