ar71xx: add Netgear WNR1000v2/WNR1000v2-VC support (#18633)

The board is already supported by OpenWrt. WNR1000v2/WNR1000v2-VC are
pretty much the same as WNR2000v3/WNR612v2, therefore the same
initialization code and flash layout is used.

Signed-off-by: Ștefan Rusu <saltwaterc@gmail.com>
Tested-by: Douglas Fraser <1dsfraser@gmail.com>

SVN-Revision: 44221
This commit is contained in:
John Crispin 2015-01-30 08:06:40 +00:00
parent b86545c86d
commit 31fd66f808
11 changed files with 79 additions and 4 deletions

View file

@ -281,7 +281,8 @@ get_status_led() {
wndr4300 | \
wnr2000 | \
wnr2200 |\
wnr612-v2)
wnr612-v2 |\
wnr1000-v2)
status_led="netgear:green:power"
;;
wp543)

View file

@ -223,7 +223,8 @@ tl-wr842n-v2 |\
wnr2000-v3 |\
wnr2000-v4 |\
wnr2200 |\
wnr612-v2)
wnr612-v2 |\
wnr1000-v2)
ucidef_set_interfaces_lan_wan "eth1" "eth0"
ucidef_add_switch "switch0" "1" "1"
ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4"

View file

@ -77,6 +77,10 @@ wnr612-v2)
migrate_leds "wnr612v2:=netgear:"
;;
wnr1000-v2)
migrate_leds "wnr1000v2:=netgear:"
;;
*)
;;
esac

View file

@ -780,6 +780,9 @@ ar71xx_board_detect() {
*"WNR612 V2")
name="wnr612-v2"
;;
*"WNR1000 V2")
name="wnr1000-v2"
;;
*WRT160NL)
name="wrt160nl"
;;

View file

@ -38,6 +38,7 @@ set_preinit_iface() {
wnr2000-v3 |\
wnr2200 |\
wnr612-v2 |\
wnr1000-v2 |\
wpe72)
ifname=eth1
;;

View file

@ -379,7 +379,8 @@ platform_check_image() {
;;
wndr3700 | \
wnr2000-v3 | \
wnr612-v2)
wnr612-v2 | \
wnr1000-v2)
local hw_magic
hw_magic="$(ar71xx_get_mtd_part_magic firmware)"

View file

@ -1,5 +1,5 @@
/*
* NETGEAR WNR2000v3 board support
* NETGEAR WNR2000v3/WNR612v2/WNR1000v2 board support
*
* Copytight (C) 2013 Mathieu Olivari <mathieu.olivari@gmail.com>
* Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
@ -31,6 +31,9 @@
#define WNR612V2_GPIO_LED_PWR_GREEN 11
#define WNR1000V2_GPIO_LED_PWR_AMBER 1
#define WNR1000V2_GPIO_LED_PWR_GREEN 11
#define WNR2000V3_KEYS_POLL_INTERVAL 20 /* msecs */
#define WNR2000V3_KEYS_DEBOUNCE_INTERVAL (3 * WNR2000V3_KEYS_POLL_INTERVAL)
@ -58,6 +61,18 @@ static struct gpio_led wnr612v2_leds_gpio[] __initdata = {
}
};
static struct gpio_led wnr1000v2_leds_gpio[] __initdata = {
{
.name = "netgear:green:power",
.gpio = WNR1000V2_GPIO_LED_PWR_GREEN,
.active_low = 1,
}, {
.name = "netgear:amber:power",
.gpio = WNR1000V2_GPIO_LED_PWR_AMBER,
.active_low = 1,
}
};
static struct gpio_keys_button wnr2000v3_gpio_keys[] __initdata = {
{
.desc = "wps",
@ -113,3 +128,13 @@ static void __init wnr612v2_setup(void)
}
MIPS_MACHINE(ATH79_MACH_WNR612_V2, "WNR612V2", "NETGEAR WNR612 V2", wnr612v2_setup);
static void __init wnr1000v2_setup(void)
{
wnr_common_setup();
ath79_register_leds_gpio(-1, ARRAY_SIZE(wnr1000v2_leds_gpio),
wnr1000v2_leds_gpio);
}
MIPS_MACHINE(ATH79_MACH_WNR1000_V2, "WNR1000V2", "NETGEAR WNR1000 V2", wnr1000v2_setup);

View file

@ -62,6 +62,17 @@ endef
$(eval $(call Profile,WNR612V2))
define Profile/WNR1000V2
NAME:=NETGEAR WNR1000V2
endef
define Profile/WNR1000V2/Description
Package set optimized for the NETGEAR WNR1000V2
endef
$(eval $(call Profile,WNR1000V2))
define Profile/WNR2200
NAME:=NETGEAR WNR2200
endef

View file

@ -1323,6 +1323,8 @@ $(eval $(call SingleProfile,NetgearLzma,64kraw,WNR2000V4,wnr2000v4,WNR2000V4,tty
$(eval $(call SingleProfile,Netgear,64kraw,WNR2200,wnr2200,WNR2200,ttyS0,115200,$$(wnr2200_mtdlayout),0x32323030,WNR2200,"" NA,))
$(eval $(call SingleProfile,Netgear,64kraw,REALWNR612V2,wnr612v2,WNR612V2,ttyS0,115200,$$(wnr2000v3_mtdlayout),0x32303631,WNR612V2,"",))
$(eval $(call SingleProfile,Netgear,64kraw,N150R,n150r,WNR612V2,ttyS0,115200,$$(wnr2000v3_mtdlayout),0x32303631,N150R,"",))
$(eval $(call SingleProfile,Netgear,64kraw,REALWNR1000V2,wnr1000v2,WNR1000V2,ttyS0,115200,$$(wnr2000v3_mtdlayout),0x31303031,WNR1000V2,"",))
$(eval $(call SingleProfile,Netgear,64kraw,WNR1000V2_VC,wnr1000v2-vc,WNR1000V2,ttyS0,115200,$$(wnr2000v3_mtdlayout),0x31303030,WNR1000V2-VC,"",))
$(eval $(call SingleProfile,OpenMesh,squashfs-only,OM2P,om2p,,,,OM2P))
$(eval $(call SingleProfile,OpenMesh,squashfs-only,OM5P,om5p,,,,OM5P))
@ -1494,6 +1496,7 @@ $(eval $(call MultiProfile,TLWDR4300,TLWDR3500V1 TLWDR3600V1 TLWDR4300V1 TLWDR43
$(eval $(call MultiProfile,TUBE2H,TUBE2H8M TUBE2H16M))
$(eval $(call MultiProfile,UBNT,UBNTAIRROUTER UBNTRS UBNTRSPRO UBNTLSSR71 UBNTBULLETM UBNTROCKETM UBNTNANOM UBNTNANOMXW UBNTLOCOXW UBNTUNIFI UBNTUNIFIOUTDOOR UBNTUNIFIOUTDOORPLUS UAPPRO UBNTAIRGW))
$(eval $(call MultiProfile,WNR612V2,REALWNR612V2 N150R))
$(eval $(call MultiProfile,WNR1000V2,REALWNR1000V2 WNR1000V2_VC))
$(eval $(call MultiProfile,WP543,WP543_2M WP543_4M WP543_8M WP543_16M))
$(eval $(call MultiProfile,WPE72,WPE72_4M WPE72_8M WPE72_16M))

View file

@ -0,0 +1,21 @@
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
@@ -567,7 +567,7 @@ config ATH79_MACH_WNR2000
select ATH79_DEV_WMAC
config ATH79_MACH_WNR2000_V3
- bool "NETGEAR WNR2000 V3/WNR612 v2 board support"
+ bool "NETGEAR WNR2000 V3/WNR612 v2/WNR1000 v2 board support"
select SOC_AR724X
select ATH79_DEV_AP9X_PCI if PCI
select ATH79_DEV_ETH
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
@@ -173,6 +173,7 @@ enum ath79_mach_type {
ATH79_MACH_WNR2000_V3, /* NETGEAR WNR2000 v3 */
ATH79_MACH_WNR2200, /* NETGEAR WNR2200 */
ATH79_MACH_WNR612_V2, /* NETGEAR WNR612 v2 */
+ ATH79_MACH_WNR1000_V2, /* NETGEAR WNR1000 v2 */
ATH79_MACH_WP543, /* Compex WP543 */
ATH79_MACH_WPE72, /* Compex WPE72 */
ATH79_MACH_WRT160NL, /* Linksys WRT160NL */

View file

@ -233,6 +233,8 @@ static struct mtd_part_parser uimage_generic_parser = {
#define FW_MAGIC_WNR2000V4 0x32303034
#define FW_MAGIC_WNR2200 0x32323030
#define FW_MAGIC_WNR612V2 0x32303631
#define FW_MAGIC_WNR1000V2 0x31303031
#define FW_MAGIC_WNR1000V2_VC 0x31303030
#define FW_MAGIC_WNDR3700 0x33373030
#define FW_MAGIC_WNDR3700V2 0x33373031
@ -241,6 +243,8 @@ static bool uimage_verify_wndr3700(struct uimage_header *header)
uint8_t expected_type = IH_TYPE_FILESYSTEM;
switch be32_to_cpu(header->ih_magic) {
case FW_MAGIC_WNR612V2:
case FW_MAGIC_WNR1000V2:
case FW_MAGIC_WNR1000V2_VC:
case FW_MAGIC_WNR2000V3:
case FW_MAGIC_WNR2200:
case FW_MAGIC_WNDR3700: