From 9c8ccdcdc86c46e8be52f20e3668f67eff94c8c0 Mon Sep 17 00:00:00 2001 From: SeongUk Moon Date: Fri, 14 Jan 2022 21:54:05 +0900 Subject: [PATCH] ramips: add support for ipTIME A6004NS-M ipTIME A6004NS-M is a 2.4/5GHz band AC1900 router, based on MediaTek MT7621A. Specifications: - SoC: MediaTek MT7621A (880MHz, Duel-Core) - RAM: DDR3 256MB - Flash: SPI NOR 16MB (Winbond W25Q128BV) - WiFi: MediaTek MT7615E (2.4GHz, 5GHz) - Ethernet: MediaTek MT7530 (WAN x1, LAN x4, SoC built-in Estimated) - USB: USB 3.0 x1 - UART: [3.3V, TX, RX, GND] (57600 8N1) Installation via web interface: 1. Flash initramfs image using OEM's Firmware Update page. 2. Connect to OpenWrt with an SSH connection to `192.168.1.1`. 3. Perform sysupgrade with sysupgrade image. Revert to stock firmware: 1. Flash stock firmware via OEM's Recovery mode How to use OEM's Recovery mode: 1. Power on the device and connect the shell through UART. 2. Connect to the shell and press the `t` key on the keyboard. 3. Set fixed IP with `192.168.0.2` with subnet mask `255.255.255.0` 4. Flash image via TFTP to `192.168.0.1` Additional Notes: 1. The higher the 5Ghz Frequency, the lower the stability. It is recommended to use less than 5.775Ghz. 2. If the 5Ghz frequency is too high, 5Ghz may not work. 3. A6ns-M use shared dtsi file of A6004NS-M. (reference: /mt7621_iptime_a6004ns-m.dtsi). Signed-off-by: SeongUk Moon [convert CRLF to LF] Signed-off-by: Sungbo Eo --- .../ramips/dts/mt7621_iptime_a6004ns-m.dts | 8 + .../ramips/dts/mt7621_iptime_a6004ns-m.dtsi | 180 ++++++++++++++++++ .../linux/ramips/dts/mt7621_iptime_a6ns-m.dts | 177 +---------------- target/linux/ramips/image/mt7621.mk | 11 ++ 4 files changed, 200 insertions(+), 176 deletions(-) create mode 100644 target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dts create mode 100644 target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dtsi diff --git a/target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dts b/target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dts new file mode 100644 index 0000000000..8138cc31a7 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dts @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7621_iptime_a6004ns-m.dtsi" + +/ { + compatible = "iptime,a6004ns-m", "mediatek,mt7621-soc"; + model = "ipTIME A6004NS-M"; +}; diff --git a/target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dtsi b/target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dtsi new file mode 100644 index 0000000000..a033d7f665 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dtsi @@ -0,0 +1,180 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7621.dtsi" + +#include +#include + +/ { + aliases { + led-boot = &led_cpu; + led-failsafe = &led_cpu; + led-running = &led_cpu; + led-upgrade = &led_cpu; + label-mac-device = &gmac0; + }; + + leds { + compatible = "gpio-leds"; + + usb { + label = "blue:usb"; + gpios = <&gpio 7 GPIO_ACTIVE_LOW>; + trigger-sources = <&xhci_ehci_port1>; + linux,default-trigger = "usbport"; + }; + + wlan5g { + label = "blue:wlan5g"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0radio"; + }; + + wlan2g { + label = "blue:wlan2g"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1radio"; + }; + + led_cpu: cpu { + label = "blue:cpu"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + }; + }; + + keys { + compatible = "gpio-keys"; + + wps { + label = "wps"; + gpios = <&gpio 3 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + reset { + label = "reset"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <80000000>; + m25p,fast-read; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + uboot: partition@0 { + label = "u-boot"; + reg = <0x0 0x20000>; + read-only; + }; + + partition@20000 { + label = "config"; + reg = <0x20000 0x10000>; + read-only; + }; + + factory: partition@30000 { + label = "factory"; + reg = <0x30000 0x10000>; + read-only; + }; + + partition@40000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x40000 0xfc0000>; + }; + }; + }; +}; + +&state_default { + gpio { + groups = "i2c", "uart3", "jtag", "wdt"; + function = "gpio"; + }; +}; + +&gmac0 { + nvmem-cells = <&macaddr_uboot_1fc20>; + nvmem-cell-names = "mac-address"; +}; + +&switch0 { + ports { + port@0 { + status = "okay"; + label = "wan"; + nvmem-cells = <&macaddr_uboot_1fc40>; + nvmem-cell-names = "mac-address"; + }; + + port@1 { + status = "okay"; + label = "lan1"; + }; + + port@2 { + status = "okay"; + label = "lan2"; + }; + + port@3 { + status = "okay"; + label = "lan3"; + }; + + port@4 { + status = "okay"; + label = "lan4"; + }; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x0>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; + +&pcie1 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x8000>; + ieee80211-freq-limit = <2400000 2500000>; + }; +}; + +&uboot { + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_uboot_1fc20: macaddr@1fc20 { + reg = <0x1fc20 0x6>; + }; + + macaddr_uboot_1fc40: macaddr@1fc40 { + reg = <0x1fc40 0x6>; + }; +}; diff --git a/target/linux/ramips/dts/mt7621_iptime_a6ns-m.dts b/target/linux/ramips/dts/mt7621_iptime_a6ns-m.dts index b3efe557e2..f83340e64a 100644 --- a/target/linux/ramips/dts/mt7621_iptime_a6ns-m.dts +++ b/target/linux/ramips/dts/mt7621_iptime_a6ns-m.dts @@ -1,183 +1,8 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT -#include "mt7621.dtsi" - -#include -#include +#include "mt7621_iptime_a6004ns-m.dtsi" / { compatible = "iptime,a6ns-m", "mediatek,mt7621-soc"; model = "ipTIME A6ns-M"; - - aliases { - led-boot = &led_cpu; - led-failsafe = &led_cpu; - led-running = &led_cpu; - led-upgrade = &led_cpu; - label-mac-device = &gmac0; - }; - - leds { - compatible = "gpio-leds"; - - usb { - label = "blue:usb"; - gpios = <&gpio 7 GPIO_ACTIVE_LOW>; - trigger-sources = <&xhci_ehci_port1>; - linux,default-trigger = "usbport"; - }; - - wlan5g { - label = "blue:wlan5g"; - gpios = <&gpio 14 GPIO_ACTIVE_LOW>; - linux,default-trigger = "phy0radio"; - }; - - wlan2g { - label = "blue:wlan2g"; - gpios = <&gpio 17 GPIO_ACTIVE_LOW>; - linux,default-trigger = "phy1radio"; - }; - - led_cpu: cpu { - label = "blue:cpu"; - gpios = <&gpio 18 GPIO_ACTIVE_LOW>; - }; - }; - - keys { - compatible = "gpio-keys"; - - wps { - label = "wps"; - gpios = <&gpio 3 GPIO_ACTIVE_LOW>; - linux,code = ; - }; - - reset { - label = "reset"; - gpios = <&gpio 4 GPIO_ACTIVE_LOW>; - linux,code = ; - }; - }; -}; - -&spi0 { - status = "okay"; - - flash@0 { - compatible = "jedec,spi-nor"; - reg = <0>; - spi-max-frequency = <80000000>; - m25p,fast-read; - - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - uboot: partition@0 { - label = "u-boot"; - reg = <0x0 0x20000>; - read-only; - }; - - partition@20000 { - label = "config"; - reg = <0x20000 0x10000>; - read-only; - }; - - factory: partition@30000 { - label = "factory"; - reg = <0x30000 0x10000>; - read-only; - }; - - partition@40000 { - compatible = "denx,uimage"; - label = "firmware"; - reg = <0x40000 0xfc0000>; - }; - }; - }; -}; - -&state_default { - gpio { - groups = "i2c", "uart3", "jtag", "wdt"; - function = "gpio"; - }; -}; - -&gmac0 { - nvmem-cells = <&macaddr_uboot_1fc20>; - nvmem-cell-names = "mac-address"; -}; - -&switch0 { - ports { - port@0 { - status = "okay"; - label = "wan"; - nvmem-cells = <&macaddr_uboot_1fc40>; - nvmem-cell-names = "mac-address"; - }; - - port@1 { - status = "okay"; - label = "lan1"; - }; - - port@2 { - status = "okay"; - label = "lan2"; - }; - - port@3 { - status = "okay"; - label = "lan3"; - }; - - port@4 { - status = "okay"; - label = "lan4"; - }; - }; -}; - -&pcie { - status = "okay"; -}; - -&pcie0 { - wifi@0,0 { - compatible = "mediatek,mt76"; - reg = <0x0000 0 0 0 0>; - mediatek,mtd-eeprom = <&factory 0x0>; - ieee80211-freq-limit = <5000000 6000000>; - }; -}; - -&pcie1 { - wifi@0,0 { - compatible = "mediatek,mt76"; - reg = <0x0000 0 0 0 0>; - mediatek,mtd-eeprom = <&factory 0x8000>; - ieee80211-freq-limit = <2400000 2500000>; - }; -}; - -&uboot { - compatible = "nvmem-cells"; - #address-cells = <1>; - #size-cells = <1>; - - macaddr_uboot_1fc20: macaddr@1fc20 { - reg = <0x1fc20 0x6>; - }; - - macaddr_uboot_1fc40: macaddr@1fc40 { - reg = <0x1fc40 0x6>; - }; }; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 7755fbef81..a461c57f15 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -785,6 +785,17 @@ define Device/iptime_a3004t endef TARGET_DEVICES += iptime_a3004t +define Device/iptime_a6004ns-m + $(Device/dsa-migration) + IMAGE_SIZE := 16128k + UIMAGE_NAME := a6004nm + DEVICE_VENDOR := ipTIME + DEVICE_MODEL := A6004NS-M + DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware kmod-usb3 \ + kmod-usb-ledtrig-usbport +endef +TARGET_DEVICES += iptime_a6004ns-m + define Device/iptime_a6ns-m $(Device/dsa-migration) IMAGE_SIZE := 16128k -- 2.30.2