ramips: add support for Netgear WN3100RPv2

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>
This commit is contained in:
Rodolphe de Saint Léger 2022-03-16 10:19:30 +01:00 committed by Sungbo Eo
parent fe34001ee5
commit 46c5de5385
6 changed files with 186 additions and 155 deletions

View 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>;
};
};

View File

@ -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";
};

View File

@ -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>;
};
};

View 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

View 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|\

View 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|\