[openwrt/openwrt] ramips: add support for ipTIME AX2004M

LEDE Commits lede-commits at lists.infradead.org
Fri Feb 11 05:31:47 PST 2022


mans0n pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/37753f34ac68fbd70730aa37a6b8b94ad3215d85

commit 37753f34ac68fbd70730aa37a6b8b94ad3215d85
Author: Sungbo Eo <mans0n at gorani.run>
AuthorDate: Sat Jan 29 23:25:32 2022 +0900

    ramips: add support for ipTIME AX2004M
    
    ipTIME AX2004M is an 802.11ax (Wi-Fi 6) router, based on MediaTek
    MT7621A.
    
    Specifications:
    * SoC: MT7621A
    * RAM: 256 MiB
    * Flash: NAND 128 MiB
    * Wi-Fi:
      * MT7915D: 2.4/5 GHz (DBDC)
    * Ethernet: 5x 1GbE
      * Switch: SoC built-in
    * USB: 1x 3.0
    * UART: J4 (115200 baud)
      * Pinout: [3V3] (TXD) (RXD) (GND)
    
    MAC addresses:
    
    | interface |    MAC address    |     source     | comment
    |-----------|-------------------|----------------|---------
    |       LAN | 58:xx:xx:00:xx:9B |                | [1]
    |       WAN | 58:xx:xx:00:xx:99 |                |
    |   WLAN 2G | 58:xx:xx:00:xx:98 | factory 0x4    |
    |   WLAN 5G | 5A:xx:xx:40:xx:98 |                |
    |           | 58:xx:xx:00:xx:98 | config ethaddr |
    
    [1] Used in this patch as WLAN 5G MAC address with the local bit set
    
    Load addresses:
    * stock
      * 0x80010000: FIT image
      * 0x81001000: kernel image -> entry
    * OpenWrt
      * 0x80010000: FIT image
      * 0x82000000: uncompressed kernel+relocate image
      * 0x80001000: relocated kernel image -> entry
    
    Notes:
    * This device has a dual-boot partition scheme, but this firmware works
      only on boot partition 1. The stock web interface will flash only on the
      inactive boot partition, but the recovery web page will always flash on
      boot partition 1.
    
    Installation via recovery mode:
    1.  Press reset button, power up the device, wait >10s for CPU LED
        to stop blinking.
    2.  Upload recovery image through the recovery web page at 192.168.0.1.
    
    Revert to stock firmware:
    1.  Install stock image via recovery mode.
    
    Signed-off-by: Sungbo Eo <mans0n at gorani.run>
---
 include/image-commands.mk                          |   5 +
 target/linux/ramips/dts/mt7621_iptime_ax2004m.dts  | 165 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  20 +++
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |   6 +
 .../mt7621/base-files/lib/upgrade/platform.sh      |   1 +
 5 files changed, 197 insertions(+)

diff --git a/include/image-commands.mk b/include/image-commands.mk
index eda3fee94b..485d870f05 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -295,6 +295,11 @@ define Build/install-dtb
 	)
 endef
 
+define Build/iptime-crc32
+	$(STAGING_DIR_HOST)/bin/iptime-crc32 $(1) $@ $@.new
+	mv $@.new $@
+endef
+
 define Build/iptime-naspkg
 	$(STAGING_DIR_HOST)/bin/iptime-naspkg $(1) $@ $@.new
 	mv $@.new $@
diff --git a/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts b/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
new file mode 100644
index 0000000000..6da223689c
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
@@ -0,0 +1,165 @@
+// 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>
+
+/ {
+	compatible = "iptime,ax2004m", "mediatek,mt7621-soc";
+	model = "ipTIME AX2004M";
+
+	aliases {
+		led-boot = &led_cpu;
+		led-failsafe = &led_cpu;
+		led-running = &led_cpu;
+		led-upgrade = &led_cpu;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_cpu: cpu {
+			label = "amber:cpu";
+			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan2g {
+			label = "amber:wlan2g";
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0radio";
+		};
+
+		wlan5g {
+			label = "amber:wlan5g";
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1radio";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+};
+
+&nand {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition at 0 {
+			label = "u-boot";
+			reg = <0x0 0x80000>;
+			read-only;
+		};
+
+		partition at 80000 {
+			label = "config";
+			reg = <0x80000 0x80000>;
+			read-only;
+		};
+
+		factory: partition at 100000 {
+			label = "factory";
+			reg = <0x100000 0x80000>;
+			read-only;
+
+			compatible = "nvmem-cells";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			macaddr_factory_4: macaddr at 4 {
+				reg = <0x4 0x6>;
+			};
+		};
+
+		partition at 180000 {
+			label = "firmware";
+			reg = <0x180000 0x7680000>;
+
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "kernel";
+				reg = <0x0 0x400000>;
+			};
+
+			partition at 400000 {
+				label = "ubi";
+				reg = <0x400000 0x7280000>;
+			};
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "i2c", "jtag", "wdt";
+		function = "gpio";
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_4>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <3>;
+};
+
+&switch0 {
+	ports {
+		port at 0 {
+			status = "okay";
+			label = "wan";
+			nvmem-cells = <&macaddr_factory_4>;
+			nvmem-cell-names = "mac-address";
+			mac-address-increment = <1>;
+		};
+
+		port at 1 {
+			status = "okay";
+			label = "lan4";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan3";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 4 {
+			status = "okay";
+			label = "lan1";
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x0>;
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index f229ec1fa7..105f1f5b18 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -817,6 +817,26 @@ define Device/iptime_a8004t
 endef
 TARGET_DEVICES += iptime_a8004t
 
+define Device/iptime_ax2004m
+  $(Device/dsa-migration)
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  KERNEL_SIZE := 4096k
+  IMAGE_SIZE := 121344k
+  UBINIZE_OPTS := -E 5
+  KERNEL_LOADADDR := 0x82000000
+  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  IMAGES += recovery.bin
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \
+	check-size | iptime-crc32 ax2004m
+  DEVICE_VENDOR := ipTIME
+  DEVICE_MODEL := AX2004M
+  DEVICE_PACKAGES := kmod-mt7915e kmod-usb3
+endef
+TARGET_DEVICES += iptime_ax2004m
+
 define Device/iptime_t5004
   $(Device/dsa-migration)
   BLOCKSIZE := 128k
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 242e1e6efe..c5e6b6c89b 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -25,6 +25,12 @@ case "$board" in
 		[ "$PHYNBR" = "1" ] && \
 			macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress
 		;;
+	iptime,ax2004m)
+		if [ "$PHYNBR" = "1" ]; then
+			hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
+			macaddr_setbit_la "$(macaddr_add $hw_mac_addr 3)" > /sys${DEVPATH}/macaddress
+		fi
+		;;
 	jcg,q20)
 		[ "$PHYNBR" = "1" ] && \
 			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0x4)" > /sys${DEVPATH}/macaddress
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index 9575ced1b9..2052ae4446 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -59,6 +59,7 @@ platform_do_upgrade() {
 	dlink,dir-853-a3|\
 	hiwifi,hc5962|\
 	iptime,a3004t|\
+	iptime,ax2004m|\
 	iptime,t5004|\
 	jcg,q20|\
 	linksys,e5600|\



More information about the lede-commits mailing list