ramips: add support for ipTIME AX2004M
ipTIME AX2004M is an 802.11ax (Wi-Fi 6) router, based on MediaTek
MT7621A.
Specification:
* 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 address:
| interface |        MAC        |     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 address:
* stock
  * 0x80010000: FIT image
  * 0x81001000: kernel image -> entry
* OpenWrt
  * 0x80010000: FIT image
  * 0x82000000: uncompressed kernel+relocate image
  * 0x80001000: relocated kernel image -> entry
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@gorani.run>
			
			
This commit is contained in:
		| @@ -295,6 +295,11 @@ define Build/install-dtb | |||||||
| 	) | 	) | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Build/iptime-crc32 | ||||||
|  | 	$(STAGING_DIR_HOST)/bin/iptime-crc32 $(1) $@ $@.new | ||||||
|  | 	mv $@.new $@ | ||||||
|  | endef | ||||||
|  |  | ||||||
| define Build/iptime-naspkg | define Build/iptime-naspkg | ||||||
| 	$(STAGING_DIR_HOST)/bin/iptime-naspkg $(1) $@ $@.new | 	$(STAGING_DIR_HOST)/bin/iptime-naspkg $(1) $@ $@.new | ||||||
| 	mv $@.new $@ | 	mv $@.new $@ | ||||||
|   | |||||||
							
								
								
									
										165
									
								
								target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
									
									
									
									
									
										Normal file
									
								
							| @@ -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@0 { | ||||||
|  | 			label = "u-boot"; | ||||||
|  | 			reg = <0x0 0x80000>; | ||||||
|  | 			read-only; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		partition@80000 { | ||||||
|  | 			label = "config"; | ||||||
|  | 			reg = <0x80000 0x80000>; | ||||||
|  | 			read-only; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		factory: partition@100000 { | ||||||
|  | 			label = "factory"; | ||||||
|  | 			reg = <0x100000 0x80000>; | ||||||
|  | 			read-only; | ||||||
|  |  | ||||||
|  | 			compatible = "nvmem-cells"; | ||||||
|  | 			#address-cells = <1>; | ||||||
|  | 			#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 			macaddr_factory_4: macaddr@4 { | ||||||
|  | 				reg = <0x4 0x6>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		partition@180000 { | ||||||
|  | 			label = "firmware"; | ||||||
|  | 			reg = <0x180000 0x7680000>; | ||||||
|  |  | ||||||
|  | 			compatible = "fixed-partitions"; | ||||||
|  | 			#address-cells = <1>; | ||||||
|  | 			#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 			partition@0 { | ||||||
|  | 				label = "kernel"; | ||||||
|  | 				reg = <0x0 0x400000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@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@0 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 			label = "wan"; | ||||||
|  | 			nvmem-cells = <&macaddr_factory_4>; | ||||||
|  | 			nvmem-cell-names = "mac-address"; | ||||||
|  | 			mac-address-increment = <1>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		port@1 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 			label = "lan4"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		port@2 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 			label = "lan3"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		port@3 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 			label = "lan2"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		port@4 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 			label = "lan1"; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcie { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcie1 { | ||||||
|  | 	wifi@0,0 { | ||||||
|  | 		compatible = "mediatek,mt76"; | ||||||
|  | 		reg = <0x0000 0 0 0 0>; | ||||||
|  | 		mediatek,mtd-eeprom = <&factory 0x0>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
| @@ -817,6 +817,26 @@ define Device/iptime_a8004t | |||||||
| endef | endef | ||||||
| TARGET_DEVICES += iptime_a8004t | 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 | define Device/iptime_t5004 | ||||||
|   $(Device/dsa-migration) |   $(Device/dsa-migration) | ||||||
|   BLOCKSIZE := 128k |   BLOCKSIZE := 128k | ||||||
|   | |||||||
| @@ -25,6 +25,12 @@ case "$board" in | |||||||
| 		[ "$PHYNBR" = "1" ] && \ | 		[ "$PHYNBR" = "1" ] && \ | ||||||
| 			macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress | 			macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress | ||||||
| 		;; | 		;; | ||||||
|  | 	iptime,ax2004m) | ||||||
|  | 		if [ "$PHYNBR" = "1" ]; then | ||||||
|  | 			base_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" 3) | ||||||
|  | 			macaddr_setbit_la "$base_mac" > /sys${DEVPATH}/macaddress | ||||||
|  | 		fi | ||||||
|  | 		;; | ||||||
| 	jcg,q20) | 	jcg,q20) | ||||||
| 		[ "$PHYNBR" = "1" ] && \ | 		[ "$PHYNBR" = "1" ] && \ | ||||||
| 			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0x4)" > /sys${DEVPATH}/macaddress | 			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0x4)" > /sys${DEVPATH}/macaddress | ||||||
|   | |||||||
| @@ -59,6 +59,7 @@ platform_do_upgrade() { | |||||||
| 	dlink,dir-853-a3|\ | 	dlink,dir-853-a3|\ | ||||||
| 	hiwifi,hc5962|\ | 	hiwifi,hc5962|\ | ||||||
| 	iptime,a3004t|\ | 	iptime,a3004t|\ | ||||||
|  | 	iptime,ax2004m|\ | ||||||
| 	iptime,t5004|\ | 	iptime,t5004|\ | ||||||
| 	jcg,q20|\ | 	jcg,q20|\ | ||||||
| 	linksys,e5600|\ | 	linksys,e5600|\ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sungbo Eo
					Sungbo Eo