]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
mediatek: filogic: add support for ipTIME AX3000M 16643/head
authorRhnn Hur <hurrhnn@icmp.kr>
Sun, 20 Oct 2024 11:14:28 +0000 (20:14 +0900)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 8 Sep 2025 12:23:37 +0000 (14:23 +0200)
ipTIME AX3000M is an 802.11ax (Wi-Fi 6) router, based on MediaTek
MT7981B. (Filogic 820)

Specifications:
* SoC: MetiaTek MT7981B
* RAM: 256MiB
* Flash: ESMT SPI-NAND F50L1G41LB 128MiB
* Wi-Fi:
  * MediaTek MT7915E: 2.4GHz and 5GHz
* Ethernet: 5x 1GbE
  * Switch: MediaTek MT7531
* USB: 1x 3.0
* UART: J4 (115200 baud)
* LED:
  * PWR: VCC
  * CPU, 2.4G, 5G: GPIO
  * LAN 1-4, WAN: Controlled by Switch

MAC Addresses:
* 2.4G, 5G: B0:XX:XX:04:2A:60 (factory 0x4)
* WAN: B0:XX:XX:04:2A:61 (factory 0x4, +1)
* LAN: B0:XX:XX:04:2A:63 (factory 0x4, +3)

MTD Partitions:
* 0x000000000000-0x000000100000 : "BL2"
* 0x000000100000-0x000000180000 : "u-boot-env"
* 0x000000180000-0x000000380000 : "Factory"
* 0x000000380000-0x000000580000 : "FIP"
* 0x000000580000-0x000007380000 : "ubi"

UBI Partitions (Dynamic):
* id: 0, kernel2
* id: 1, kernel
* id: 2, rootfs
* id: 3, rootfs_data
* id: 4, rootfs2

Installation:
* Upload factory image through the tftp recovery mode.

Notes:
* This device has a dual-boot partition scheme, if installing with the
stock web interface method will flash only on the inactive ubi partitions
which are kernel and rootfs, newly flashed kernel didn't know the proper
rootfs partition so the booted kernel will panic.

Tested-by: Rhnn Hur <hurrhnn@icmp.kr>
Signed-off-by: Rhnn Hur <hurrhnn@icmp.kr>
Link: https://github.com/openwrt/openwrt/pull/16643
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
package/boot/uboot-tools/uboot-envtools/files/mediatek_filogic
target/linux/mediatek/dts/mt7981b-iptime-ax3000m.dts [new file with mode: 0644]
target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
target/linux/mediatek/image/filogic.mk

index d07a3d1dcffbccee9e00d59d3d3860b97f6cb5a6..0a5c6004de9350a1b4cea0160849c1a66b411cae 100644 (file)
@@ -81,7 +81,8 @@ jdcloud,re-cp-03)
                ;;
        esac
        ;;
-comfast,cf-e393ax)
+comfast,cf-e393ax|\
+iptime,ax3000m)
        ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x80000"
        ;;
 cetron,ct3003|\
diff --git a/target/linux/mediatek/dts/mt7981b-iptime-ax3000m.dts b/target/linux/mediatek/dts/mt7981b-iptime-ax3000m.dts
new file mode 100644 (file)
index 0000000..a893fc3
--- /dev/null
@@ -0,0 +1,264 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "mt7981b.dtsi"
+
+/ {
+       model = "ipTIME AX3000M";
+       compatible = "iptime,ax3000m", "mediatek,mt7981";
+
+       aliases {
+               label-mac-device = &gmac0;
+               led-boot = &led_cpu;
+               led-failsafe = &led_cpu;
+               led-running = &led_cpu;
+               led-upgrade = &led_cpu;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+               bootargs-append = " ubi.mtd=ubi rootfstype=squashfs";
+       };
+
+       memory@40000000 {
+               reg = <0 0x40000000 0 0x10000000>;
+               device_type = "memory";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_cpu: cpu {
+                       function = LED_FUNCTION_CPU;
+                       color = <LED_COLOR_ID_AMBER>;
+                       gpios = <&pio 15 GPIO_ACTIVE_LOW>;
+               };
+
+               wlan2g {
+                       function = "LED_FUNCTION_WLAN_2GHZ";
+                       color = <LED_COLOR_ID_AMBER>;
+                       gpios = <&pio 34 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               wlan5g {
+                       function = "LED_FUNCTION_WLAN_5GHZ";
+                       color = <LED_COLOR_ID_AMBER>;
+                       gpios = <&pio 35 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1tpt";
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+};
+
+&pio {
+       nand_pins: spi0-pins {
+               mux {
+                       function = "spi";
+                       groups = "spi0", "spi0_wp_hold";
+               };
+               conf-pu {
+                       pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+                       drive-strength = <MTK_DRIVE_4mA>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
+               };
+               conf-pd {
+                       pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+                       drive-strength = <MTK_DRIVE_4mA>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
+               };
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&eth {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mdio_pins &gbe_led0_pins>;
+
+       status = "okay";
+
+       gmac0: mac@0 {
+               compatible = "mediatek,eth-mac";
+               reg = <0>;
+               phy-mode = "2500base-x";
+
+               nvmem-cells = <&macaddr_factory_4 3>;
+               nvmem-cell-names = "mac-address";
+
+               fixed-link {
+                       speed = <2500>;
+                       full-duplex;
+                       pause;
+               };
+       };
+
+       mac@1 {
+               compatible = "mediatek,eth-mac";
+               reg = <1>;
+               label = "wan";
+               phy-mode = "gmii";
+               phy-handle = <&int_gbe_phy>;
+
+               nvmem-cells = <&macaddr_factory_4 1>;
+               nvmem-cell-names = "mac-address";
+       };
+};
+
+&mdio_bus {
+       switch: switch@1f {
+               compatible = "mediatek,mt7531";
+               reg = <31>;
+               reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               label = "lan4";
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               label = "lan3";
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                               label = "lan2";
+                       };
+
+                       port@3 {
+                               reg = <3>;
+                               label = "lan1";
+                       };
+
+                       port@6 {
+                               reg = <6>;
+                               ethernet = <&gmac0>;
+                               phy-mode = "2500base-x";
+
+                               fixed-link {
+                                       speed = <2500>;
+                                       full-duplex;
+                                       pause;
+                               };
+                       };
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&nand_pins>;
+
+       spi_nand@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+               reg = <0>;
+
+               spi-max-frequency = <52000000>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+
+               mediatek,nmbm;
+               mediatek,bmt-max-ratio = <1>;
+               mediatek,bmt-max-reserved-blocks = <64>;
+               mediatek,bmt-remap-range = <0x000000 0x580000>;
+
+               partitions: partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "BL2";
+                               reg = <0x00 0x100000>;
+                               read-only;
+                       };
+
+                       partition@100000 {
+                               label = "u-boot-env";
+                               reg = <0x100000 0x80000>;
+                       };
+
+                       factory: partition@180000 {
+                               label = "Factory";
+                               reg = <0x180000 0x200000>;
+                               read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       macaddr_factory_4: macaddr@4 {
+                                               compatible = "mac-base";
+                                               reg = <0x4 0x6>;
+                                               #nvmem-cell-cells = <1>;
+                                       };
+                               };
+                       };
+
+                       partition@380000 {
+                               label = "FIP";
+                               reg = <0x380000 0x200000>;
+                               read-only;
+                       };
+
+                       partition@580000 {
+                               label = "ubi";
+                               reg = <0x580000 0x6e00000>;
+                       };
+               };
+       };
+};
+
+&usb_phy {
+       status = "okay";
+};
+
+&xhci {
+       status = "okay";
+};
+
+&wifi {
+       status = "okay";
+
+       band@0 {
+               reg = <0>;
+               nvmem-cells = <&macaddr_factory_4 0>;
+               nvmem-cell-names = "mac-address";
+       };
+
+       band@1 {
+               reg = <1>;
+               nvmem-cells = <&macaddr_factory_4 0>;
+               nvmem-cell-names = "mac-address";
+       };
+};
index c26ccf1d287b64c7f56d6ede23226fd89285b8ce..da0323dae088a222253a3d561cba4fe17cbeba45 100644 (file)
@@ -119,6 +119,7 @@ case "$board" in
                addr=$(mtd_get_mac_binary "Factory" 0x4)
                [ "$PHYNBR" = "1" ] && macaddr_setbit_la $addr > /sys${DEVPATH}/macaddress
                ;;
+       iptime,ax3000m|\
        iptime,ax3000sm)
                addr=$(mtd_get_mac_binary "Factory" 0x4)
                [ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_unsetbit $(macaddr_unsetbit $(macaddr_unsetbit $(macaddr_setbit $addr 26) 25) 27) 28) > \
index c26b46624aba3dad27791f6c4f63a00b96329249..06fad5b2f51eab46bb8072e559876d41e5015e1a 100644 (file)
@@ -1273,6 +1273,26 @@ define Device/iptime_ax3000sm
 endef
 TARGET_DEVICES += iptime_ax3000sm
 
+define Device/iptime_ax3000m
+  DEVICE_VENDOR := ipTIME
+  DEVICE_MODEL := AX3000M
+  DEVICE_DTS := mt7981b-iptime-ax3000m
+  DEVICE_DTS_DIR := ../dts
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  IMAGE_SIZE := 32768k
+  KERNEL := kernel-bin | lzma | \
+           fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  KERNEL_INITRAMFS := kernel-bin | lzma | \
+        fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+  IMAGES := factory.bin sysupgrade.bin
+  IMAGE/factory.bin := sysupgrade-tar | append-metadata | check-size | iptime-crc32 ax3000m
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware
+  SUPPORTED_DEVICES += mediatek,mt7981-spim-snand-rfb
+endef
+TARGET_DEVICES += iptime_ax3000m
+
 define Device/jcg_q30-pro
   DEVICE_VENDOR := JCG
   DEVICE_MODEL := Q30 PRO