diff mbox series

[OpenWrt-Devel,v6] ramips: add support for Asus RT-AC85P

Message ID dc2bbddc-93d4-7fa0-7853-87dde39b4b30@birger-koblitz.de
State Superseded
Headers show
Series [OpenWrt-Devel,v6] ramips: add support for Asus RT-AC85P | expand

Commit Message

Birger Koblitz Sept. 14, 2019, 8:52 a.m. UTC
ramips: add support for Asus RT-AC85P

SoC:	MediaTek MT7621AT dual-core @ 880MHz
RAM:	256M (Winbond W632GG6KB-1)
FLASH:	128MB (Macronix MX30LF1G18AC-TI)
WiFi:	- 2.4GHz MediaTek MT7615N bgn
	- 5GHz MediaTek MT7615N nac
Switch: SoC integrated Gigabit Switch (4 x LAN, 1 x WAN)
USB:	1 x USB 3.1 (Gen 1)
BTN:	Reset, WPS
LED:	- Power (blue)
	- 5Ghz (blue)
	- 2.4GHz (blue)
	- Internet (blue)
	- 4x LAN (blue)
	(LAN/WAN leds are not controllable by GPIOs)
UART: 	UART is present as Pads marked J4 on the PCB.
	3.3V - TX - RX - GND / 57600-8N1
	3.3V is the square pad
MAC:	The MAC address on the router-label matches the MAC of
	the 2.4 GHz WiFi.
	LAN and WAN MAC are identical: MAC_LABEL+4
	5 GHz WiFi MAC: also MAC_LABEL+4
	

Installation
------------
Via U-Boot tftpd:
Switch on device, within 2s press reset button and keep pressed
until power LED starts blinking slowly.
Upload factory image via tftp put, the router's ip is 192.168.1.1
and expects the client on 192.168.1.75.

The images also work on the Asus RT-AC65P models as tested by Gabor.

Signed-off-by: Birger Koblitz <mail@birger-koblitz.de>
Tested-by: Gabor Varga <vargagab@gmail.com>

---

v2: Corrected sorting of entries in 02_network
    Model name corrected in .dts
    Whitespace fixes in .dts
    wifi0/1 labels added to wifi nodes in .dts
    Device name capitalized in mt7621.mk

v3: Added firmware backup to firmware2 partition before sysupgrade
    Corrected modules included in image

v4: Corrected MT7615N PCI IDs

v5: Fixed indentation in platform.sh

v6: Rebased to latest master

Comments

Adrian Schmutzler Sept. 15, 2019, 10:31 a.m. UTC | #1
Hi,

see additions to the newer-ending-story below.

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org]
> On Behalf Of Birger Koblitz
> Sent: Samstag, 14. September 2019 10:52
> To: openwrt-devel@lists.openwrt.org
> Subject: [OpenWrt-Devel] [PATCH v6] ramips: add support for Asus RT-
> AC85P
> 
> ramips: add support for Asus RT-AC85P
> 
> SoC:	MediaTek MT7621AT dual-core @ 880MHz
> RAM:	256M (Winbond W632GG6KB-1)
> FLASH:	128MB (Macronix MX30LF1G18AC-TI)
> WiFi:	- 2.4GHz MediaTek MT7615N bgn
> 	- 5GHz MediaTek MT7615N nac
> Switch: SoC integrated Gigabit Switch (4 x LAN, 1 x WAN)
> USB:	1 x USB 3.1 (Gen 1)
> BTN:	Reset, WPS
> LED:	- Power (blue)
> 	- 5Ghz (blue)
> 	- 2.4GHz (blue)
> 	- Internet (blue)
> 	- 4x LAN (blue)
> 	(LAN/WAN leds are not controllable by GPIOs)
> UART: 	UART is present as Pads marked J4 on the PCB.
> 	3.3V - TX - RX - GND / 57600-8N1
> 	3.3V is the square pad
> MAC:	The MAC address on the router-label matches the MAC of
> 	the 2.4 GHz WiFi.
> 	LAN and WAN MAC are identical: MAC_LABEL+4
> 	5 GHz WiFi MAC: also MAC_LABEL+4
> 
> 
> Installation
> ------------
> Via U-Boot tftpd:
> Switch on device, within 2s press reset button and keep pressed until power
> LED starts blinking slowly.
> Upload factory image via tftp put, the router's ip is 192.168.1.1 and expects
> the client on 192.168.1.75.
> 
> The images also work on the Asus RT-AC65P models as tested by Gabor.
> 
> Signed-off-by: Birger Koblitz <mail@birger-koblitz.de>
> Tested-by: Gabor Varga <vargagab@gmail.com>
> 
> ---
> 
> v2: Corrected sorting of entries in 02_network
>     Model name corrected in .dts
>     Whitespace fixes in .dts
>     wifi0/1 labels added to wifi nodes in .dts
>     Device name capitalized in mt7621.mk
> 
> v3: Added firmware backup to firmware2 partition before sysupgrade
>     Corrected modules included in image
> 
> v4: Corrected MT7615N PCI IDs
> 
> v5: Fixed indentation in platform.sh
> 
> v6: Rebased to latest master
> 
> 
> diff --git a/target/linux/ramips/base-files/etc/board.d/02_network
> b/target/linux/ramips/base-files/etc/board.d/02_network
> index b4634e0928..80e6a91c88 100755
> --- a/target/linux/ramips/base-files/etc/board.d/02_network
> +++ b/target/linux/ramips/base-files/etc/board.d/02_network
> @@ -230,6 +230,18 @@ ramips_setup_interfaces()
>  		ucidef_add_switch "switch0" \
>  			"0:lan" "1:wan" "6@eth0"
>  		;;
> +	asus,rt-ac85p|\
> +	dlink,dir-860l-b1|\
> +	elecom,wrc-1167ghbk2-s|\
> +	elecom,wrc-1900gst|\
> +	elecom,wrc-2533gst|\
> +	huawei,hg255d|\
> +	iodata,wn-ax1167gr|\
> +	iodata,wn-gx300gr|\
> +	iptime,a604m)
> +		ucidef_add_switch "switch0" \
> +			"1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0:wan"
> "6@eth0"
> +		;;
>  	asus,rt-n15|\
>  	belkin,f9k1109v1|\
>  	sitecom,wl-351)
> @@ -297,17 +309,6 @@ ramips_setup_interfaces()
>  		ucidef_add_switch "switch0" \
>  			"0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan:5"
> "6@eth0"
>  		;;
> -	dlink,dir-860l-b1|\
> -	elecom,wrc-1167ghbk2-s|\
> -	elecom,wrc-1900gst|\
> -	elecom,wrc-2533gst|\
> -	huawei,hg255d|\
> -	iodata,wn-ax1167gr|\
> -	iodata,wn-gx300gr|\
> -	iptime,a604m)
> -		ucidef_add_switch "switch0" \
> -			"1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0:wan"
> "6@eth0"
> -		;;
>  	dlink,dwr-118-a1)
>  		ucidef_add_switch "switch0" \
>  			"1:lan:2" "2:lan:3" "3:lan:1" "4:lan:0" "5:wan"
> "6@eth0"
> @@ -551,6 +552,9 @@ ramips_setup_macs()
>  	zbtlink,zbt-we3526)
>  		wan_mac=$(mtd_get_mac_binary factory 0xe006)
>  		;;
> +	asus,rt-ac85p)
> +		wan_mac=$(mtd_get_mac_ascii u-boot-env et1macaddr)
> +		;;
>  	asus,rt-n56u)
>  		lan_mac=$(macaddr_setbit_la "$(cat
> /sys/class/net/eth0/address)")
>  		wan_mac=$(mtd_get_mac_binary factory 0x8004) diff --git
> a/target/linux/ramips/base-files/lib/upgrade/platform.sh
> b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> index 9889079db9..a62ded4b9d 100755
> --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> @@ -18,9 +18,16 @@ platform_do_upgrade() {
>  	mikrotik,rbm33g)
>  		[ -z "$(rootfs_type)" ] && mtd erase firmware
>  		;;
> +	asus,rt-ac85p)
> +		echo "Backing up firmware"
> +		dd if=/dev/mtd4 bs=1024 count=4096  >
> /tmp/backup_firmware.bin
> +		dd if=/dev/mtd5 bs=1024 count=52224 >>
> /tmp/backup_firmware.bin
> +		mtd -e firmware2 write /tmp/backup_firmware.bin
> firmware2
> +		;;
>  	esac
> 
>  	case "$board" in
> +	asus,rt-ac85p|\
>  	hiwifi,hc5962|\
>  	netgear,r6220|\
>  	netgear,r6260|\
> diff --git a/target/linux/ramips/dts/mt7621_asus_rt-ac85p.dts
> b/target/linux/ramips/dts/mt7621_asus_rt-ac85p.dts
> new file mode 100644
> index 0000000000..94e26ea408
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7621_asus_rt-ac85p.dts
> @@ -0,0 +1,164 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/;
> +
> +#include "mt7621.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> +	compatible = "asus,rt-ac85p", "mediatek,mt7621-soc";
> +	model = "Asus RT-AC85P";
> +
> +	aliases {
> +		led-boot = &led_power;
> +		led-failsafe = &led_power;
> +		led-running = &led_power;
> +		led-upgrade = &led_power;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,57600";
> +	};
> +
> +	palmbus: palmbus@1E000000 {
> +		i2c@900 {
> +			status = "okay";
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +
> +		reset {
> +			label = "reset";
> +			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_RESTART>;
> +		};
> +
> +		wps {
> +			label = "wps";
> +			gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_WPS_BUTTON>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		led_power: power {
> +			label = "rt-ac85p:blue:power";
> +			gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "phy0tpt";
> +		};
> +		wlan2g {
> +			label = "rt-ac85p:blue:wlan2g";
> +			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "phy0radio";
> +		};
> +
> +		wlan5g {
> +			label = "rt-ac85p:blue:wlan5g";
> +			gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "phy1radio";
> +		};
> +	};
> +};
> +
> +&sdhci {
> +	status = "okay";
> +};
> +
> +&nand {
> +	status = "okay";
> +
> +	partitions {
> +		compatible = "fixed-partitions";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		partition@0 {
> +			label = "u-boot";
> +			reg = <0x0 0xe0000>;
> +			read-only;
> +		};
> +
> +		partition@e0000 {
> +			label = "u-boot-env";
> +			reg = <0xe0000 0x100000>;
> +			read-only;
> +		};
> +
> +		factory: partition@1e0000 {
> +			label = "factory";
> +			reg = <0x1e0000 0x100000>;
> +			read-only;
> +		};
> +
> +		factory2: partition@2e0000 {
> +			label = "factory2";
> +			reg = <0x2e0000 0x100000>;
> +			read-only;
> +		};
> +
> +		partition@3e0000 {
> +			label = "kernel";
> +			reg = <0x3e0000 0x400000>;
> +		};
> +
> +		partition@7e0000 {
> +			label = "ubi";
> +			reg = <0x7e0000 0x2e00000>;
> +		};
> +
> +		partition@35e0000 {
> +			label = "firmware2";
> +			reg = <0x35e0000 0x3200000>;
> +		};
> +	};
> +};
> +
> +&pcie {
> +	status = "okay";
> +};
> +
> +&pcie0 {
> +	wifi0: wifi@0,0 {
> +		compatible = "pci14c3,7615";
> +		reg = <0x0000 0 0 0 0>;
> +		mediatek,mtd-eeprom = <&factory 0x0000>;
> +		ieee80211-freq-limit = <2400000 2500000>;
> +		mtd-mac-address = <&factory 0x4>;

With mtd-eeprom reading from 0x0, the MAC address at 0x4 should be read by default. So, you should get the same result with the mtd-mac-address line removed.

> +	};
> +};
> +
> +&pcie1 {
> +	wifi1: wifi@0,0 {
> +		compatible = "pci14c3,7615";
> +		reg = <0x0000 0 0 0 0>;
> +		mediatek,mtd-eeprom = <&factory 0x8000>;
> +		ieee80211-freq-limit = <5000000 6000000>;
> +		mtd-mac-address = <&factory 0x8004>;

See above: address is mtd-eeprom +4, so try to remove it.

> +	};
> +};
> +
> +&ethernet {
> +	mtd-mac-address = <&factory 0xe000>;
> +	mediatek,portmap = "wllll";
> +	port@5 {
> +		status = "disabled";
> +	};
> +};
> +
> +&i2c {
> +    status = "disabled";

Indent is wrong here.

Best

Adrian

> +};
> +
> +&pinctrl {
> +	state_default: pinctrl0 {
> +		gpio {
> +			ralink,group = "uart2", "uart3", "i2c";
> +			ralink,function = "gpio";
> +		};
> +	};
> +};
> diff --git a/target/linux/ramips/image/mt7621.mk
> b/target/linux/ramips/image/mt7621.mk
> index 986fe5e2f8..79d14a5954 100644
> --- a/target/linux/ramips/image/mt7621.mk
> +++ b/target/linux/ramips/image/mt7621.mk
> @@ -115,6 +115,22 @@ define Device/asus_rt-ac57u  endef
> TARGET_DEVICES += asus_rt-ac57u
> 
> +define Device/asus_rt-ac85p
> +  MTK_SOC := mt7621
> +  DEVICE_VENDOR := ASUS
> +  DEVICE_MODEL := RT-AC85P
> +  IMAGE_SIZE := 51200k
> +  UBINIZE_OPTS := -E 5
> +  BLOCKSIZE := 128k
> +  PAGESIZE := 2048
> +  KERNEL_SIZE := 4096k
> +  IMAGES += factory.bin
> +  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
> +  IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) |
> +append-ubi | check-size $$$$(IMAGE_SIZE)
> +  DEVICE_PACKAGES := kmod-usb3 kmod-mt7615e wpad-basic uboot-
> envtools
> +endef TARGET_DEVICES += asus_rt-ac85p
> +
>  define Device/buffalo_wsr-1166dhp
>    MTK_SOC := mt7621
>    IMAGE/sysupgrade.bin := trx | pad-rootfs | append-metadata diff --git
> a/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-nand-
> support.patch b/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-
> nand-support.patch
> index 03b2b36db9..3c6a59b863 100644
> --- a/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-nand-
> support.patch
> +++ b/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-nand-
> support.
> +++ patch
> @@ -4256,7 +4256,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
> +#endif /* __NAND_DEF_H__ */
>  --- /dev/null
>  +++ b/drivers/mtd/nand/nand_device_list.h
> -@@ -0,0 +1,59 @@
> +@@ -0,0 +1,60 @@
>  +/* Copyright Statement:
>  + *
>  + * This software/firmware and related documentation ("MediaTek
> Software") are @@ -4308,6 +4308,7 @@ Signed-off-by: John Crispin
> <blogic@openwrt.org>
>  +	{0xC8DC, 0x909554, 5, 8, 512, 128, 2048, 64, 0x30C77fff, "F59L4G81A",
> 0},
>  +	{0xECD3, 0x519558, 5, 8, 1024, 128, 2048, 64, 0x44333, "K9K8G8000",
> 0},
>  +    {0xC2F1, 0x801DC2, 4, 8, 128, 128, 2048, 64, 0x30C77fff, "MX30LF1G08AA",
> 0},
> ++    {0xC2F1, 0x809502, 4, 8, 128, 128, 2048, 64, 0x30C77fff,
> ++ "MX30LF1G18AC", 0},
>  +    {0x98D3, 0x902676, 5, 8, 1024, 256, 4096, 224, 0x00C25332,
> "TC58NVG3S0F", 0},
>  +    {0x01DA, 0x909546, 5, 8, 256, 128, 2048, 128, 0x30C77fff,
> "S34ML02G200TF", 0},
>  +    {0x01DC, 0x909556, 5, 8, 512, 128, 2048, 128, 0x30C77fff,
> "S34ML04G200TF", 0},
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Birger Koblitz Sept. 15, 2019, 2:14 p.m. UTC | #2
On 15.09.19 12:31, mail@adrianschmutzler.de wrote:
> Hi,
> 
> see additions to the newer-ending-story below.
Well, at least in fiction it made for an excellent book. Not sure in engineering never-ending stories are so great.



>> +&pcie0 {
>> +	wifi0: wifi@0,0 {
>> +		compatible = "pci14c3,7615";
>> +		reg = <0x0000 0 0 0 0>;
>> +		mediatek,mtd-eeprom = <&factory 0x0000>;
>> +		ieee80211-freq-limit = <2400000 2500000>;
>> +		mtd-mac-address = <&factory 0x4>;
> 
> With mtd-eeprom reading from 0x0, the MAC address at 0x4 should be read by default. So, you should get the same result with the mtd-mac-address line removed.
Indeed, this works, I get the correct MAC address by default.

> 
>> +	};
>> +};
>> +
>> +&pcie1 {
>> +	wifi1: wifi@0,0 {
>> +		compatible = "pci14c3,7615";
>> +		reg = <0x0000 0 0 0 0>;
>> +		mediatek,mtd-eeprom = <&factory 0x8000>;
>> +		ieee80211-freq-limit = <5000000 6000000>;
>> +		mtd-mac-address = <&factory 0x8004>;
> 
> See above: address is mtd-eeprom +4, so try to remove it.
Here as well.


>> +
>> +&i2c {
>> +    status = "disabled";
> 
> Indent is wrong here.
Oops.

> 
> Best
> 
> Adrian
> 

will send a v7.

Best,
  Birger
diff mbox series

Patch

diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index b4634e0928..80e6a91c88 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -230,6 +230,18 @@  ramips_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0:lan" "1:wan" "6@eth0"
 		;;
+	asus,rt-ac85p|\
+	dlink,dir-860l-b1|\
+	elecom,wrc-1167ghbk2-s|\
+	elecom,wrc-1900gst|\
+	elecom,wrc-2533gst|\
+	huawei,hg255d|\
+	iodata,wn-ax1167gr|\
+	iodata,wn-gx300gr|\
+	iptime,a604m)
+		ucidef_add_switch "switch0" \
+			"1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0:wan" "6@eth0"
+		;;
 	asus,rt-n15|\
 	belkin,f9k1109v1|\
 	sitecom,wl-351)
@@ -297,17 +309,6 @@  ramips_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan:5" "6@eth0"
 		;;
-	dlink,dir-860l-b1|\
-	elecom,wrc-1167ghbk2-s|\
-	elecom,wrc-1900gst|\
-	elecom,wrc-2533gst|\
-	huawei,hg255d|\
-	iodata,wn-ax1167gr|\
-	iodata,wn-gx300gr|\
-	iptime,a604m)
-		ucidef_add_switch "switch0" \
-			"1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0:wan" "6@eth0"
-		;;
 	dlink,dwr-118-a1)
 		ucidef_add_switch "switch0" \
 			"1:lan:2" "2:lan:3" "3:lan:1" "4:lan:0" "5:wan" "6@eth0"
@@ -551,6 +552,9 @@  ramips_setup_macs()
 	zbtlink,zbt-we3526)
 		wan_mac=$(mtd_get_mac_binary factory 0xe006)
 		;;
+	asus,rt-ac85p)
+		wan_mac=$(mtd_get_mac_ascii u-boot-env et1macaddr)
+		;;
 	asus,rt-n56u)
 		lan_mac=$(macaddr_setbit_la "$(cat /sys/class/net/eth0/address)")
 		wan_mac=$(mtd_get_mac_binary factory 0x8004)
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index 9889079db9..a62ded4b9d 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -18,9 +18,16 @@  platform_do_upgrade() {
 	mikrotik,rbm33g)
 		[ -z "$(rootfs_type)" ] && mtd erase firmware
 		;;
+	asus,rt-ac85p)
+		echo "Backing up firmware"
+		dd if=/dev/mtd4 bs=1024 count=4096  > /tmp/backup_firmware.bin
+		dd if=/dev/mtd5 bs=1024 count=52224 >> /tmp/backup_firmware.bin
+		mtd -e firmware2 write /tmp/backup_firmware.bin firmware2
+		;;
 	esac

 	case "$board" in
+	asus,rt-ac85p|\
 	hiwifi,hc5962|\
 	netgear,r6220|\
 	netgear,r6260|\
diff --git a/target/linux/ramips/dts/mt7621_asus_rt-ac85p.dts b/target/linux/ramips/dts/mt7621_asus_rt-ac85p.dts
new file mode 100644
index 0000000000..94e26ea408
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_asus_rt-ac85p.dts
@@ -0,0 +1,164 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "asus,rt-ac85p", "mediatek,mt7621-soc";
+	model = "Asus RT-AC85P";
+
+	aliases {
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,57600";
+	};
+
+	palmbus: palmbus@1E000000 {
+		i2c@900 {
+			status = "okay";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power: power {
+			label = "rt-ac85p:blue:power";
+			gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+		wlan2g {
+			label = "rt-ac85p:blue:wlan2g";
+			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0radio";
+		};
+
+		wlan5g {
+			label = "rt-ac85p:blue:wlan5g";
+			gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1radio";
+		};
+	};
+};
+
+&sdhci {
+	status = "okay";
+};
+
+&nand {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition@0 {
+			label = "u-boot";
+			reg = <0x0 0xe0000>;
+			read-only;
+		};
+
+		partition@e0000 {
+			label = "u-boot-env";
+			reg = <0xe0000 0x100000>;
+			read-only;
+		};
+
+		factory: partition@1e0000 {
+			label = "factory";
+			reg = <0x1e0000 0x100000>;
+			read-only;
+		};
+
+		factory2: partition@2e0000 {
+			label = "factory2";
+			reg = <0x2e0000 0x100000>;
+			read-only;
+		};
+
+		partition@3e0000 {
+			label = "kernel";
+			reg = <0x3e0000 0x400000>;
+		};
+
+		partition@7e0000 {
+			label = "ubi";
+			reg = <0x7e0000 0x2e00000>;
+		};
+
+		partition@35e0000 {
+			label = "firmware2";
+			reg = <0x35e0000 0x3200000>;
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie0 {
+	wifi0: wifi@0,0 {
+		compatible = "pci14c3,7615";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x0000>;
+		ieee80211-freq-limit = <2400000 2500000>;
+		mtd-mac-address = <&factory 0x4>;
+	};
+};
+
+&pcie1 {
+	wifi1: wifi@0,0 {
+		compatible = "pci14c3,7615";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x8000>;
+		ieee80211-freq-limit = <5000000 6000000>;
+		mtd-mac-address = <&factory 0x8004>;
+	};
+};
+
+&ethernet {
+	mtd-mac-address = <&factory 0xe000>;
+	mediatek,portmap = "wllll";
+	port@5 {
+		status = "disabled";
+	};
+};
+
+&i2c {
+    status = "disabled";
+};
+
+&pinctrl {
+	state_default: pinctrl0 {
+		gpio {
+			ralink,group = "uart2", "uart3", "i2c";
+			ralink,function = "gpio";
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 986fe5e2f8..79d14a5954 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -115,6 +115,22 @@  define Device/asus_rt-ac57u
 endef
 TARGET_DEVICES += asus_rt-ac57u

+define Device/asus_rt-ac85p
+  MTK_SOC := mt7621
+  DEVICE_VENDOR := ASUS
+  DEVICE_MODEL := RT-AC85P
+  IMAGE_SIZE := 51200k
+  UBINIZE_OPTS := -E 5
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  KERNEL_SIZE := 4096k
+  IMAGES += factory.bin
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | check-size $$$$(IMAGE_SIZE)
+  DEVICE_PACKAGES := kmod-usb3 kmod-mt7615e wpad-basic uboot-envtools
+endef
+TARGET_DEVICES += asus_rt-ac85p
+
 define Device/buffalo_wsr-1166dhp
   MTK_SOC := mt7621
   IMAGE/sysupgrade.bin := trx | pad-rootfs | append-metadata
diff --git a/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-nand-support.patch b/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-nand-support.patch
index 03b2b36db9..3c6a59b863 100644
--- a/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-nand-support.patch
+++ b/target/linux/ramips/patches-4.14/0039-mtd-add-mt7621-nand-support.patch
@@ -4256,7 +4256,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
 +#endif /* __NAND_DEF_H__ */
 --- /dev/null
 +++ b/drivers/mtd/nand/nand_device_list.h
-@@ -0,0 +1,59 @@
+@@ -0,0 +1,60 @@
 +/* Copyright Statement:
 + *
 + * This software/firmware and related documentation ("MediaTek Software") are
@@ -4308,6 +4308,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
 +	{0xC8DC, 0x909554, 5, 8, 512, 128, 2048, 64, 0x30C77fff, "F59L4G81A", 0},
 +	{0xECD3, 0x519558, 5, 8, 1024, 128, 2048, 64, 0x44333, "K9K8G8000", 0},
 +    {0xC2F1, 0x801DC2, 4, 8, 128, 128, 2048, 64, 0x30C77fff, "MX30LF1G08AA", 0},
++    {0xC2F1, 0x809502, 4, 8, 128, 128, 2048, 64, 0x30C77fff, "MX30LF1G18AC", 0},
 +    {0x98D3, 0x902676, 5, 8, 1024, 256, 4096, 224, 0x00C25332, "TC58NVG3S0F", 0},
 +    {0x01DA, 0x909546, 5, 8, 256, 128, 2048, 128, 0x30C77fff, "S34ML02G200TF", 0},
 +    {0x01DC, 0x909556, 5, 8, 512, 128, 2048, 128, 0x30C77fff, "S34ML04G200TF", 0},