]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
ramips: mt7620: Add support for the devolo WiFi Repeater ac (MT 2767, 2779) 16956/head
authorHugo Monteiro <monteiro.hugo@gmail.com>
Wed, 20 Mar 2024 23:11:47 +0000 (23:11 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Tue, 22 Apr 2025 20:06:28 +0000 (22:06 +0200)
Specification:
    - MT7620A 580 MHz MIPS24KEc
    - 64MB RAM
    - 8MB SPI NOR
    - MediaTek MT7612E 5.0GHz 802.11a/n/ac
    - MediaTek MT7620 2.4GHz 802.11b/g/n
    - 5 LEDs (white)
    - 1 button
    - 1 Gbit port Realtek RTL8211E GbE Phy

Serial Interface:
    - 3 Pins GND, RX, TX
    - Settings: 57600, 8N1

Based on support from edimax_ew-7476rpc/edimax_ew-747x
and netgear_ex3700/netgear_ex3x00_ex61xx

Notes:
 - ATM there is no known way to revert to stock firmware

Flash instruction:
The only known way to flash OpenWrt image is to use tftp in U-Boot, with the
aid of a serial adapter for U-Boot console access:

1. Open the device and connect to the serial port. The device is very similar
   to Edimax 7476RPC. See https://openwrt.org/toh/edimax/ew-7476rpc. No VCC!
2. Configure PC with static IP 192.168.1.2/24 and tftp server and
   connect PC to device using an ethernet cable.
3. Power on the device and, on the serial console, as soon as U-Boot starts
   loading, press "2" to interrupt loading.
4. Enter device ip address 192.168.1.1, PC ip address 192.168.1.2
   and the firmware filename placed on the TFTP server.
5. Device will download file from server, write it to flash and reboot.

Signed-off-by: Hugo Monteiro <monteiro.hugo@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16956
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/ramips/dts/mt7620a_devolo_rac.dts [new file with mode: 0644]
target/linux/ramips/image/mt7620.mk
target/linux/ramips/mt7620/base-files/etc/board.d/02_network

diff --git a/target/linux/ramips/dts/mt7620a_devolo_rac.dts b/target/linux/ramips/dts/mt7620a_devolo_rac.dts
new file mode 100644 (file)
index 0000000..9276ba6
--- /dev/null
@@ -0,0 +1,203 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7620a.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       compatible = "devolo,rac", "ralink,mt7620a-soc";
+       model = "devolo WiFi Repeater ac";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset_wps {
+                       label = "reset_wps";
+                       gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               switch_high {
+                       label = "switch high";
+                       gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_0>;
+                       linux,input-type = <EV_SW>;
+               };
+
+               switch_off {
+                       label = "switch off";
+                       gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_1>;
+                       linux,input-type = <EV_SW>;
+               };
+       };
+
+       leds {
+
+               compatible = "gpio-leds";
+
+               led_power: power {
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_WHITE>;
+                       gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
+               };
+
+               led2 {
+                       function = LED_FUNCTION_WLAN_5GHZ;
+                       color = <LED_COLOR_ID_WHITE>;
+                       function-enumerator = <0>;
+                       gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0radio";
+               };
+
+               led3 {
+                       function = LED_FUNCTION_WLAN_5GHZ;
+                       color = <LED_COLOR_ID_WHITE>;
+                       function-enumerator = <1>;
+                       gpios = <&gpio2 29 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0radio";
+               };
+
+               led4 {
+                       function = LED_FUNCTION_WLAN_2GHZ;
+                       color = <LED_COLOR_ID_WHITE>;
+                       function-enumerator = <0>;
+                       gpios = <&gpio2 30 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1radio";
+               };
+
+               led5 {
+                       function = LED_FUNCTION_WLAN_2GHZ;
+                       color = <LED_COLOR_ID_WHITE>;
+                       function-enumerator = <1>;
+                       gpios = <&gpio2 31 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1radio";
+               };
+       };
+};
+
+&gpio2 {
+       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 {
+                               label = "factory";
+                               reg = <0x40000 0x10000>;
+                               read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       eeprom_factory_0: eeprom@0 {
+                                               reg = <0x0 0x200>;
+                                       };
+
+                                       eeprom_factory_8000: eeprom@8000 {
+                                               reg = <0x8000 0x200>;
+                                       };
+
+                                       macaddr_factory_4: macaddr@4 {
+                                               compatible = "mac-base";
+                                               reg = <0x4 0x6>;
+                                               #nvmem-cell-cells = <1>;
+                                       };
+                               };
+                       };
+
+                       partition@50000 {
+                               compatible = "denx,uimage";
+                               label = "firmware";
+                               reg = <0x50000 0x7b0000>;
+                       };
+               };
+       };
+};
+
+&state_default {
+       gpio {
+               groups = "i2c", "uartf", "nd_sd", "rgmii2";
+               function = "gpio";
+       };
+};
+
+&pinctrl {
+       phy_reset_pins: phy-reset {
+               gpio {
+                       groups = "spi refclk";
+                       function = "gpio";
+               };
+       };
+};
+
+&ethernet {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii1_pins>,<&mdio_pins>;
+
+       nvmem-cells = <&macaddr_factory_4 0>;
+       nvmem-cell-names = "mac-address";
+
+       port@5 {
+               status = "okay";
+               mediatek,fixed-link = <1000 1 1 1>;
+               phy-mode = "rgmii";
+       };
+};
+
+&gsw {
+       mediatek,ephy-base = /bits/ 8 <8>;
+};
+
+&wmac {
+       nvmem-cells = <&eeprom_factory_0>;
+       nvmem-cell-names = "eeprom";
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               ieee80211-freq-limit = <5000000 6000000>;
+               nvmem-cells = <&eeprom_factory_8000>, <&macaddr_factory_4 2>;
+               nvmem-cell-names = "eeprom", "mac-address";
+       };
+};
index a21473311e84367510e168f72ed32c5a9682cd23..79d73cde59fef8c9fab592f2a57f2a6d2bfb5444 100644 (file)
@@ -207,6 +207,15 @@ define Device/comfast_cf-wr800n
 endef
 TARGET_DEVICES += comfast_cf-wr800n
 
+define Device/devolo_rac
+  SOC := mt7620a
+  IMAGE_SIZE := 7872k
+  DEVICE_VENDOR := devolo
+  DEVICE_MODEL := WiFi Repeater ac
+  DEVICE_PACKAGES := kmod-mt76x2 kmod-phy-realtek
+endef
+TARGET_DEVICES += devolo_rac
+
 define Device/dlink_dch-m225
   $(Device/seama)
   SOC := mt7620a
index 57db30b92390b90fea7ee7aec9eb0ddc71948904..9f436a2e8febb5552983ce2280dd2cba355cde51 100644 (file)
@@ -43,6 +43,7 @@ ramips_setup_interfaces()
        alfa-network,tube-e4g|\
        ampedwireless,b1200ex|\
        buffalo,wmr-300|\
+       devolo,rac|\
        dlink,dch-m225|\
        edimax,ew-7476rpc|\
        edimax,ew-7478ac|\