ramips: add support for Netgear WN3000RPv3
authorRodolphe de Saint Léger <rdesaintleger@gmail.com>
Wed, 16 Mar 2022 09:19:30 +0000 (10:19 +0100)
committerSungbo Eo <mans0n@gorani.run>
Wed, 16 Mar 2022 13:36:04 +0000 (22:36 +0900)
This patch adds support for the Netgear WN3100RPv2
http://www.netgear.com/support/product/wn3100rpv2.aspx

Specifications:
- SoC: MediaTek MT7620A (580MHz, ramips)
- RAM: 32MB DDR
- Storage: 8MB NOR SPI flash
- Wireless: builtin MT7620A, 2x2:2 with u.FL connectors
- Ethernet: 1x100M
- Stock firmware based on OpenWRT Kamikaze

Like the EX2700, the bootloader expects a secondary image signature,
see https://forum.openwrt.org/viewtopic.php?pid=312577#p312577

This device seems to be same hardware as a WN3000RPv3

Flash instructions:
- Use the Netgear WebUI to upgrade to OpenWRT using the factory image
  (see note below),
- Use the sysupgrade image for upgrading versions from OpenWRT,
- TFTP recovery procedure can be used to flash the factory image
  (preferred method).

Note:
- The WebUI may not reboot automatically, wait at least 5 minutes before
  powercycling the device

Flashing using TFTP:
- Set you IP address to 192.168.1.10/24 (no gateway)
- Connect your machine to the Ethernet port
- Power off the device and wait for 10 seconds,
- Hold the reset button and power on the device (do not release reset),
- Hold the reset button until the green light is flashing (Approx. 15s)
- launch tftp, set mode to binary and connect to 192.168.1.1
- put the factory firmware image
- All leds will switch off (like a power off), this is normal
- Wait for the device to reboot in the new OpenWRT image (max 5 mins)
- The first boot will take longer than usual.
- After boot, the Device IP on the ethernet port is 192.168.1.1

Signed-off-by: Rodolphe de Saint Léger <rdesaintleger@gmail.com>
[drop unneeded includes in dts, wrap commit message]
Signed-off-by: Sungbo Eo <mans0n@gorani.run>
target/linux/ramips/dts/mt7620a_netgear_wn3000rp-v3.dts
target/linux/ramips/dts/mt7620a_netgear_wn3100rp-v2.dts [new file with mode: 0644]
target/linux/ramips/dts/mt7620a_netgear_wn3x00rp.dtsi [new file with mode: 0644]
target/linux/ramips/image/mt7620.mk
target/linux/ramips/mt7620/base-files/etc/board.d/01_leds
target/linux/ramips/mt7620/base-files/etc/board.d/02_network

index c6fe7baa6782168af15c897c6d28f02e5d007a9d..cddffb722442e897b84e4dcfdb291d09cec6daf7 100644 (file)
@@ -1,161 +1,8 @@
 /* This file is released into the public domain */
 
-#include "mt7620a.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7620a_netgear_wn3x00rp.dtsi"
 
 / {
        compatible = "netgear,wn3000rp-v3", "ralink,mt7620a-soc";
        model = "Netgear WN3000RP v3";
-
-       aliases {
-               led-boot = &led_power_green;
-               led-failsafe = &led_power_green;
-               led-running = &led_power_green;
-               led-upgrade = &led_power_green;
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-
-               wps {
-                       label = "wps";
-                       gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_WPS_BUTTON>;
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               led_power_green: power_g {
-                       label = "green:power";
-                       gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
-                       default-state = "on";
-               };
-
-               power_r {
-                       label = "red:power";
-                       gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
-               };
-
-               client_g {
-                       label = "green:client";
-                       gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
-               };
-
-               client_r {
-                       label = "red:client";
-                       gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
-               };
-
-               router_g {
-                       label = "green:router";
-                       gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
-               };
-
-               router_r {
-                       label = "red:router";
-                       gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
-               };
-
-               wps {
-                       label = "green:wps";
-                       gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
-               };
-
-               l_arrow {
-                       label = "blue:leftarrow";
-                       gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
-               };
-
-               r_arrow {
-                       label = "blue:rightarrow";
-                       gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
-               };
-       };
-};
-
-&gpio1 {
-       status = "okay";
-};
-
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <10000000>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0 0x30000>;
-                               read-only;
-                       };
-
-                       partition@30000 {
-                               label = "u-boot-env";
-                               reg = <0x30000 0x10000>;
-                               read-only;
-                       };
-
-                       partition@40000 {
-                               compatible = "denx,uimage";
-                               label = "firmware";
-                               reg = <0x40000 0x7b0000>;
-                       };
-
-                       art: partition@7f0000 {
-                               label = "art";
-                               reg = <0x7f0000 0x10000>;
-                               read-only;
-                       };
-               };
-       };
-};
-
-&ethernet {
-       nvmem-cells = <&macaddr_art_0>;
-       nvmem-cell-names = "mac-address";
-};
-
-&wmac {
-       ralink,mtd-eeprom = <&art 0x1000>;
-
-       nvmem-cells = <&macaddr_art_6>;
-       nvmem-cell-names = "mac-address";
-};
-
-&state_default {
-       default {
-               groups = "i2c", "uartf", "spi refclk";
-               function = "gpio";
-       };
-};
-
-&art {
-       compatible = "nvmem-cells";
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       macaddr_art_0: macaddr@0 {
-               reg = <0x0 0x6>;
-       };
-
-       macaddr_art_6: macaddr@6 {
-               reg = <0x6 0x6>;
-       };
 };
diff --git a/target/linux/ramips/dts/mt7620a_netgear_wn3100rp-v2.dts b/target/linux/ramips/dts/mt7620a_netgear_wn3100rp-v2.dts
new file mode 100644 (file)
index 0000000..af4a73b
--- /dev/null
@@ -0,0 +1,8 @@
+/* This file is released into the public domain */
+
+#include "mt7620a_netgear_wn3x00rp.dtsi"
+
+/ {
+       compatible = "netgear,wn3100rp-v2", "ralink,mt7620a-soc";
+       model = "Netgear WN3100RP v2";
+};
diff --git a/target/linux/ramips/dts/mt7620a_netgear_wn3x00rp.dtsi b/target/linux/ramips/dts/mt7620a_netgear_wn3x00rp.dtsi
new file mode 100644 (file)
index 0000000..914d4e6
--- /dev/null
@@ -0,0 +1,158 @@
+/* This file is released into the public domain */
+
+#include "mt7620a.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       aliases {
+               led-boot = &led_power_green;
+               led-failsafe = &led_power_green;
+               led-running = &led_power_green;
+               led-upgrade = &led_power_green;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_power_green: power_g {
+                       label = "green:power";
+                       gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+
+               power_r {
+                       label = "red:power";
+                       gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
+               };
+
+               client_g {
+                       label = "green:client";
+                       gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
+               };
+
+               client_r {
+                       label = "red:client";
+                       gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
+               };
+
+               router_g {
+                       label = "green:router";
+                       gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
+               };
+
+               router_r {
+                       label = "red:router";
+                       gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+               };
+
+               wps {
+                       label = "green:wps";
+                       gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+               };
+
+               l_arrow {
+                       label = "blue:leftarrow";
+                       gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
+               };
+
+               r_arrow {
+                       label = "blue:rightarrow";
+                       gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <10000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x30000>;
+                               read-only;
+                       };
+
+                       partition@30000 {
+                               label = "u-boot-env";
+                               reg = <0x30000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               compatible = "denx,uimage";
+                               label = "firmware";
+                               reg = <0x40000 0x7b0000>;
+                       };
+
+                       art: partition@7f0000 {
+                               label = "art";
+                               reg = <0x7f0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&ethernet {
+       nvmem-cells = <&macaddr_art_0>;
+       nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+       ralink,mtd-eeprom = <&art 0x1000>;
+
+       nvmem-cells = <&macaddr_art_6>;
+       nvmem-cell-names = "mac-address";
+};
+
+&state_default {
+       default {
+               groups = "i2c", "uartf", "spi refclk";
+               function = "gpio";
+       };
+};
+
+&art {
+       compatible = "nvmem-cells";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       macaddr_art_0: macaddr@0 {
+               reg = <0x0 0x6>;
+       };
+
+       macaddr_art_6: macaddr@6 {
+               reg = <0x6 0x6>;
+       };
+};
index 49d25b947f6a2ce9cfe5c40563d96167a51e02ab..d2a2c90460b26e8e87194f2e92c0172e4836b8ab 100644 (file)
@@ -819,6 +819,22 @@ define Device/netgear_wn3000rp-v3
 endef
 TARGET_DEVICES += netgear_wn3000rp-v3
 
+define Device/netgear_wn3100rp-v2
+  SOC := mt7620a
+  IMAGE_SIZE := 7872k
+  NETGEAR_HW_ID := 29764883+8+0+32+2x2+0
+  NETGEAR_BOARD_ID := WN3100RPv2
+  BLOCKSIZE := 4k
+  IMAGES += factory.bin
+  KERNEL := $(KERNEL_DTB) | uImage lzma | pad-offset 64k 64 | \
+       append-uImage-fakehdr filesystem
+  IMAGE/factory.bin := $$(sysupgrade_bin) | check-size | netgear-dni
+  DEVICE_VENDOR := NETGEAR
+  DEVICE_MODEL := WN3100RP
+  DEVICE_VARIANT := v2
+endef
+TARGET_DEVICES += netgear_wn3100rp-v2
+
 define Device/netis_wf2770
   SOC := mt7620a
   IMAGE_SIZE := 16064k
index 5f105bd834d141ccf6c5fec14c1f2d9ed5d0fe80..1293c34cbf9edcd96452614189dc4232c2392659 100644 (file)
@@ -161,7 +161,8 @@ lenovo,newifi-y1s)
        ucidef_set_led_netdev "wan" "WAN" "blue:internet" "eth0.2" "tx rx"
        ;;
 netgear,ex2700|\
-netgear,wn3000rp-v3)
+netgear,wn3000rp-v3|\
+netgear,wn3100rp-v2)
        ucidef_set_led_netdev "wifi_led" "wifi" "green:router" "wlan0"
        ;;
 netgear,ex3700|\
index 3ed72fa3ab2bb624147d9ff32c5fb8bc0a5cbf6c..f7bc41669f807aa9d031f370d3d4e713a644b82a 100644 (file)
@@ -54,6 +54,7 @@ ramips_setup_interfaces()
        netgear,ex6120|\
        netgear,ex6130|\
        netgear,wn3000rp-v3|\
+       netgear,wn3100rp-v2|\
        planex,cs-qr10|\
        planex,mzk-ex300np|\
        planex,mzk-ex750np|\