ar71xx: add support for the WNDR3700v2 board

Based on a patch by Mark Mentovai <mark@moxienet.com>

SVN-Revision: 25118
This commit is contained in:
Gabor Juhos 2011-01-26 20:35:42 +00:00
parent 25feec0c9c
commit 67c3e0bf7e
7 changed files with 158 additions and 10 deletions

View file

@ -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

View file

@ -105,7 +105,7 @@ get_status_led() {
unifi)
status_led="ubnt:green:dome"
;;
wndr3700)
wndr3700 | wndr3700v2)
status_led="wndr3700:green:power"
;;
wnr2000)

View file

@ -23,6 +23,6 @@ commit system
EOF
}
if [ "${board}" == "wndr3700" ]; then
if [ "${board}" == "wndr3700" -o "${board}" == "wndr3700v2" ]; then
wndr3700_set_wan_led
fi

View file

@ -130,6 +130,9 @@ ar71xx_board_name() {
*WNDR3700)
name="wndr3700"
;;
*WNDR3700v2)
name="wndr3700v2"
;;
*WNR2000)
name="wnr2000"
;;

View file

@ -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
}

View file

@ -96,14 +96,64 @@ static struct mtd_partition wndr3700_partitions[] = {
.mask_flags = MTD_WRITEABLE,
}
};
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 = {
#ifdef CONFIG_MTD_PARTITIONS
.parts = wndr3700_partitions,
.nr_parts = ARRAY_SIZE(wndr3700_partitions),
#endif
};
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);

View file

@ -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 */