ramips: add support for ipTIME A6004NS-M
authorSeongUk Moon <antegral@antegral.net>
Fri, 14 Jan 2022 12:54:05 +0000 (21:54 +0900)
committerSungbo Eo <mans0n@gorani.run>
Sat, 15 Jan 2022 11:43:14 +0000 (20:43 +0900)
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 <antegral@antegral.net>
[convert CRLF to LF]
Signed-off-by: Sungbo Eo <mans0n@gorani.run>
target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dts [new file with mode: 0644]
target/linux/ramips/dts/mt7621_iptime_a6004ns-m.dtsi [new file with mode: 0644]
target/linux/ramips/dts/mt7621_iptime_a6ns-m.dts
target/linux/ramips/image/mt7621.mk

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 (file)
index 0000000..8138cc3
--- /dev/null
@@ -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 (file)
index 0000000..a033d7f
--- /dev/null
@@ -0,0 +1,180 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       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 = <KEY_WPS_BUTTON>;
+               };
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+};
+
+&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>;
+       };
+};
index b3efe557e255b914dc1e7064e58a6e4312dcbf95..f83340e64a4091da320b3b627fb91ec32f39986a 100644 (file)
@@ -1,183 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "mt7621.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#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 = <KEY_WPS_BUTTON>;
-               };
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-       };
-};
-
-&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>;
-       };
 };
index 7755fbef81ca55dd73a8c19c920bff39caef66ca..a461c57f1508383680cfe074aba5b9053842e953 100644 (file)
@@ -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