ramips: add support for Edimax RA21S
authorMaksym Medvedev <redrathnure@gmail.com>
Fri, 15 Nov 2019 22:21:22 +0000 (23:21 +0100)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Sat, 4 Jan 2020 15:49:59 +0000 (16:49 +0100)
Edimax RA21S is a dual band 11ac router,
based on MediaTek MT7621A and MT7615N chips.

Specification:
- SoC: MediaTek MT7621A dual-core @ 880MHz
- RAM: 256M (Nanya NT5CC128M16IP)
- FLASH: 16MB (Macronix MX25L12835F)
- WiFi: 2.4/5 GHz 4T4R
  - 2.4GHz MediaTek MT7615N bgn
  - 5GHz MediaTek MT7615N nac
- Switch: SoC integrated Gigabit Switch (4 x LAN, 1 x WAN)
- USB: No
- BTN: Reset, WPS
- LED: 4 red LEDs, indistinguishable when case closed
- UART:  through-hole on PCB.
   J1: 3.3V - RX - GND - TX / 57600-8N1.  3.3V is the square pad

Installation:
Update the factory image via the OEM web-interface
(by default: http://192.168.2.1/)
User: admin
Password: 1234

The sysupgrade image can be installed via TFTP
from the U-Boot bootloader. Connect via ethernet port 2.

Tested on device by @UAb5eSMn

Signed-off-by: Maksym Medvedev <redrathnure@gmail.com>
[split DTS and take over improvements from RG21S, extend commit
message]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ramips/dts/mt7621_edimax_ra21s.dts [new file with mode: 0644]
target/linux/ramips/dts/mt7621_edimax_rg21s.dts
target/linux/ramips/dts/mt7621_edimax_rx21s.dtsi [new file with mode: 0644]
target/linux/ramips/image/mt7621.mk
target/linux/ramips/mt7621/base-files/etc/board.d/02_network

diff --git a/target/linux/ramips/dts/mt7621_edimax_ra21s.dts b/target/linux/ramips/dts/mt7621_edimax_ra21s.dts
new file mode 100644 (file)
index 0000000..ad0eee0
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7621_edimax_rx21s.dtsi"
+
+/ {
+       compatible = "edimax,ra21s", "mediatek,mt7621-soc";
+       model = "Edimax RA21S";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_power: led_1 {
+                       label = "ra21s:red:led1";
+                       gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
+               };
+
+               led_2 {
+                       label = "ra21s:red:led2";
+                       gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               };
+
+               led_3 {
+                       label = "ra21s:red:led3";
+                       gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
+               };
+
+               led_4 {
+                       label = "ra21s:red:led4";
+                       gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
index ce28e8e04d339f6a973b933ac1fe93d855e1ff4b..4325e98132d204d7a40d28b04980c21781d3144d 100644 (file)
@@ -1,10 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 /dts-v1/;
 
-#include "mt7621.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7621_edimax_rx21s.dtsi"
 
 / {
        compatible = "edimax,rg21s", "mediatek,mt7621-soc";
                led-failsafe = &led_power;
                led-running = &led_power;
                led-upgrade = &led_power;
-               label-mac-device = &ethernet;
-       };
-
-       chosen {
-               bootargs = "console=ttyS0,57600";
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-
-               wps {
-                       label = "wps";
-                       gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_WPS_BUTTON>;
-               };
        };
 
        leds {
                };
        };
 };
-
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <40000000>;
-
-               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;
-                       };
-
-                       factory: partition@40000 {
-                               label = "factory";
-                               reg = <0x40000 0x10000>;
-                               read-only;
-                       };
-
-                       partition@50000 {
-                               compatible = "denx,uimage";
-                               label = "firmware";
-                               reg = <0x50000 0xfb0000>;
-                       };
-               };
-       };
-};
-
-&pcie {
-       status = "okay";
-};
-
-&pcie0 {
-       wifi0: wifi@0,0 {
-               compatible = "mediatek,mt76";
-               reg = <0x0000 0 0 0 0>;
-               mediatek,mtd-eeprom = <&factory 0x0000>;
-               ieee80211-freq-limit = <2400000 2500000>;
-       };
-};
-
-&pcie1 {
-       wifi1: wifi@0,0 {
-               compatible = "mediatek,mt76";
-               reg = <0x0000 0 0 0 0>;
-               mediatek,mtd-eeprom = <&factory 0x8000>;
-               ieee80211-freq-limit = <5000000 6000000>;
-       };
-};
-
-&ethernet {
-       mtd-mac-address = <&factory 0x4>;
-
-       mediatek,portmap = "wllll";
-       port@5 {
-               status = "disabled";
-       };
-};
-
-&state_default {
-       gpio {
-               ralink,group = "uart3", "uart2", "jtag", "wdt";
-               ralink,function = "gpio";
-       };
-};
-
-&xhci {
-       status = "disabled";
-};
diff --git a/target/linux/ramips/dts/mt7621_edimax_rx21s.dtsi b/target/linux/ramips/dts/mt7621_edimax_rx21s.dtsi
new file mode 100644 (file)
index 0000000..31498a5
--- /dev/null
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       aliases {
+               label-mac-device = &ethernet;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,57600";
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+
+               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;
+                       };
+
+                       factory: partition@40000 {
+                               label = "factory";
+                               reg = <0x40000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@50000 {
+                               compatible = "denx,uimage";
+                               label = "firmware";
+                               reg = <0x50000 0xfb0000>;
+                       };
+               };
+       };
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       wifi0: wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x0000>;
+               ieee80211-freq-limit = <2400000 2500000>;
+       };
+};
+
+&pcie1 {
+       wifi1: wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x8000>;
+               ieee80211-freq-limit = <5000000 6000000>;
+       };
+};
+
+&ethernet {
+       mtd-mac-address = <&factory 0x4>;
+
+       mediatek,portmap = "wllll";
+       port@5 {
+               status = "disabled";
+       };
+};
+
+&state_default {
+       gpio {
+               ralink,group = "uart3", "uart2", "jtag", "wdt";
+               ralink,function = "gpio";
+       };
+};
+
+&xhci {
+       status = "disabled";
+};
index c0706f79984fc42c1bafa53ffff31dc0c62ed211..b33c2c5bc0a47184d24b40d8e708512bc78252ad 100644 (file)
@@ -224,6 +224,20 @@ define Device/d-team_pbr-m1
 endef
 TARGET_DEVICES += d-team_pbr-m1
 
+define Device/edimax_ra21s
+  SOC := mt7621
+  IMAGE_SIZE := 16064k
+  DEVICE_VENDOR := Edimax
+  DEVICE_MODEL := RA21S
+  DEVICE_ALT0_VENDOR := Edimax
+  DEVICE_ALT0_MODEL := Gemini RA21S
+  IMAGES += factory.bin
+  IMAGE/factory.bin := $$(sysupgrade_bin) | check-size $$$$(IMAGE_SIZE) | \
+       elx-header 02020040 8844A2D168B45A2D
+  DEVICE_PACKAGES := kmod-mt7615e wpad-basic
+endef
+TARGET_DEVICES += edimax_ra21s
+
 define Device/edimax_rg21s
   SOC := mt7621
   IMAGE_SIZE := 16064k
index a3b9c079a69b2d9737c8d1c22303b6fc6d94fe8d..4e8e2cb9ed72ffa9ce4538e8849f951217c0fbff 100755 (executable)
@@ -87,6 +87,7 @@ ramips_setup_interfaces()
                ucidef_add_switch "switch0" \
                        "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan:5" "6@eth0"
                ;;
+       edimax,ra21s|\
        edimax,rg21s)
                ucidef_add_switch "switch0" \
                        "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0:wan" "6@eth0"
@@ -198,6 +199,7 @@ ramips_setup_macs()
                wan_mac=$(mtd_get_mac_ascii factory wanmac)
                label_mac=$(mtd_get_mac_binary radio 0x4)
                ;;
+       edimax,ra21s|\
        edimax,rg21s)
                lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
                wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr)