ar71xx: rewrite WNDR3700/3800 handling

SVN-Revision: 29434
This commit is contained in:
Gabor Juhos 2011-12-05 13:03:54 +00:00
parent 78699c2e51
commit 4cc2b9bb06
10 changed files with 59 additions and 297 deletions

View file

@ -1,69 +0,0 @@
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

@ -1,69 +0,0 @@
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

@ -111,7 +111,7 @@ get_status_led() {
wzr-hp-g300nh)
status_led="buffalo:green:router"
;;
wndr3700 | wndr3700v2 | wndr3800)
wndr3700)
status_led="wndr3700:green:power"
;;
wnr2000)

View file

@ -123,9 +123,7 @@ wrt160nl)
set_led_wlan "wlan" "WLAN" "wrt160nl:blue:wlan" "phy0tpt"
;;
wndr3700 | \
wndr3700v2 | \
wndr3800)
wndr3700)
set_led_default "wan" "WAN LED (green)" "wndr3700:green:wan" "0"
set_led_usbdev "usb" "USB" "wndr3700:green:usb" "1-1"
;;

View file

@ -6,6 +6,48 @@
AR71XX_BOARD_NAME=
AR71XX_MODEL=
ar71xx_get_mem_total() {
$(awk '/MemTotal:/ {print($2)}' /proc/meminfo)
}
ar71xx_get_mtd_part_magic() {
local part="$1"
local mtd
mtd=$(find_mtd_part $part)
[ -z "$mtd" ] && return
dd if=$mtd bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
}
wndr3700_board_detect() {
local machine="$1"
local magic
local name
name="wndr3700"
magic="$(ar71xx_get_mtd_part_magic firmware)"
case $magic in
"33373030")
machine="NETGEAR WNDR3700"
;;
"33373031")
local mt
mt=$(ar71xx_get_mem_total)
if [ "$mt" -lt "65536" ]; then
machine="NETGEAR WNDR3700v2"
else
machine="NETGEAR WNDR3800"
fi
;;
esac
AR71XX_BOARD_NAME="$name"
AR71XX_MODEL="$machine"
}
ar71xx_board_detect() {
local machine
local name
@ -169,14 +211,8 @@ ar71xx_board_detect() {
*WP543)
name="wp543"
;;
*WNDR3700)
name="wndr3700"
;;
*WNDR3700v2)
name="wndr3700v2"
;;
*WNDR3800)
name="wndr3800"
*"WNDR3700/WNDR3800")
wndr3700_board_detect "$machine"
;;
*WNR2000)
name="wnr2000"

View file

@ -127,15 +127,11 @@ platform_check_image() {
return 0
;;
wndr3700)
[ "$magic_long" != "33373030" ] && {
echo "Invalid image type."
return 1
}
return 0
;;
wndr3700v2|wndr3800)
[ "$magic_long" != "33373031" ] && {
echo "Invalid image type."
local hw_magic
hw_magic="$(ar71xx_get_mtd_part_magic firmware)"
[ "$magic_long" != "$hw_magic" ] && {
echo "Invalid image, hardware ID mismatch, hw:$hw_magic image:$magic_long."
return 1
}
return 0

View file

@ -49,113 +49,6 @@
#define WNDR3700_CALDATA0_OFFSET 0x1000
#define WNDR3700_CALDATA1_OFFSET 0x5000
#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition wndr3700_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 = 0x720000,
}, {
.name = "config",
.offset = 0x790000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "config_bak",
.offset = 0x7a0000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "pot",
.offset = 0x7b0000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "traffic_meter",
.offset = 0x7c0000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "language",
.offset = 0x7d0000,
.size = 0x020000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "caldata",
.offset = 0x7f0000,
.size = 0x010000,
.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;
static struct gpio_led wndr3700_leds_gpio[] __initdata = {
{
.name = "wndr3700:green:power",
@ -218,7 +111,7 @@ static struct platform_device wndr3700_rtl8366s_device = {
}
};
static void __init wndr3700_common_setup(void)
static void __init wndr3700_setup(void)
{
u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
@ -242,7 +135,7 @@ static void __init wndr3700_common_setup(void)
ar71xx_add_device_usb();
ar71xx_add_device_m25p80(&wndr3700_flash_data);
ar71xx_add_device_m25p80(NULL);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(wndr3700_leds_gpio),
wndr3700_leds_gpio);
@ -269,24 +162,5 @@ static void __init wndr3700_common_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",
MIPS_MACHINE(AR71XX_MACH_WNDR3700, "WNDR3700", "NETGEAR WNDR3700/WNDR3800",
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);
MIPS_MACHINE(AR71XX_MACH_WNDR3800, "WNDR3800", "NETGEAR WNDR3800",
wndr3700v2_setup);

View file

@ -69,9 +69,7 @@ enum ar71xx_mach_type {
AR71XX_MACH_WHR_G301N, /* Buffalo WHR-G301N */
AR71XX_MACH_WHR_HP_G300N, /* Buffalo WHR-HP-G300N */
AR71XX_MACH_WHR_HP_GN, /* Buffalo WHR-HP-GN */
AR71XX_MACH_WNDR3700, /* NETGEAR WNDR3700 */
AR71XX_MACH_WNDR3700V2, /* NETGEAR WNDR3700v2 */
AR71XX_MACH_WNDR3800, /* NETGEAR WNDR3800 */
AR71XX_MACH_WNDR3700, /* NETGEAR WNDR3700/WNDR3800 */
AR71XX_MACH_WNR2000, /* NETGEAR WNR2000 */
AR71XX_MACH_WP543, /* Compex WP543 */
AR71XX_MACH_WRT160NL, /* Linksys WRT160NL */

View file

@ -6,12 +6,12 @@
#
define Profile/WNDR3700
NAME:=NETGEAR WNDR3700
NAME:=NETGEAR WNDR3700/3800
PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev
endef
define Profile/WNDR3700/Description
Package set optimized for the NETGEAR WNDR3700
Package set optimized for the NETGEAR WNDR3700/3800
endef
$(eval $(call Profile,WNDR3700))

View file

@ -759,13 +759,11 @@ endef
wndr3700_cmdline=board=WNDR3700 console=ttyS0,115200
wndr3700_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),6656k(rootfs),64k(art)ro,7680k@0x70000(firmware)
wndr3700v2_cmdline=board=WNDR3700v2 console=ttyS0,115200
wndr3700v2_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),14848k(rootfs),64k(art)ro,15872k@0x70000(firmware)
wndr3800_cmdline=board=WNDR3800 console=ttyS0,115200
define Image/Build/Profile/WNDR3700
$(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3700,$(wndr3700_cmdline),$(wndr3700_mtdlayout),3700,WNDR3700,"" NA,)
$(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3700v2,$(wndr3700v2_cmdline),$(wndr3700v2_mtdlayout),3701,WNDR3700v2,"",-H 29763654+16+64)
$(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3800,$(wndr3800_cmdline),$(wndr3700v2_mtdlayout),3701,WNDR3800,"",-H 29763654+16+128)
$(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3700v2,$(wndr3700_cmdline),$(wndr3700v2_mtdlayout),3701,WNDR3700,"",-H 29763654+16+64)
$(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3800,$(wndr3700_cmdline),$(wndr3700v2_mtdlayout),3701,WNDR3700,"",-H 29763654+16+128)
endef
wr400n_cmdline=board=WRT400N console=ttyS0,115200