From 31fd66f808e7ea16cacef362877139b7e0e8ac7d Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 30 Jan 2015 08:06:40 +0000 Subject: [PATCH] ar71xx: add Netgear WNR1000v2/WNR1000v2-VC support (#18633) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Tested-by: Douglas Fraser <1dsfraser@gmail.com> SVN-Revision: 44221 --- target/linux/ar71xx/base-files/etc/diag.sh | 3 ++- .../base-files/etc/uci-defaults/02_network | 3 ++- .../etc/uci-defaults/04_led_migration | 4 +++ target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 +++ .../lib/preinit/05_set_preinit_iface_ar71xx | 1 + .../ar71xx/base-files/lib/upgrade/platform.sh | 3 ++- .../files/arch/mips/ath79/mach-wnr2000-v3.c | 27 ++++++++++++++++++- .../linux/ar71xx/generic/profiles/netgear.mk | 11 ++++++++ target/linux/ar71xx/image/Makefile | 3 +++ .../617-MIPS-ath79-WNR1000v2-support.patch | 21 +++++++++++++++ .../drivers/mtd/mtdsplit/mtdsplit_uimage.c | 4 +++ 11 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 target/linux/ar71xx/patches-3.14/617-MIPS-ath79-WNR1000v2-support.patch diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 444e6fff7f..af6107b489 100755 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -281,7 +281,8 @@ get_status_led() { wndr4300 | \ wnr2000 | \ wnr2200 |\ - wnr612-v2) + wnr612-v2 |\ + wnr1000-v2) status_led="netgear:green:power" ;; wp543) diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network index 5f1704f4b8..a223ae8fe5 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network @@ -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" diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration b/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration index 1cef8b9937..d578f59f7c 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration @@ -77,6 +77,10 @@ wnr612-v2) migrate_leds "wnr612v2:=netgear:" ;; +wnr1000-v2) + migrate_leds "wnr1000v2:=netgear:" + ;; + *) ;; esac diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index 14ee68b854..02872de145 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -780,6 +780,9 @@ ar71xx_board_detect() { *"WNR612 V2") name="wnr612-v2" ;; + *"WNR1000 V2") + name="wnr1000-v2" + ;; *WRT160NL) name="wrt160nl" ;; diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx index a9a8794c77..f11ea8cb32 100644 --- a/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx +++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx @@ -38,6 +38,7 @@ set_preinit_iface() { wnr2000-v3 |\ wnr2200 |\ wnr612-v2 |\ + wnr1000-v2 |\ wpe72) ifname=eth1 ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 391299f38a..bc6866da19 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -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)" diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2000-v3.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2000-v3.c index 6acd991eb6..2e14782200 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2000-v3.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2000-v3.c @@ -1,5 +1,5 @@ /* - * NETGEAR WNR2000v3 board support + * NETGEAR WNR2000v3/WNR612v2/WNR1000v2 board support * * Copytight (C) 2013 Mathieu Olivari * Copyright (C) 2008-2009 Gabor Juhos @@ -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); diff --git a/target/linux/ar71xx/generic/profiles/netgear.mk b/target/linux/ar71xx/generic/profiles/netgear.mk index e8a2a3fbe6..16b1087635 100644 --- a/target/linux/ar71xx/generic/profiles/netgear.mk +++ b/target/linux/ar71xx/generic/profiles/netgear.mk @@ -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 diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index ec6330f1ef..f7b8381aa4 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -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)) diff --git a/target/linux/ar71xx/patches-3.14/617-MIPS-ath79-WNR1000v2-support.patch b/target/linux/ar71xx/patches-3.14/617-MIPS-ath79-WNR1000v2-support.patch new file mode 100644 index 0000000000..2f4aabec80 --- /dev/null +++ b/target/linux/ar71xx/patches-3.14/617-MIPS-ath79-WNR1000v2-support.patch @@ -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 */ diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c index 7dad63c9bb..1df0ac1ae1 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c @@ -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: