[OpenWrt-Devel] [PATCH v5] ramips: add support for Edimax RG21S

Birger Koblitz mail at birger-koblitz.de
Fri Aug 23 03:00:36 EDT 2019


ramips: add Edimax RG21S

SoC:    MediaTek MT7621AT dual-core @ 880MHz
RAM:    256M (Nanya NT5CC128M)
FLASH:    16MB (Macronix MX25L12835F)
WiFi:    - 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 casing closed
UART:     UART is present as Pads marked J1 on the PCB.
    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.1.1)
The sysupgrade image can be installed via TFTP from
the U-Boot bootloader. Connect ethernet port 2.

Signed-off-by: Birger Koblitz <mail at birger-koblitz.de>

---

v3: Update to DEVICE_VENDOR / DEVICE_MODEL in mt7621.mk
    renamed .dts according to new conventions
    Removed memory node from .dts
    Correct image size
    Whitespace fixes
v4: Added wifi0/1 labels to wifi nodes
    Model name corrected in dts
    Comments removed from .dts
v5: Corrected MT7615N PCI IDs
    Unnecessary kernel-modules removed from image

diff --git a/target/linux/ramips/base-files/etc/board.d/02_network
b/target/linux/ramips/base-files/etc/board.d/02_network
index c0de9d4e50..91685508db 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -336,6 +336,10 @@ ramips_setup_interfaces()
         ucidef_add_switch "switch0" \
             "0:lan" "4:wan" "6 at eth0"
         ;;
+    edimax,rg21s)
+        ucidef_add_switch "switch0" \
+            "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0:wan" "6 at eth0"
+        ;;
     gehua,ghl-r-001)
         ucidef_add_switch "switch0" \
             "0:lan" "1:lan" "2:lan" "4:wan" "6 at eth0"
@@ -594,6 +598,10 @@ ramips_setup_macs()
     edimax,br-6478ac-v2)
         wan_mac=$(macaddr_add "$(cat /sys/class/net/eth0/address)" 2)
         ;;
+    edimax,rg21s)
+        lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
+        wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr)
+        ;;
     elecom,wrc-1167ghbk2-s|\
     elecom,wrc-1900gst|\
     elecom,wrc-2533gst|\
diff --git a/target/linux/ramips/dts/mt7621_edimax_rg21s.dts
b/target/linux/ramips/dts/mt7621_edimax_rg21s.dts
new file mode 100644
index 0000000000..dfccae102b
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_edimax_rg21s.dts
@@ -0,0 +1,157 @@
+// 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>
+
+/ {
+    compatible = "edimax,rg21s", "mediatek,mt7621-soc";
+    model = "Edimax RG21S";
+
+    aliases {
+        led-boot = &led_power;
+        led-failsafe = &led_power;
+        led-running = &led_power;
+        led-upgrade = &led_power;
+    };
+
+    chosen {
+        bootargs = "console=ttyS0,57600";
+    };
+
+    palmbus: palmbus at 1E000000 {
+        i2c at 900 {
+            status = "okay";
+        };
+    };
+
+    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_RESTART>;
+        };
+    };
+
+    leds {
+        compatible = "gpio-leds";
+
+        led_power: led_1 {
+            label = "rg21s:red:led1";
+            gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
+        };
+
+        led_2 {
+            label = "rg21s:red:led2";
+            gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+        };
+
+        led_3 {
+            label = "rg21s:red:led3";
+            gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
+        };
+
+        led_4 {
+            label = "rg21s:red:led4";
+            gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
+        };
+    };
+};
+
+&sdhci {
+    status = "okay";
+};
+
+&spi0 {
+    status = "okay";
+
+    m25p80 at 0 {
+        compatible = "jedec,spi-nor";
+        reg = <0>;
+        spi-max-frequency = <10000000>;
+
+        partitions {
+            compatible = "fixed-partitions";
+            #address-cells = <1>;
+            #size-cells = <1>;
+
+            partition at 0 {
+                label = "u-boot";
+                reg = <0x0 0x30000>;
+                read-only;
+            };
+
+            partition at 30000 {
+                label = "u-boot-env";
+                reg = <0x30000 0x10000>;
+                read-only;
+            };
+
+            factory: partition at 40000 {
+                label = "factory";
+                reg = <0x40000 0x10000>;
+                read-only;
+            };
+
+            partition at 50000 {
+                compatible = "denx,uimage";
+                label = "firmware";
+                reg = <0x50000 0xfb0000>;
+            };
+        };
+    };
+};
+
+&pcie {
+    status = "okay";
+};
+
+&pcie0 {
+    wifi0: wifi at 0,0 {
+        compatible = "pci14c3,7615";
+        reg = <0x0000 0 0 0 0>;
+        mediatek,mtd-eeprom = <&factory 0x0000>;
+        ieee80211-freq-limit = <2400000 2500000>;
+        mtd-mac-address = <&factory 0x4>;
+    };
+};
+
+&pcie1 {
+    wifi1: wifi at 0,0 {
+        compatible = "pci14c3,7615";
+        reg = <0x0000 0 0 0 0>;
+        mediatek,mtd-eeprom = <&factory 0x8000>;
+        ieee80211-freq-limit = <5000000 6000000>;
+        mtd-mac-address = <&factory 0x8004>;
+    };
+};
+
+&ethernet {
+    mediatek,portmap = "wllll";
+    port at 5 {
+        status = "disabled";
+    };
+};
+
+&pinctrl {
+    state_default: pinctrl0 {
+        gpio {
+            ralink,group = "wdt", "rgmii2", "jtag", "mdio";
+            ralink,function = "gpio";
+        };
+    };
+};
+
+&xhci {
+    status = "disabled";
+};
diff --git a/target/linux/ramips/image/mt7621.mk
b/target/linux/ramips/image/mt7621.mk
index d32feb7eab..06c5369514 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -30,6 +30,25 @@ define Build/elecom-wrc-factory
   mv $@.new $@
 endef
 
+define Build/elx-header
+  $(eval hw_id=$(word 1,$(1)))
+  $(eval xor_pattern=$(word 2,$(1)))
+  ( \
+    echo -ne "\x00\x00\x00\x00\x00\x00\x00\x03" | \
+      dd bs=42 count=1 conv=sync; \
+    hw_id="$(hw_id)"; \
+    echo -ne
"\x$${hw_id:0:2}\x$${hw_id:2:2}\x$${hw_id:4:2}\x$${hw_id:6:2}" | \
+      dd bs=20 count=1 conv=sync; \
+    echo -ne "$$(printf '%08x' $$(stat -c%s $@) | fold -s2 | xargs -I
{} echo \\x{} | tr -d '\n')" | \
+      dd bs=8 count=1 conv=sync; \
+    echo -ne "$$($(STAGING_DIR_HOST)/bin/mkhash md5 $@ | fold -s2 |
xargs -I {} echo \\x{} | tr -d '\n')" | \
+      dd bs=58 count=1 conv=sync; \
+  ) > $(KDIR)/tmp/$(DEVICE_NAME).header
+  $(call Build/xor-image,-p $(xor_pattern) -x)
+  cat $(KDIR)/tmp/$(DEVICE_NAME).header $@ > $@.new
+  mv $@.new $@
+endef
+
 define Build/iodata-factory
   $(eval fw_size=$(word 1,$(1)))
   $(eval fw_type=$(word 2,$(1)))
@@ -173,6 +192,20 @@ define Device/d-team_pbr-m1
 endef
 TARGET_DEVICES += d-team_pbr-m1
 
+define Device/edimax_rg21s
+  MTK_SOC := mt7621
+  IMAGE_SIZE := 16064k
+  DEVICE_VENDOR := EDIMAX
+  DEVICE_MODEL := RG21S
+  IMAGES += factory.bin
+  IMAGE/factory.bin := \
+    $$(sysupgrade_bin) | check-size $$$$(IMAGE_SIZE) | \
+    elx-header 02020038 8844A2D168B45A2D
+  DEVICE_PACKAGES := \
+        kmod-mt7615e wpad-basic
+endef
+TARGET_DEVICES += edimax_rg21s
+
 define Device/elecom_wrc-1167ghbk2-s
   MTK_SOC := mt7621
   IMAGE_SIZE := 15488k


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list