summaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx
diff options
context:
space:
mode:
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-01-26 20:35:42 +0000
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-01-26 20:35:42 +0000
commit9e07cb05fa87936116d72d4fafe2a27d84e65f37 (patch)
treea84f71b2d781bde43062f55eb941c36cd461b02f /target/linux/ar71xx
parent0dbc0d2a8dc1c28cc08238c7ad5a0202ebd87d66 (diff)
ar71xx: add support for the WNDR3700v2 board
Based on a patch by Mark Mentovai <mark@moxienet.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25118 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx')
-rw-r--r--target/linux/ar71xx/base-files/etc/defconfig/wndr3700v2/network69
-rwxr-xr-xtarget/linux/ar71xx/base-files/etc/diag.sh2
-rwxr-xr-xtarget/linux/ar71xx/base-files/etc/uci-defaults/wndr37002
-rwxr-xr-xtarget/linux/ar71xx/base-files/lib/ar71xx.sh3
-rwxr-xr-xtarget/linux/ar71xx/base-files/lib/upgrade/platform.sh10
-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
7 files changed, 158 insertions, 10 deletions
diff --git a/target/linux/ar71xx/base-files/etc/defconfig/wndr3700v2/network b/target/linux/ar71xx/base-files/etc/defconfig/wndr3700v2/network
new file mode 100644
index 000000000..d05fdf342
--- /dev/null
+++ b/target/linux/ar71xx/base-files/etc/defconfig/wndr3700v2/network
@@ -0,0 +1,69 @@
+config interface loopback
+ option ifname lo
+ option proto static
+ option ipaddr 127.0.0.1
+ option netmask 255.0.0.0
+
+config interface lan
+ option ifname eth0.1
+ option type bridge
+ option proto static
+ option ipaddr 192.168.1.1
+ option netmask 255.255.255.0
+
+config interface wan
+ option ifname eth1
+ option proto dhcp
+
+config switch
+ option name rtl8366s
+ option reset 1
+ option enable_vlan 1
+ # Blinkrate: 0=43ms; 1=84ms; 2=120ms; 3=170ms; 4=340ms; 5=670ms
+ option blinkrate 2
+
+config switch_vlan
+ option device rtl8366s
+ option vlan 1
+ option ports "0 1 2 3 5t"
+
+config switch_port
+ # Port 1 controls the GREEN configuration of LEDs for
+ # the switch and the section does not correspond to a real
+ # switch port.
+ #
+ # 0=LED off; 1=Collision/FDX; 2=Link/activity; 3=1000 Mb/s;
+ # 4=100 Mb/s; 5=10 Mb/s; 6=1000 Mb/s+activity; 7=100 Mb/s+activity;
+ # 8=10 Mb/s+activity; 9=10/100 Mb/s+activity; 10: Fiber;
+ # 11: Fault; 12: Link/activity(tx); 13: Link/activity(rx);
+ # 14: Link (master); 15: separate register
+
+ option device rtl8366s
+ option port 1
+ option led 6
+
+config switch_port
+ # Port 2 controls the ORANGE configuration of LEDs for
+ # the switch and the section does not correspond to a real
+ # switch port.
+ #
+ # See the key above for switch port 1 for the meaning of the
+ # 'led' setting below.
+
+ option device rtl8366s
+ option port 2
+ option led 9
+
+config switch_port
+ # Port 5 controls the configuration of the WAN LED and the
+ # section does not correspond to a real switch port.
+ #
+ # To toggle the use of green or orange LEDs for the WAN port,
+ # see the LED setting for wndr3700:green:wan in /etc/config/system.
+ #
+ # See the key above for switch port 1 for the meaning of the
+ # 'led' setting below.
+
+ option device rtl8366s
+ option port 5
+ option led 2
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 23370446a..dd47cf33b 100755
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -105,7 +105,7 @@ get_status_led() {
unifi)
status_led="ubnt:green:dome"
;;
- wndr3700)
+ wndr3700 | wndr3700v2)
status_led="wndr3700:green:power"
;;
wnr2000)
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/wndr3700 b/target/linux/ar71xx/base-files/etc/uci-defaults/wndr3700
index a893a0ec1..77fd05738 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/wndr3700
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/wndr3700
@@ -23,6 +23,6 @@ commit system
EOF
}
-if [ "${board}" == "wndr3700" ]; then
+if [ "${board}" == "wndr3700" -o "${board}" == "wndr3700v2" ]; then
wndr3700_set_wan_led
fi
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index c08860542..d390f9fdf 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -130,6 +130,9 @@ ar71xx_board_name() {
*WNDR3700)
name="wndr3700"
;;
+ *WNDR3700v2)
+ name="wndr3700v2"
+ ;;
*WNR2000)
name="wnr2000"
;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 0b867c005..067fe033f 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -64,6 +64,7 @@ platform_do_upgrade_combined() {
platform_check_image() {
local board=$(ar71xx_board_name)
local magic="$(get_magic_word "$1")"
+ local magic_long="$(get_magic_long "$1")"
[ "$ARGC" -gt 1 ] && return 1
@@ -83,7 +84,14 @@ platform_check_image() {
return 0
;;
wndr3700)
- [ "$magic" != "3337" ] && {
+ [ "$magic_long" != "33373030" ] && {
+ echo "Invalid image type."
+ return 1
+ }
+ return 0
+ ;;
+ wndr3700v2)
+ [ "$magic_long" != "33373031" ] && {
echo "Invalid image type."
return 1
}
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 */