summaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/files/arch/mips
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ar71xx/files/arch/mips')
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c81
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h1
2 files changed, 75 insertions, 7 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c
index 7b1ee90ae..f0b781955 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c
@@ -96,14 +96,64 @@ static struct mtd_partition wndr3700_partitions[] = {
.mask_flags = MTD_WRITEABLE,
}
};
-#endif /* CONFIG_MTD_PARTITIONS */
-static struct flash_platform_data wndr3700_flash_data = {
-#ifdef CONFIG_MTD_PARTITIONS
- .parts = wndr3700_partitions,
- .nr_parts = ARRAY_SIZE(wndr3700_partitions),
-#endif
+static struct mtd_partition wndr3700v2_partitions[] = {
+ {
+ .name = "uboot",
+ .offset = 0,
+ .size = 0x050000,
+ .mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "env",
+ .offset = 0x050000,
+ .size = 0x020000,
+ .mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "rootfs",
+ .offset = 0x070000,
+ .size = 0xe40000,
+ }, {
+ .name = "config",
+ .offset = 0xeb0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "config_bak",
+ .offset = 0xec0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "pot",
+ .offset = 0xed0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "traffic_meter",
+ .offset = 0xee0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "language",
+ .offset = 0xef0000,
+ .size = 0x100000,
+ .mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "caldata",
+ .offset = 0xff0000,
+ .size = 0x010000,
+ .mask_flags = MTD_WRITEABLE,
+ }
};
+#define wndr3700_num_partitions ARRAY_SIZE(wndr3700_partitions)
+#define wndr3700v2_num_partitions ARRAY_SIZE(wndr3700v2_partitions)
+#else
+#define wndr3700_partitions NULL
+#define wndr3700_num_partitions 0
+#define wndr3700v2_partitions NULL
+#define wndr3700v2_num_partitions 0
+#endif /* CONFIG_MTD_PARTITIONS */
+
+static struct flash_platform_data wndr3700_flash_data;
static struct gpio_led wndr3700_leds_gpio[] __initdata = {
{
@@ -167,7 +217,7 @@ static struct platform_device wndr3700_rtl8366s_device = {
}
};
-static void __init wndr3700_setup(void)
+static void __init wndr3700_common_setup(void)
{
u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
@@ -218,5 +268,22 @@ static void __init wndr3700_setup(void)
art + WNDR3700_WMAC1_MAC_OFFSET);
}
+static void __init wndr3700_setup(void)
+{
+ wndr3700_flash_data.parts = wndr3700_partitions,
+ wndr3700_flash_data.nr_parts = wndr3700_num_partitions,
+ wndr3700_common_setup();
+}
+
MIPS_MACHINE(AR71XX_MACH_WNDR3700, "WNDR3700", "NETGEAR WNDR3700",
wndr3700_setup);
+
+static void __init wndr3700v2_setup(void)
+{
+ wndr3700_flash_data.parts = wndr3700v2_partitions,
+ wndr3700_flash_data.nr_parts = wndr3700v2_num_partitions,
+ wndr3700_common_setup();
+}
+
+MIPS_MACHINE(AR71XX_MACH_WNDR3700V2, "WNDR3700v2", "NETGEAR WNDR3700v2",
+ wndr3700v2_setup);
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h
index 2a233d79f..40f1b0902 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h
@@ -54,6 +54,7 @@ enum ar71xx_mach_type {
AR71XX_MACH_UBNT_ROCKET_M, /* Ubiquiti Rocket M */
AR71XX_MACH_UBNT_NANO_M, /* Ubiquiti NanoStation M */
AR71XX_MACH_WNDR3700, /* NETGEAR WNDR3700 */
+ AR71XX_MACH_WNDR3700V2, /* NETGEAR WNDR3700v2 */
AR71XX_MACH_WNR2000, /* NETGEAR WNR2000 */
AR71XX_MACH_WP543, /* Compex WP543 */
AR71XX_MACH_WRT160NL, /* Linksys WRT160NL */