ar71xx: add Netgear WNR1000v2/WNR1000v2-VC support (#18633)
authorJohn Crispin <john@openwrt.org>
Fri, 30 Jan 2015 08:06:40 +0000 (08:06 +0000)
committerJohn Crispin <john@openwrt.org>
Fri, 30 Jan 2015 08:06:40 +0000 (08:06 +0000)
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

target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/etc/uci-defaults/02_network
target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2000-v3.c
target/linux/ar71xx/generic/profiles/netgear.mk
target/linux/ar71xx/image/Makefile
target/linux/ar71xx/patches-3.14/617-MIPS-ath79-WNR1000v2-support.patch [new file with mode: 0644]
target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c

index 444e6ff..af6107b 100755 (executable)
@@ -281,7 +281,8 @@ get_status_led() {
        wndr4300 | \
        wnr2000 | \
        wnr2200 |\
-       wnr612-v2)
+       wnr612-v2 |\
+       wnr1000-v2)
                status_led="netgear:green:power"
                ;;
        wp543)
index 5f1704f..a223ae8 100755 (executable)
@@ -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"
index 1cef8b9..d578f59 100755 (executable)
@@ -77,6 +77,10 @@ wnr612-v2)
        migrate_leds "wnr612v2:=netgear:"
        ;;
 
+wnr1000-v2)
+       migrate_leds "wnr1000v2:=netgear:"
+       ;;
+
 *)
        ;;
 esac
index 14ee68b..02872de 100755 (executable)
@@ -780,6 +780,9 @@ ar71xx_board_detect() {
        *"WNR612 V2")
                name="wnr612-v2"
                ;;
+       *"WNR1000 V2")
+               name="wnr1000-v2"
+               ;;
        *WRT160NL)
                name="wrt160nl"
                ;;
index a9a8794..f11ea8c 100644 (file)
@@ -38,6 +38,7 @@ set_preinit_iface() {
        wnr2000-v3 |\
        wnr2200 |\
        wnr612-v2 |\
+       wnr1000-v2 |\
        wpe72)
                ifname=eth1
                ;;
index 391299f..bc6866d 100755 (executable)
@@ -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)"
index 6acd991..2e14782 100644 (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);
index e8a2a3f..16b1087 100644 (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
index ec6330f..f7b8381 100644 (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))
 
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 (file)
index 0000000..2f4aabe
--- /dev/null
@@ -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 */
index 7dad63c..1df0ac1 100644 (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: