From 663b1a14e59074a23b86237e0b13dc6e78a6e50b Mon Sep 17 00:00:00 2001 From: Maksym Medvedev Date: Fri, 15 Nov 2019 23:21:22 +0100 Subject: [PATCH] ramips: add support for Edimax RA21S 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 [split DTS and take over improvements from RG21S, extend commit message] Signed-off-by: Adrian Schmutzler --- .../linux/ramips/dts/mt7621_edimax_ra21s.dts | 40 ++++++ .../linux/ramips/dts/mt7621_edimax_rg21s.dts | 108 +--------------- .../linux/ramips/dts/mt7621_edimax_rx21s.dtsi | 115 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 14 +++ .../mt7621/base-files/etc/board.d/02_network | 2 + 5 files changed, 172 insertions(+), 107 deletions(-) create mode 100644 target/linux/ramips/dts/mt7621_edimax_ra21s.dts create mode 100644 target/linux/ramips/dts/mt7621_edimax_rx21s.dtsi diff --git a/target/linux/ramips/dts/mt7621_edimax_ra21s.dts b/target/linux/ramips/dts/mt7621_edimax_ra21s.dts new file mode 100644 index 000000000000..ad0eee0d18c9 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_edimax_ra21s.dts @@ -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>; + }; + }; +}; diff --git a/target/linux/ramips/dts/mt7621_edimax_rg21s.dts b/target/linux/ramips/dts/mt7621_edimax_rg21s.dts index ce28e8e04d33..4325e98132d2 100644 --- a/target/linux/ramips/dts/mt7621_edimax_rg21s.dts +++ b/target/linux/ramips/dts/mt7621_edimax_rg21s.dts @@ -1,10 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; -#include "mt7621.dtsi" - -#include -#include +#include "mt7621_edimax_rx21s.dtsi" / { compatible = "edimax,rg21s", "mediatek,mt7621-soc"; @@ -15,27 +12,6 @@ led-failsafe = &led_power; led-running = &led_power; led-upgrade = &led_power; - label-mac-device = ðernet; - }; - - chosen { - bootargs = "console=ttyS0,57600"; - }; - - keys { - compatible = "gpio-keys"; - - reset { - label = "reset"; - gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; - linux,code = ; - }; - - wps { - label = "wps"; - gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; - linux,code = ; - }; }; leds { @@ -62,85 +38,3 @@ }; }; }; - -&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>; - }; -}; - -ðernet { - 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 index 000000000000..31498a5340f9 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_edimax_rx21s.dtsi @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "mt7621.dtsi" + +#include +#include + +/ { + aliases { + label-mac-device = ðernet; + }; + + chosen { + bootargs = "console=ttyS0,57600"; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +&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>; + }; +}; + +ðernet { + 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/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index c0706f79984f..b33c2c5bc0a4 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -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 diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network index a3b9c079a69b..4e8e2cb9ed72 100755 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network @@ -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) -- 2.30.2