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

Christian Lamparter chunkeey at gmail.com
Tue Dec 18 20:00:11 EST 2018


On Monday, December 17, 2018 11:08:00 PM CET Marius Genheimer wrote:
> 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.
initramfs
> 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
Heh, great idea. Maybe this could work for the RT-AC58U too.
 
> 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
> ist the same behavior as in the stock firmware.
  ^ ist. Passiert mir auch gern ;-).

> Signed-off-by: Marius Genheimer <mail at f0wl.cc>
Just a few nitpicks, but it looks really good otherwise.

> ---
>  package/firmware/ipq-wifi/Makefile                 |   2 +
>  package/firmware/ipq-wifi/map-ac2200.bin           | Bin 0 -> 24324 bytes
>  .../ipq40xx/base-files/etc/board.d/02_network      |   8 +
>  .../etc/hotplug.d/firmware/11-ath10k-caldata       |   9 +
>  .../ipq40xx/base-files/lib/upgrade/platform.sh     |   4 +
>  target/linux/ipq40xx/config-4.14                   |   1 +
>  .../arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts  | 311 +++++++++++++++++++++
>  target/linux/ipq40xx/image/Makefile                |  11 +
>  .../patches-4.14/901-arm-boot-add-dts-files.patch  |   3 +-
>  9 files changed, 348 insertions(+), 1 deletion(-)
>  create mode 100644 package/firmware/ipq-wifi/map-ac2200.bin
>  create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
> 
> diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
> index 4b39f970dd..d5d039d93b 100644
> --- a/package/firmware/ipq-wifi/Makefile
> +++ b/package/firmware/ipq-wifi/Makefile
> @@ -54,4 +54,6 @@ endef
>  #$(eval $(call generate-ipq-wifi-package,<devicename>,<filename>,<displayname>))
>  $(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
>  
> +$(eval $(call generate-ipq-wifi-package,map-ac2200,map-ac2200.bin,ASUS MAP-AC2200))
> +
>  $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
> diff --git a/package/firmware/ipq-wifi/map-ac2200.bin b/package/firmware/ipq-wifi/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
> 

I've seen that you have already posted the IPQ4019 boardfile to ath10k
mailing list. +1!

you can also post the QCA9886's boardfile since it likely has an impact
on the QCA9886's performance and regulatory conformance.

> 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 d73914c7c1..de36e28ef9 100755
> --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
> +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
> @@ -15,6 +15,14 @@ case "$board" in
>  8dev,jalapeno)
>  	ucidef_set_interfaces_lan_wan "eth0" "eth1"
>  	;;
> +asus,map-ac2200)
> +	ucidef_set_interfaces_lan_wan "eth1" "eth0"
> +	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"
setting the mac through
target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
is prefered since it simplifies the sharing of configurations between
multiple devices. This is especially important if the devices share the
same network as they could end up with the same MAC.

> +	;;
>  asus,rt-ac58u)
>  	CI_UBIPART=UBI_DEV
>  	wan_mac_addr=$(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 8242fe0eb1..9658b0ac3c 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
>  		;;
> @@ -118,6 +121,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
> @@ -155,6 +161,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/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
> index 610f9bbbdb..69d9175f33 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 0bd9ff7a1d..1b2f64cda5 100644
> --- a/target/linux/ipq40xx/config-4.14
> +++ b/target/linux/ipq40xx/config-4.14
> @@ -263,6 +263,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..05d7226a92
> --- /dev/null
> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
> @@ -0,0 +1,311 @@
It would be great if you could add the right SPDX-License-Identifier at the
top of this file with your prefered licence instead of the current
copyright boiler plate.
> +/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
> + *
> + * Permission to use, copy, modify, and/or distribute this software for any
> + * purpose with or without fee is hereby granted, provided that the above
> + * copyright notice and this permission notice appear in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
> + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
> + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + */
> +#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", "qcom,ipq4019";
> +
> +	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";
> +		};
> +
> +		serial at 78af000 {
I recently backported an upstream patch that added the "blsp1_uart1" label 
to that uart. 

> +			pinctrl-0 = <&serial_pins>;
> +			pinctrl-names = "default";
> +			status = "okay";
> +		};
> +
> +		crypto at 8e3a000 {
> +			status = "okay";
> +		};
> +
> +		watchdog at b017000 {
> +			status = "okay";
> +		};
> +
> +		ess-switch at c000000 {
> +			status = "okay";
> +		};
> +
> +		edma at c080000 {
> +			status = "okay";
> +		};
> +	};
> +
> +	gpio-keys {
If you want, you could rename the node to "keys" to follow the "generic
names recommendation" of the Device Tree V0.2 Spec Section 
"2.2.2 Generic Names Recommendation."
> +		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";
> +		};
> +
> +		pinconf {
> +			pins = "gpio20", "gpio21";
> +			drive-strength = <16>;
> +			bias-disable;
> +		};
you can group the pinmux and pinconf entries together if you want.

> +	};
> +
> +	serial_pins: serial_pinmux {
> +		mux {
> +			pins = "gpio16", "gpio17";
> +			function = "blsp_uart0";
> +			bias-disable;
> +		};
> +	};
> +
> +	nand_pins: nand_pins {
> +		pullups {
> +			pins = "gpio52", "gpio53", "gpio58",
The gpio52 NAND usage is a bit iffy. The MR33's dts has details.
You can leave it as is since there's no data on what's the right
thing to do.

> +				"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 0,0 {
wifi at 1,0 ? (because of the reg property and the device sits at).
And yes, this is wrong in the mr33 and a62 too. I'll fix that in the
next round of dts updates.

> +			compatible = "qcom,ath10k";
> +			status = "okay";
> +			reg = <0x00010000 0 0 0 0>; 
(Just a comment for clarification: 0x00010000 = 0000:01:00.0)

and also you could add:

			qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";

Note: The ath10k driver will fallback to the reference board data files,
if it can't find the exact variant.
> +		};
> +	};
> +};
> +
> +&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 {
If you want, you could rename the node to "led-controller" / "leds-controller"
to follow the "generic names recommendation" of the Device Tree V0.2 Spec
Section  "2.2.2 Generic Names Recommendation.".

But this is really optional (since the node name lp55231 encodes 
additional information.

> +		/* 9-channel RGB LED controller */
> +		compatible = "national,lp5523";
> +		reg = <0x32>;
> +		clock-mode = [01];
> +
> +		led_blue0: blue0 {
> +			chan-name = "blue0";
The chan-name gets used as the LED's label. And the label should
follow upstream Documentation/leds/leds-class.txt's "LED Device Naming"
recommendations: "devicename:colour:function"

(Note: There's also the "label" property which you can use to specify
the name that userspace will deal with)
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		blue1 {
> +			chan-name = "blue1";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		blue2 {
> +			chan-name = "blue2";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		green0 {
> +			chan-name = "green0";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		green1 {
> +			chan-name = "green1";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		green2 {
> +			chan-name = "green2";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		led_red0: red0 {
> +			chan-name = "red0";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		red1 {
> +			chan-name = "red1";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +
> +		red2 {
> +			chan-name = "red2";
> +			led-cur = [fa];
> +			max-cur = [ff];
> +		};
> +	};
> +};
> diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
> index eaf9f68395..3e0c881461 100644
> --- a/target/linux/ipq40xx/image/Makefile
> +++ b/target/linux/ipq40xx/image/Makefile
> @@ -56,6 +56,17 @@ define Device/8dev_jalapeno
>  endef
>  TARGET_DEVICES += 8dev_jalapeno
>  
> +define Device/asus_map-ac2200
> +	$(call Device/FitImageLzma)
> +	DEVICE_DTS := qcom-ipq4019-map-ac2200
> +	BLOCKSIZE := 126976
Hey, that's 126KiB... or the remaining block size of what's left in a
ubi volume. 



More information about the openwrt-devel mailing list