[OpenWrt-Devel] [PATCH v2] ipq40xx: add support for ASUS Lyra

Marius Genheimer mail at f0wl.cc
Tue Feb 12 11:19:51 EST 2019


SoC:   Qualcomm IPQ4019 (Dakota) 717 MHz, 4 cores
RAM:   256 MiB (Nanya NT5CC128M16IP-DI)
FLASH: 128 MiB (Macronix NAND)
WiFi0: Qualcomm IPQ4019 b/g/n 2x2
WiFi1: Qualcomm IPQ4019 a/n/ac 2x2
WiFi2: Qualcomm Atheros QCA9886 a/n/ac
BT:    Atheros AR3012
IN:    WPS Button, Reset Button
OUT:   RGB-LED via TI LP5523 9-channel Controller
UART:  Front of Device - 115200 N-8
       Pinout 3.3v - RX - TX - GND (Square is VCC)

Installation:
1. Transfer OpenWRT-initramfs image to the device via SSH to /tmp.
Login credentials are identical to the Web UI.

2. Login to the device via SSH.

3. Flash the initramfs image using

> mtd-write -d linux -i openwrt-image-file

4. Power-cycle the device and wait for OpenWRT to boot.

5. From there flash the OpenWRT-sysupgrade image.

Ethernet-Ports: Although labeled identically, the port next to
the power socket is the LAN port and the other one is WAN. This
is the same behavior as in the stock firmware.

Signed-off-by: Marius Genheimer <mail at f0wl.cc>
---
 package/firmware/ipq-wifi/Makefile                 |   3 +-
 package/firmware/ipq-wifi/board-map-ac2200.bin     | Bin 0 -> 24324 bytes
 .../ipq40xx/base-files/etc/board.d/02_network      |   8 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata       |   9 +
 .../lib/preinit/05_set_iface_mac_ipq40xx.sh        |   5 +
 .../ipq40xx/base-files/lib/upgrade/platform.sh     |   4 +
 target/linux/ipq40xx/config-4.14                   |   1 +
 .../arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts  | 304 +++++++++++++++++++++
 .../arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts  | 304 +++++++++++++++++++++
 target/linux/ipq40xx/image/Makefile                |   9 +
 .../patches-4.14/901-arm-boot-add-dts-files.patch  |   3 +-
 .../patches-4.19/901-arm-boot-add-dts-files.patch  |   3 +-
 12 files changed, 650 insertions(+), 3 deletions(-)
 create mode 100644 package/firmware/ipq-wifi/board-map-ac2200.bin
 create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
 create mode 100644 target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts

diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index cf1ad042bf..7c9def8967 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -17,7 +17,7 @@ endef
 # Please send a mail with your device-specific board files upstream.
 # You can find instructions and examples on the linux-wireless wiki:
 # <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
-ALLWIFIBOARDS:=engenius_eap1300 linksys_ea6350v3
+ALLWIFIBOARDS:=asus_map-ac2200 engenius_eap1300 linksys_ea6350v3
 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
 
 define Package/ipq-wifi-default
@@ -52,6 +52,7 @@ Don't install it for any other device!
 endef
 
 #$(eval $(call generate-ipq-wifi-package,<devicename>,<filename>,<displayname>))
+$(eval $(call generate-ipq-wifi-package,asus_map-ac2200,board-map-ac2200.bin,ASUS MAP-AC2200))
 $(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
 $(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,board-linksys_ea6350v3.bin,Linksys EA6350v3))
 
diff --git a/package/firmware/ipq-wifi/board-map-ac2200.bin b/package/firmware/ipq-wifi/board-map-ac2200.bin
new file mode 100644
index 0000000000000000000000000000000000000000..372936010a4723ee0197dc56cbfd3a193e559552
GIT binary patch
literal 24324
zcmeHPeNa<Z7QYE#tWxELfC%^qNq|HlK%h01SOTP!kBAlp4Z0MlwImk#5)eaI+EGj~
zMZ}MS5Jbx;U#65YuCyvvY`5J}rn|E<?O(RDAG0&<F578$x1HHp-1GAC2!WspM8WXR
z^S*oTx%b?A?(f}%_ul=Pmy!}961Js8N2Nz3ZcfNlprWE81X2=7oDtdxsi2~KV}4;l
zctMdm;*~;mNrZa$#wb&%pg6y5H&K*Cg;(a6sq^>k-<Ys9Yiq=&ge?&XNfJp^6!gb{
zKDf{yH?o<{U?8_c?AUCg at 3kF>f$|Vq#_}SHh=UL>2J)qF*b<Q_hUf~Rn3$M<{rDr2
zah9N8{(L;1N^a1>Y=ny#pH1~^Bu7H`L7>iDn%Zh=dF6z`3y}w9AY!C+OCE1C;w!|6
z4#_g)hDOlH9Z#fVlE+kc4tui2_PEy_7?-$Wlan`;i4<r~kU1pFm#<jikb{lJJR7$8
zFqJg)5zEFb))Cz6x?EqcQK#m_- at DwZtKOZHp8DL4p4OxFW$KqwpS{rwTDdwi^_gEl
z2Cj(0&{)sqBlUaLn{wp$dRyzN3v-mIvK!q*vz*jaDL5RfuL4^f=@7OSjdfnGsos&Z
zAvGLa4_CjEqkv`?TkF9!T`IhBxwWafBqviEWp)U&j_)C*YLJICv96{atnsj2as`xZ
z&+N&v-tO4 at Mw%vSyKj77d%14??vO11^y at vPEy+iPWqx@ry*pc;JIXEh&L3)1*QD>|
zZ}OE7T_~=LD-@{$l%I81zq|RUxO~kkAN5wXY&sTE6}abidr3|5tGrb24I`b!htrBf
zvwRhoE~=YT>ep2T6b at akJQsN=sKh(($wG;amO{XT_0;mGS7P2it5yfB38KF7EjjTW
zYZ1!JDu){)xV>O7nM?+8c60Oa at K|CN*4JH)2l76DYm1O05b)t&2roF8&kN at 9vfY>3
zdrx9D8eNzZ0*#H8mD{!{lci|+ at +C{iuB4(6K93g!1rF;!zl at LjfJWK~;~GyE)7|}l
zrlt&J%b)D!(Va{B;C=+UFFDlEM<ik-p;<x&gz&g)d_x619v2Vv_XBPAHt^*0`9w$1
ztGU0q*leMK;TV>HCt%TdG*(h^@X+D68%|!Jl;#NqMaPmdFrmoIa_s>M8)u8zci5Oe
z?l1ONdf{G}AD)OOiWBc7Vrh7qI87<X<yZ<X!6jnJ9SODp-yq(gjKZTZDLyf_!4i*^
ziUbl$-g^uxHBFgpV#Y3`dgI<>-dF%0AP!I_;YnjjSUR3APFKd at F=H`U93Cf*Q<|=a
zc}0-dCWu(t?GHYiP$L1G)0tSiC2t%0CZ~`&isdhhZOzu_Wwtg~xF at COV9(X3QKC_r
z0Rehx%m9p)c~PQdg#cZk5ug#E5ug#E5ug!R#0adCtipoWFG^m-HnZ1D)?@MPrIet|
zf~E at tBa_djXKja1)5my<5~q!^h%X^Mbyq>aPS%2}?j$I873v4?A_VyXeaGP4sX4r<
zhIiC>;A#$^&m~`egSK#NJP=cSekO%@InP;0wqOu$5a7286v&DA7LskDe~eGDFeHyf
zNYBO?z95a}{FFHtF2#@x$=u}#L%$ml)gly)_!vT5Al~qR&qE~{*b_ZOUna6dzlTKR
zrsU<0Ay%yiw+rg;efb^w>Z|WeIiVAY7S~1Ke!nM&$=nS)5C}1t?n~bVIS)e3_$tU;
zY|0(*<=Qd$#Y}lvXoz4w6S;Fo?$wdIbIL8-cI?XAU8rw7)!f$6+11xSc=h at xpMG)I
z at e1VdE$fr!fK2<KO16&L2{rA3Did|oE~sh$Qz_9=JD`q(IHQN_qx+<-1{aCfo;~A?
z?A$#KXWB0suMGcoCf!Bgm^Ka0I0p;F1I2+#4pNLOFeR=OE0qcqJ06S4aG6-9jCI=c
z^|Zn5GWbe-F`S(&NyakR&q|)fo at eKrC64LN)ZaNOxA#$qYCm7OqrCfQyLk8e{TU1(
z-5+Q)vA}&g;E68}As<$)X_~-TT0!vcXA+T$N5V()?itSF-NSevP91Z$ynBlOu3(S{
z)i1 at n$Kk%&BJms+i{-&u;^yJ*MhQY!?sHK6A1tjNt}R1vauZO3!X0tV$5bC{g1>Fv
z{ZyX^mN^^_A`&I=+<=HgiG$^*K`7VR<~(Gk!cFTy&gtNM$+_vn_1)rI>)UUMa#~B<
zhQE_?+jcEwZEG7HZR_y#wC2Q6wT|bDayyrvv^@)D0itA2*v at H#=@8lqU(gkPOmyjw
z3{$FuyzW~DIv`-8o<1h({eg+ at UUfrbGIzA{x;u*B=z%aFHxHI`LZEx05ug!RbO`L&
zk(ohq?0^3G$A3=d*b}__|9<zEZ@>BGYtSsb`}_a++n>Jw{;yzL2{*eI|DS#u`=0cd
z$zr3(KF7!Z{R3%pCa|`6_mPoeF_FX(;o)nAz`4hrqlK?qYwC`RJ4dsHgDu{@g>FB=
zeV=%HbB%f^vrBojyn8AXm!ZGU+l1_SheED}$!Alz<T`ldXJYM6=G+td9BKC<`qLeQ
z*Y8?CUra99`n*iG-5VG_WvJ9<t0M0W4YwL<w7Dwj at D;-uZK*0*8Zta!?9^*DDrq3`
zf5ood3=<-7IBBTRW~s!Z{l*jeVojz>Y8*6lXf&z}Y54GO3{Bc1RiczjI9$IK7KTjC
zG}>%!_UK2(HhqO=t7^URBmEgoS&Bj`0f&>?*C~e^x57kd^qR3<UkUv_Gu&@{PhX=^
zsbt1seXC}F$_qk2(+GPtJIRoSZ$U_-L&jFaoBATn3&S56FBs~<Im7s|zC}}+k|GQk
zzG^sa3Mq&P>E?(~gkY-YjK>WX`aB59U^t>L)vAmi7|v;mQWB(*qaPbD=&Lo`rT(OY
zD3q8(li{F#k2V7;+w})DTU3z{NQ<^Yl`a*HUNN54muWVq2ndHyZixV;4~JU}<@#K$
zV)QChmTPxu(jd(9fTdiDLv5R(N|Thb+T`#l%)t>^fVcW|NcLPn8YLQ~84z%Vr7^?Q
zX!D{)pm|{5rT9}3x`4{_#$UB6j)&E(-naiu@?lY_e}QN6&CXZf*{J2ewn}w=VE?7W
zlaacBih=$;hO`swejQMJyd%3I`XE=cGUK!E*PG<EAw{cm_5E4rq$h%E*cx4TZkwbI
zuV5Ek?J7MZe at j%x&Kl`apNy~NzwVb?)0@>Eq4Td?k>Ar_^`5*zShK27-<okGdcV*1
zr(YQAE@;|th`ZNk=j|bF&*s*!H+_qYA5>h3tLIg+U#@T2To+sEr}9ksu=nND(zk+&
zd~z=u)#nt)xfNJmcW=2tc7#{zr5Zd}){s;aUgVqk`TJ?d!mC&B@!H<q|5`_Kli(m{
zPjk<{_W1hH1DyOzEo$BK6>DGfPQTbyd^YYdzl at W6wmZKi;aG4vJNMK@^;uaRzubG*
zI}O|4h}H0RvgHFk<!u at 72&?>FU9<~_o;Zzw3m{<iD;$#_%gj1)`~M(;y+DiDz at uN6
zC-wULjV%&9Bt!uJ;1 at W!{NP|-a5nr<*#g;Ep3aG<X!lE<wr4+m42pLDl+(tr0Y7b`
z5wMBCPt#;dGkZUq&Tcm)jKx-b81Ek5e}ljaaG_ZX<?+ngEN$>Mop}E(fL;lWhvQ~#
zmNq)Rx!||(*LySy1twG|uxL8rCp!h6kbngv2cG=0PEjq9(r#Juyd at Z7GToQ$g51js
zF%-bZU;CV(bm7mFj&Ldh1TWqlc=0=$yFPssy!ff(IlDX)-=4D1C+D6R`|<Pc*MWpv
z_QNci;}sU)`O+2~?>?LmTWCCC6}F~8+a3=B_UswY#I>Jnw?w-x);YSRm-*D at z`Msy
OaX<L%gsHhU at BaT@Hv2IE

literal 0
HcmV?d00001

diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index bcc5f4cec9..83c8ba5c38 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -42,6 +42,7 @@ ipq40xx_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0u at eth0" "3:lan" "4:lan"
 		;;
+	asus,map-ac2200|\
 	openmesh,a42|\
 	openmesh,a62)
 		ucidef_set_interfaces_lan_wan "eth1" "eth0"
@@ -57,6 +58,13 @@ ipq40xx_setup_macs()
 	local board="$1"
 
 	case "$board" in
+	asus,map-ac2200)
+		mac_addr=$(mtd_get_mac_binary_ubi Factory 4102)
+		lan_mac_addr=$(macaddr_add "$mac_addr" 3)
+		wan_mac_addr=$(macaddr_add "$mac_addr" 1)
+		ucidef_set_interface_macaddr "lan" "$lan_mac_addr"
+		ucidef_set_interface_macaddr "wan" "$wan_mac_addr"
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
 		wan_mac=$(mtd_get_mac_binary_ubi Factory 20486)
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 69b6c2591c..b18f0a1d83 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -106,6 +106,9 @@ case "$FIRMWARE" in
 	;;
 "ath10k/pre-cal-pci-0000:01:00.0.bin")
 	case "$board" in
+	asus,map-ac2200)
+		ath10kcal_ubi_extract "Factory" 36864 12064
+		;;
 	openmesh,a62)
 		ath10kcal_extract "0:ART" 36864 12064
 		;;
@@ -119,6 +122,9 @@ case "$FIRMWARE" in
 	qcom,ap-dk01.1-c1)
 		ath10kcal_extract "ART" 4096 12064
 		;;
+	asus,map-ac2200)
+		ath10kcal_ubi_extract "Factory" 4096 12064
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
 		ath10kcal_ubi_extract "Factory" 4096 12064
@@ -157,6 +163,9 @@ case "$FIRMWARE" in
 	qcom,ap-dk01.1-c1)
 		ath10kcal_extract "ART" 20480 12064
 		;;
+	asus,map-ac2200)
+		ath10kcal_ubi_extract "Factory" 20480 12064
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
 		ath10kcal_ubi_extract "Factory" 20480 12064
diff --git a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
index 44e81ca366..ce5c1fc4bf 100644
--- a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
+++ b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
@@ -4,6 +4,11 @@
 
 preinit_set_mac_address() {
 	case $(board_name) in
+	asus,map-ac2200)
+		base_mac=$(mtd_get_mac_binary_ubi Factory 4102)
+		ip link set dev eth0 address $(macaddr_add "$base_mac" +1)
+		ip link set dev eth1 address $(macaddr_add "$base_mac" +3)
+		;;
 	meraki,mr33)
 		mac_lan=$(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102)
 		[ -n "$mac_lan" ] && ip link set dev eth0 address "$mac_lan"
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index c5f06ffb3a..f6bc173a76 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -49,6 +49,10 @@ platform_do_upgrade() {
 	8dev,jalapeno)
 		nand_do_upgrade "$ARGV"
 		;;
+	asus,map-ac2200)
+		CI_KERNPART="linux"
+		nand_do_upgrade "$1"
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART="UBI_DEV"
 		CI_KERNPART="linux"
diff --git a/target/linux/ipq40xx/config-4.14 b/target/linux/ipq40xx/config-4.14
index 5ddbcf3df3..c72e693206 100644
--- a/target/linux/ipq40xx/config-4.14
+++ b/target/linux/ipq40xx/config-4.14
@@ -264,6 +264,7 @@ CONFIG_IRQ_DOMAIN=y
 CONFIG_IRQ_DOMAIN_HIERARCHY=y
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_IRQ_WORK=y
+CONFIG_LEDS_LP5523=y
 CONFIG_LEDS_LP5562=y
 CONFIG_LEDS_LP55XX_COMMON=y
 CONFIG_LIBFDT=y
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
new file mode 100644
index 0000000000..bd70330b95
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
@@ -0,0 +1,304 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/dts-v1/;
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "ASUS Lyra MAP-AC2200";
+	compatible = "asus,map-ac2200";
+
+	aliases {
+		led-boot = &led_blue0;
+		led-failsafe = &led_red0;
+		led-running = &led_blue0;
+		led-upgrade = &led_red0;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb2 at 60f8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+		reset {
+			label = "reset";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x0 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x80000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x100000>;
+				read-only;
+			};
+
+			partition at 200000 {
+				label = "CDT";
+				reg = <0x200000 0x80000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "APPSBL";
+				reg = <0x280000 0x140000>;
+				read-only;
+			};
+
+			partition at 3c0000 {
+				label = "APPSBLENV";
+				reg = <0x3c0000 0x40000>;
+				read-only;
+			};
+
+			partition at 400000 {
+				label = "ubi";
+				reg = <0x400000 0x7c00000>;
+			};
+		};
+	};
+};
+
+&tlmm {
+	i2c_0_pins: i2c_0_pinmux {
+		pinmux {
+			function = "blsp_i2c0";
+			pins = "gpio20", "gpio21";
+			drive-strength = <16>;
+			bias-disable;
+		};
+	};
+
+	serial_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = 	"gpio52", "gpio53", "gpio58",
+				"gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins =	"gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&wifi1{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&pcie0 {
+	status = "okay";
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		wifi2: wifi at 1,0 {
+			compatible = "qcom,ath10k";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+			qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+		};
+	};
+};
+
+&usb2_hs_phy {
+	/* Bluetooth module attached via USB */
+	status = "okay";
+};
+
+&blsp1_i2c3 {
+	pinctrl-0 = <&i2c_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	lp55231 at 32 {
+		/* 9-channel RGB LED controller */
+		compatible = "national,lp5523";
+		reg = <0x32>;
+		clock-mode = [01];
+
+		led_blue0: blue0 {
+			chan-name = "blue0";
+			label = "map-ac2200:blue:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue1 {
+			chan-name = "blue1";
+			label = "map-ac2200:blue:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue2 {
+			chan-name = "blue2";
+			label = "map-ac2200:blue:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_green0: green0 {
+			chan-name = "green0";
+			label = "map-ac2200:green:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green1 {
+			chan-name = "green1";
+			label = "map-ac2200:green:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green2 {
+			chan-name = "green2";
+			label = "map-ac2200:green:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_red0: red0 {
+			chan-name = "red0";
+			label = "map-ac2200:red:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red1 {
+			chan-name = "red1";
+			label = "map-ac2200:red:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red2 {
+			chan-name = "red2";
+			label = "map-ac2200:red:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+	};
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
new file mode 100644
index 0000000000..bd70330b95
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
@@ -0,0 +1,304 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/dts-v1/;
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "ASUS Lyra MAP-AC2200";
+	compatible = "asus,map-ac2200";
+
+	aliases {
+		led-boot = &led_blue0;
+		led-failsafe = &led_red0;
+		led-running = &led_blue0;
+		led-upgrade = &led_red0;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb2 at 60f8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+		reset {
+			label = "reset";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x0 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x80000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x100000>;
+				read-only;
+			};
+
+			partition at 200000 {
+				label = "CDT";
+				reg = <0x200000 0x80000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "APPSBL";
+				reg = <0x280000 0x140000>;
+				read-only;
+			};
+
+			partition at 3c0000 {
+				label = "APPSBLENV";
+				reg = <0x3c0000 0x40000>;
+				read-only;
+			};
+
+			partition at 400000 {
+				label = "ubi";
+				reg = <0x400000 0x7c00000>;
+			};
+		};
+	};
+};
+
+&tlmm {
+	i2c_0_pins: i2c_0_pinmux {
+		pinmux {
+			function = "blsp_i2c0";
+			pins = "gpio20", "gpio21";
+			drive-strength = <16>;
+			bias-disable;
+		};
+	};
+
+	serial_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = 	"gpio52", "gpio53", "gpio58",
+				"gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins =	"gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&wifi1{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&pcie0 {
+	status = "okay";
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		wifi2: wifi at 1,0 {
+			compatible = "qcom,ath10k";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+			qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+		};
+	};
+};
+
+&usb2_hs_phy {
+	/* Bluetooth module attached via USB */
+	status = "okay";
+};
+
+&blsp1_i2c3 {
+	pinctrl-0 = <&i2c_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	lp55231 at 32 {
+		/* 9-channel RGB LED controller */
+		compatible = "national,lp5523";
+		reg = <0x32>;
+		clock-mode = [01];
+
+		led_blue0: blue0 {
+			chan-name = "blue0";
+			label = "map-ac2200:blue:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue1 {
+			chan-name = "blue1";
+			label = "map-ac2200:blue:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue2 {
+			chan-name = "blue2";
+			label = "map-ac2200:blue:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_green0: green0 {
+			chan-name = "green0";
+			label = "map-ac2200:green:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green1 {
+			chan-name = "green1";
+			label = "map-ac2200:green:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green2 {
+			chan-name = "green2";
+			label = "map-ac2200:green:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_red0: red0 {
+			chan-name = "red0";
+			label = "map-ac2200:red:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red1 {
+			chan-name = "red1";
+			label = "map-ac2200:red:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red2 {
+			chan-name = "red2";
+			label = "map-ac2200:red:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+	};
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index a670380ab3..31468fd758 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -62,6 +62,15 @@ define Device/8dev_jalapeno
 endef
 TARGET_DEVICES += 8dev_jalapeno
 
+define Device/asus_map-ac2200
+	$(call Device/FitImageLzma)
+	DEVICE_DTS := qcom-ipq4019-map-ac2200
+	DEVICE_TITLE := ASUS Lyra MAP-AC2200
+	IMAGES := sysupgrade.bin
+	DEVICE_PACKAGES := ipq-wifi-asus_map-ac2200 ath10k-firmware-qca9888-ct kmod-ath3k
+endef
+TARGET_DEVICES += asus_map-ac2200
+
 define Device/asus_rt-ac58u
 	$(call Device/FitImageLzma)
 	DEVICE_DTS := qcom-ipq4018-rt-ac58u
diff --git a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
index e0619a64dd..20ea3a8449 100644
--- a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,22 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,23 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -27,6 +27,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk01.1-c1.dtb \
 +	qcom-ipq4019-a62.dtb \
 +	qcom-ipq4019-ap.dk04.1-c1.dtb \
++	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
 +	qcom-ipq4029-mr33.dtb \
diff --git a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
index d0f892bc48..f3472b32c0 100644
--- a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,25 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,26 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -30,6 +30,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk07.1-c1.dtb \
  	qcom-ipq4019-ap.dk07.1-c2.dtb \
 +	qcom-ipq4019-a62.dtb \
++	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
 +	qcom-ipq4029-mr33.dtb \
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list