wifipineapple-openwrt/target/linux/ar7/patches-3.3/920-ar7part.patch

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;