From 50537e5474e08619f1279880318e5557a1d06b14 Mon Sep 17 00:00:00 2001 From: Sven Eckelmann Date: Sun, 22 Nov 2020 14:02:32 +0100 Subject: [PATCH] ipq40xx: add support for Plasma Cloud PA2200 This device is a dual 5GHz device. It is recommended to manually change the radio of the first device to the lower 5GHz channels and the second radio to the upper 5GHz channels --- docs/user/supported_devices.rst | 1 + .../luasrc/lib/gluon/upgrade/010-primary-mac | 1 + ...-add-support-for-Plasma-Cloud-PA2200.patch | 549 ++++++++++++++++++ targets/ipq40xx-generic | 4 + 4 files changed, 555 insertions(+) create mode 100644 patches/openwrt/0023-ipq40xx-add-support-for-Plasma-Cloud-PA2200.patch diff --git a/docs/user/supported_devices.rst b/docs/user/supported_devices.rst index c49c7a55..af95cd78 100644 --- a/docs/user/supported_devices.rst +++ b/docs/user/supported_devices.rst @@ -263,6 +263,7 @@ ipq40xx-generic * Plasma Cloud - PA1200 + - PA2200 * ZyXEL diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac b/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac index e1d3b97f..9df7c9ba 100755 --- a/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac +++ b/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac @@ -114,6 +114,7 @@ local primary_addrs = { {'ipq40xx', 'generic', { 'avm,fritzbox-4040', 'plasmacloud,pa1200', + 'plasmacloud,pa2200', }}, {'ipq806x', 'generic', { 'netgear,r7800', diff --git a/patches/openwrt/0023-ipq40xx-add-support-for-Plasma-Cloud-PA2200.patch b/patches/openwrt/0023-ipq40xx-add-support-for-Plasma-Cloud-PA2200.patch new file mode 100644 index 00000000..b588f083 --- /dev/null +++ b/patches/openwrt/0023-ipq40xx-add-support-for-Plasma-Cloud-PA2200.patch @@ -0,0 +1,549 @@ +From: Marek Lindner +Date: Fri, 14 Dec 2018 23:46:53 +0800 +Subject: ipq40xx: add support for Plasma Cloud PA2200 + +Device specifications: + +* QCA IPQ4019 +* 256 MB of RAM +* 32 MB of SPI NOR flash (w25q256) + - 2x 15 MB available; but one of the 15 MB regions is the recovery image +* 2T2R 2.4 GHz + - QCA4019 hw1.0 (SoC) + - requires special BDF in QCA4019/hw1.0/board-2.bin with + bus=ahb,bmi-chip-id=0,bmi-board-id=20,variant=PlasmaCloud-PA2200 +* 2T2R 5 GHz (channel 36-64) + - QCA9888 hw2.0 (PCI) + - requires special BDF in QCA9888/hw2.0/board-2.bin + bus=pci,bmi-chip-id=0,bmi-board-id=16,variant=PlasmaCloud-PA2200 +* 2T2R 5 GHz (channel 100-165) + - QCA4019 hw1.0 (SoC) + - requires special BDF in QCA4019/hw1.0/board-2.bin with + bus=ahb,bmi-chip-id=0,bmi-board-id=21,variant=PlasmaCloud-PA2200 +* GPIO-LEDs for 2.4GHz, 5GHz-SoC and 5GHz-PCIE +* GPIO-LEDs for power (orange) and status (blue) +* 1x GPIO-button (reset) +* TTL pins are on board (arrow points to VCC, then follows: GND, TX, RX) +* 2x gigabit ethernet + - phy@mdio3: + + Label: Ethernet 1 + + gmac0 (ethaddr) in original firmware + + used as LAN interface + - phy@mdio4: + + Label: Ethernet 2 + + gmac1 (eth1addr) in original firmware + + 802.3at POE+ + + used as WAN interface +* 12V 2A DC + +Flashing instructions: + +The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be +used to transfer the factory image to the u-boot when the device boots up. + +Signed-off-by: Marek Lindner +[sven@narfation.org: prepare commit message, rebase, use all LEDs, switch +to dualboot_datachk upgrade script, use eth1 as designated WAN interface] +Signed-off-by: Sven Eckelmann +Origin: backport, https://github.com/openwrt/openwrt/commit/4871fd2616acb03fefe69b068955dba36eb00770 + +diff --git a/package/boot/uboot-envtools/files/ipq40xx b/package/boot/uboot-envtools/files/ipq40xx +index 3d31de8083b63516322ca33e9de792a592cf4bf1..e30b58ec4bf2871b7f311de7fdbe54aecc9ba29a 100644 +--- a/package/boot/uboot-envtools/files/ipq40xx ++++ b/package/boot/uboot-envtools/files/ipq40xx +@@ -35,7 +35,8 @@ alfa-network,ap120c-ac |\ + glinet,gl-b1300 |\ + openmesh,a42 |\ + openmesh,a62 |\ +-plasmacloud,pa1200) ++plasmacloud,pa1200 |\ ++plasmacloud,pa2200) + ubootenv_add_uci_config "/dev/mtd5" "0x0" "0x10000" "0x10000" + ;; + linksys,ea6350v3) +diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile +index 5e181f67437ec644d07d8fc4882908549d3d60ef..6e0d840de247f3ee6e8f9a097a8649a8f3abf2d7 100644 +--- a/package/firmware/ipq-wifi/Makefile ++++ b/package/firmware/ipq-wifi/Makefile +@@ -35,6 +35,7 @@ ALLWIFIBOARDS:= \ + linksys_ea6350v3 \ + linksys_ea8300 \ + plasmacloud_pa1200 \ ++ plasmacloud_pa2200 \ + qxwlan_e2600ac + + ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD)) +@@ -109,6 +110,7 @@ $(eval $(call generate-ipq-wifi-package,engenius_ens620ext,EnGenius ENS620EXT)) + $(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,Linksys EA6350v3)) + $(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300)) + $(eval $(call generate-ipq-wifi-package,plasmacloud_pa1200,Plasma Cloud PA1200)) ++$(eval $(call generate-ipq-wifi-package,plasmacloud_pa2200,Plasma Cloud PA2200)) + $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC)) + + $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE)))) +diff --git a/package/firmware/ipq-wifi/board-plasmacloud_pa2200.qca4019 b/package/firmware/ipq-wifi/board-plasmacloud_pa2200.qca4019 +new file mode 100644 +index 0000000000000000000000000000000000000000..d1db0f5f4b8b734c0c43df38d9eedb0b84f72109 +GIT binary patch +literal 24324 +zcmeHPdr(tX8b3S~>)Of<0TJRggb)%M0tBj2qdcWNQlPY=K}&)9AgNIv2E@<>J3bI2 +zDp1NRg497?O%WOE6RfR$%qX)n`_In)(eCV{JG0K(9qmp#v%9$8$>oLwhy;Z;!2ObQ +z&UYT)Ip6u+M{aU{Ij_e?2S>k|5Ehyo9FrQI9)~m<4Fbsz!7)Nn5OTFe8*}n<#km?) +z@H=^`{9x72jiIJo?*5#@oj5BE6&L3es&e)n*qF9Ar%00%yLZ2KXK-4yR2mxU1buL! +zKW@ldpE)@pmvUA_1{9&7Hi)tjTI%Kw3PNmzUJ5s9lSd*E4|j!7czF1aj~+S6*^AN7 +ze>ojV2N&qz8RhnPyED{C=m`kajpoL;8lPW|4s)YXbet=4AAQj+u#dDpmPS6i$77v< +zw$wZ>7f~;(YRIrzmL-vFH#fIMix#<92tv2;Ozjj;XlEI`Aa5D$?8e+|Ifywk$Cdo* +zUVPe&iuGg$dz(*|?#fI~lnq{Pt}WGMzL^*^*xh`*s!;WM;+nx8(27*)iLd+&a`!7y +zAR7F*xvDfbGZ8BLn$MJ~GSd<_4R+yXP$mO|lT{^|io^{jgRcXF(BP%!Q!v77iR%VG +z0Ry$kpaVL|%S@IDp}U&W{LFM&=%_)UwSQCON4lRy +zCF^ztW^j`4)E1V*MF)cfoA(xfDx?+@<)o}ZsT&yUB;a9v{WGYRc0lRiHJ+qR{r +z@OZ1Cqo00y^ux#qegcw-0{p46|NijD?=8!4!&S@NoLyc22kn-_0UNV_{P^Jms_pZ8 +z_4FR{d*OKmn&g*P_u_zC^UT8Kk|c-Ys3?uTjhmM@6ZfNfX +zr5v={26G9_v7IOG6?b+Dg`Glaztm`ykIGH6!eZ6HyRNRr+q(hYO-&6fk|kl?V-Y^2 +zkHkmePP!A`WDFT2iMba;B#}vyBt;Y%MI?|?QYw+&lM?I6^^*09P%@N|k!B|>{4unf +zOAYOa#3B#~I@$pC$y7cTu~^*OA@Ih+<#OAad?r_+j?1MwgIFM-%zUs=X7n`Wa`TL5 +zQT3WiIAg+^N-X*sv*K7-d5|6tJqTaYSK_OPC1W4P63Jw;Bv}zohCd7^Hjo=68x(;2 +ziH1@9DV@Vzg20#3s}zz--1|Uf6_+p*IjXjX*48eD3C-F!Wl6 +zfaes8kCsW*$*z}YEt?O|q|6-bIr3<3-S3<3-S +z3<3)nffdpf#A?>7(pQO8)>`RWB9gU)7L=Y_)87BNWo-JcJ?&`X7%$K=V`D7fL&!{h +zng~3eAk*w%wwl|?T9~gZ35p$g`hoihL3&W%HgJD@DhY<4OoN1cF6o#WI2RNo6o7vY +zs)2i>{yC&JTbI>L^&5o<08EjcHIdp5U{%J?7HMbknP3*OcxgP5!dfF;Lu_JYHsRMq +zWBPNBPUp%4&vbeBVRrHE*{htKfOLQGjEM#A*#@X&1Ap6%LI+q(Pv_k$XN`A%net#P +zo-N)zNsNtw5XFCYTkNvP)y#lL=*pAn((&!!-CGU|<632(CBtU35e~EfQwHHc%QW*Z +zg3zYVn(}NKMzP!2zhmF_tSK?JT1{QPAeVEQNl$%Z +zAmo53+2c0ThCzTqfI(ocA~43ApNx0^pMU)IPv3p_2bdhi#mBt+C;$BWpC3H<8p%ia_WaQufnt3k%Jm=k;>GtCk^RG8I=`Uq=DKo;mw<6nH^6qI@W|98BK!&jA +zHxvqa%h&`Cbso%mjPG%loO`T4C+$7}e(An--~9FB_hyY&@R(1NZ~KSp48^((WyrVJ +zhMEm!x-6w^=!&6USD=iS1q}5YFX(k@rHq6BD|YjCpb&vUtwF2XqLd8x8PDqXtJ9S- +zqR9lUw4O)FRxMVOK +z)fecL#!H4)wI(527BYOp*sd>CZ&v_7gZwD3z+E}eT38)h +zCf0bRfBi|)Npb1Q-R@hv`u4QN*YFRqcQSYt8?9(|SBGI!H19037*c*71HTz@}5o?ixXm|Zv~a^h*){gN45v!6Hy +zO}l?##>SWgex`^)U{VAo(C#0PYi2L$W2W1Ub7P@pr{di^=3X<5S2MK>kfWdPTtqkx +zxa?iZfwU!6x6+b-e*t!(8D3#rz=fJS#Fs3ug^bamfDpp1&mas4TC3>5!V%OW{@}~DxbUGEL%{N9 +zrimrbA*sgrE6Bl$&A16xnGDl$(`KBECzE8x_T)!?WTt=m)4%+~^?359sJl8J7D$Sv +z2DeUg&uMqxecyfG-FcQ3WUzLn>9_sBJI9zS+>m2IutnV8f?kP3b>2zAH +z1jSIGc#5(s4H5~txoy--A{EH4MOg;`!*3=b0f0;Zk}9x}w0adTmZQ5H;7|ZmR8%~E +z^a$vsKLf#FutrF$q{}_xuK#^`OK+$r3639JZi`)C3r;G4qOKts%>~US40w#Vnooo& +zK@CVrNm;#mb#ijDL?Yn@0B$AFBOh&zq&O)JT)LD7%o6?z?*+?Csi|37UEVmJdRA5z +zz)3((P7c6HKze#Qz$s3orN!CsN6-xKnP>RV2Rw$5khka%4_zWlFNCFdf{JZK21Eu# +z1`=i9x<>+1C6c7%RP;eYJpN2a59j^*n{RR3Z-aB_nd;-96eWBK{)dBx;Qe4na1EFT +z)94bg2FwM|qtu4l&IHdcw)c8R+AS95H#Er1Ont<+ri(XiR4O;1iZtcPcMA*INaA%^ +zxjsE5DLMIHNSA^hUXgzX@1K#8^wj^rf%Z0DCzFLePw~N5Ah*xj-Loi;{e*iKCmgaQ +z3~Du11R++ud{VUO6ObV4U>#8o%L)7NkrTgnxhMRBaB)!p`lt9?LIMd%4SAO&WKgD& +zF_|!v$b$xG&=~F-h(_3`X=G|)En$Q@sMF}~>WE5Msi|bNP)pEov2WkA@hlM+$E4RU +zj!G0G)+ZiHvS8N3EMgs8r&-6;!}^EygbA87CZ+;bJggw9V3nqd;nyQP4|T;;|HAWV +zd-sRxm|eDKFBVax=f&p&>{;sw-IAwv_}NLLjc&~=;cl=_YaiW6mHR$)xLAjACtdp; +z0#H#Z!2OAxzz){3! +z>p`xTyjPIKS%+vd^-JGP#~Jph@ztje#VQK;ZaCalo6$;@a5Jn6xiVBa3gSXNpdf)c +z&dm;5Ep)}=kbKjehqYss?~e{AJ8Cr1l_-dlJ!0HJR|l^8#vL}c-KYsU6sy$0=jSHa +zH?RYD)!}B38=L5Dfe$#29k902y4&yj-sTRo79+*aL8StLS2%>h?w(1Hair{^+>%i_cljt+IaJt{ZJxZ+ +zex~NAyqkRW%#_t#b83T4YMq%Ja%~wKv~>$UO0d@^e8u%Gl!&wcv!KOQ`I5M=~WLaw+fSC>m{Ah+wb6FbN)x-CQv +znJNJ6>^kfJ=uUVpy!t0rM)r{=V8!}aabm=P|F;Z0dGh4(-R`FjAMa+I5%zqhqjh}&A2p15pA_!iI +z=meh^RWiHKm+SQWSFuV}(Wb)xW#Uin__I3xbdE7wcJ1!yv2osW7pJDL-I$%5zxByy +zpMP~PaRX2k78WTGBA#1|)asHVgb0HSLWK+=!mxr06h03lA|x6q#E39RrBV_j!T>_& +zpbY60PC`Rxpp3yOoPvhVKN+1s7$ +z5)(H>#Qu>gV(zOIG$g)7WA5FUhIr15o7?staG$?26ZrG(FJj5^q9VDll;N@x{SSqp +z&rv9Ho+k_TA6kar^Wk#%EsyVWp`V!Yf|QU$xkk=NLBm1=!9YgCFb!by!e&Ab^%_01 +xIm-LBT#n-^l{n7{%{e^B+W5eKZ}DGJQYrQc&-oaUzh>>1@fF!aWXqRd^Ka5;p}hbA + +literal 0 +HcmV?d00001 + +diff --git a/scripts/om-fwupgradecfg-gen.sh b/scripts/om-fwupgradecfg-gen.sh +index 552ed31f147df442926a39f7e2c8b3bd7b706571..92d8df9de3d09f2ee2c6edd35750ad03c8f02d8a 100755 +--- a/scripts/om-fwupgradecfg-gen.sh ++++ b/scripts/om-fwupgradecfg-gen.sh +@@ -7,7 +7,7 @@ + # + + usage() { +- echo "Usage: $0 " ++ echo "Usage: $0 " + rm -f $CFG_OUT + exit 1 + } +@@ -45,7 +45,7 @@ case $CE_TYPE in + SIZE_FACTOR=1024 + SIZE_FORMAT="0x%08x" + ;; +- A62) ++ A62|PA2200) + MAX_PART_SIZE=15552 + KERNEL_FLASH_ADDR=0x1a0000 + FLASH_BS=65536 +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 f446c04a00c863173c8fcb8242f7b2db1569acb3..aaada06e370591d43b59e756dd8b7acdef203d17 100755 +--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network ++++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network +@@ -15,7 +15,8 @@ ipq40xx_setup_interfaces() + 8dev,jalapeno|\ + alfa-network,ap120c-ac|\ + engenius,ens620ext|\ +- plasmacloud,pa1200) ++ plasmacloud,pa1200|\ ++ plasmacloud,pa2200) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ;; + asus,map-ac2200|\ +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 28c34f6d0f9ebb47d0b2705e2edd5a55cc2e22eb..e0677371ea93f32c5ceb4b0b858e236f9c764863 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 +@@ -123,7 +123,8 @@ case "$FIRMWARE" in + # OEM assigns 4 sequential MACs + ath10kcal_patch_mac_crc $(macaddr_setbit_la $(macaddr_add "$(cat /sys/class/net/eth0/address)" 4)) + ;; +- openmesh,a62) ++ openmesh,a62 |\ ++ plasmacloud,pa2200) + ath10kcal_extract "0:ART" 36864 12064 + ;; + esac +@@ -166,6 +167,7 @@ case "$FIRMWARE" in + openmesh,a42 |\ + openmesh,a62 |\ + plasmacloud,pa1200 |\ ++ plasmacloud,pa2200 |\ + qxwlan,e2600ac-c1 |\ + qxwlan,e2600ac-c2) + ath10kcal_extract "0:ART" 4096 12064 +@@ -233,6 +235,7 @@ case "$FIRMWARE" in + openmesh,a42 |\ + openmesh,a62 |\ + plasmacloud,pa1200 |\ ++ plasmacloud,pa2200 |\ + qxwlan,e2600ac-c1 |\ + qxwlan,e2600ac-c2) + ath10kcal_extract "0:ART" 20480 12064 +diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/dualboot_datachk.sh b/target/linux/ipq40xx/base-files/lib/upgrade/dualboot_datachk.sh +index 60886071c9748407746ca9adfab52a1da9e524f2..81418fe0ba474bebd6f4a6defe730644b6aee76e 100644 +--- a/target/linux/ipq40xx/base-files/lib/upgrade/dualboot_datachk.sh ++++ b/target/linux/ipq40xx/base-files/lib/upgrade/dualboot_datachk.sh +@@ -48,6 +48,7 @@ platform_do_upgrade_dualboot_datachk() { + openmesh,a42) + primary_kernel_mtd=8 + ;; ++ plasmacloud,pa2200|\ + openmesh,a62) + primary_kernel_mtd=10 + ;; +diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +index 6ec538cfd4cced656130169522cac1622a3b4ef2..e7336e8d14bc9b197c8a76585729a8c71355f903 100644 +--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh ++++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +@@ -74,7 +74,8 @@ platform_do_upgrade() { + ;; + openmesh,a42 |\ + openmesh,a62 |\ +- plasmacloud,pa1200) ++ plasmacloud,pa1200 |\ ++ plasmacloud,pa2200) + PART_NAME="inactive" + platform_do_upgrade_dualboot_datachk "$1" + ;; +diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-pa2200.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-pa2200.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..2d0655114b4e0749e0c878a3d16ece2ad2ab2223 +--- /dev/null ++++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-pa2200.dts +@@ -0,0 +1,210 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT ++/* Copyright (c) 2017-2020, Sven Eckelmann ++ * Copyright (c) 2018, Marek Lindner ++ */ ++ ++#include "qcom-ipq4019.dtsi" ++#include ++#include ++#include ++ ++/ { ++ model = "Plasma Cloud PA2200"; ++ compatible = "plasmacloud,pa2200"; ++ ++ soc { ++ rng@22000 { ++ status = "okay"; ++ }; ++ ++ mdio@90000 { ++ status = "okay"; ++ }; ++ ++ ess-psgmii@98000 { ++ status = "okay"; ++ }; ++ ++ tcsr@1949000 { ++ compatible = "qcom,tcsr"; ++ reg = <0x1949000 0x100>; ++ qcom,wifi_glb_cfg = ; ++ }; ++ ++ ess_tcsr@1953000 { ++ compatible = "qcom,tcsr"; ++ reg = <0x1953000 0x1000>; ++ qcom,ess-interface-select = ; ++ }; ++ ++ tcsr@1957000 { ++ compatible = "qcom,tcsr"; ++ reg = <0x1957000 0x100>; ++ qcom,wifi_noc_memtype_m0_m2 = ; ++ }; ++ ++ crypto@8e3a000 { ++ status = "okay"; ++ }; ++ ++ watchdog@b017000 { ++ status = "okay"; ++ }; ++ ++ ess-switch@c000000 { ++ switch_lan_bmp = <0x10>; ++ switch_wan_bmp = <0x20>; ++ ++ status = "okay"; ++ }; ++ ++ edma@c080000 { ++ status = "okay"; ++ }; ++ }; ++ ++ keys { ++ compatible = "gpio-keys"; ++ ++ reset { ++ label = "reset"; ++ gpios = <&tlmm 18 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ }; ++ }; ++ ++ aliases { ++ led-boot = &led_power_orange; ++ led-failsafe = &led_status_blue; ++ led-running = &led_power_orange; ++ led-upgrade = &led_status_blue; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led_power_orange: power_orange { ++ label = "orange:power"; ++ gpios = <&tlmm 43 GPIO_ACTIVE_LOW>; ++ }; ++ ++ 2g_blue { ++ label = "blue:2g"; ++ gpios = <&tlmm 46 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "phy1tpt"; ++ }; ++ ++ 2g_green { ++ label = "green:5g1"; ++ gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "phy0tpt"; ++ }; ++ ++ 5g2_green { ++ label = "green:5g2"; ++ gpios = <&tlmm 48 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "phy2tpt"; ++ }; ++ ++ led_status_blue: status_blue { ++ label = "blue:status"; ++ gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++}; ++ ++&tlmm { ++ serial_pins: serial_pinmux { ++ mux { ++ pins = "gpio16", "gpio17"; ++ function = "blsp_uart0"; ++ bias-disable; ++ }; ++ }; ++ ++ spi_0_pins: spi_0_pinmux { ++ pin { ++ function = "blsp_spi0"; ++ pins = "gpio13", "gpio14", "gpio15"; ++ drive-strength = <12>; ++ bias-disable; ++ }; ++ pin_cs { ++ function = "gpio"; ++ pins = "gpio12"; ++ drive-strength = <2>; ++ bias-disable; ++ output-high; ++ }; ++ }; ++}; ++ ++&blsp_dma { ++ status = "okay"; ++}; ++ ++&blsp1_spi1 { ++ pinctrl-0 = <&spi_0_pins>; ++ pinctrl-names = "default"; ++ status = "okay"; ++ cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>; ++ ++ flash@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <24000000>; ++ /* partitions are passed via bootloader */ ++ }; ++}; ++ ++&blsp1_uart1 { ++ pinctrl-0 = <&serial_pins>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&cryptobam { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ qcom,phy_mdio_addr = <3>; ++ qcom,poll_required = <1>; ++ qcom,forced_speed = <1000>; ++ qcom,forced_duplex = <1>; ++ vlan_tag = <1 0x10>; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>; ++ wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>; ++ ++ bridge@0,0 { ++ reg = <0x00000000 0 0 0 0>; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ wifi2: wifi@1,0 { ++ compatible = "qcom,ath10k"; ++ status = "okay"; ++ reg = <0x00010000 0 0 0 0>; ++ qcom,ath10k-calibration-variant = "PlasmaCloud-PA2200"; ++ ieee80211-freq-limit = <5170000 5350000>; ++ }; ++ }; ++}; ++ ++&wifi0 { ++ status = "okay"; ++ qcom,ath10k-calibration-variant = "PlasmaCloud-PA2200"; ++}; ++ ++&wifi1 { ++ status = "okay"; ++ qcom,ath10k-calibration-variant = "PlasmaCloud-PA2200"; ++ ieee80211-freq-limit = <5470000 5875000>; ++}; +diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile +index e14d00ad08b8caf2dae935d573f0ba7bb0433c23..9872d0c4abcbb9d607bb15c47f0f820e7cdea077 100644 +--- a/target/linux/ipq40xx/image/Makefile ++++ b/target/linux/ipq40xx/image/Makefile +@@ -360,6 +360,21 @@ define Device/plasmacloud_pa1200 + endef + TARGET_DEVICES += plasmacloud_pa1200 + ++define Device/plasmacloud_pa2200 ++ $(call Device/FitImageLzma) ++ DEVICE_DTS := qcom-ipq4019-pa2200 ++ DEVICE_DTS_CONFIG := config@pc.pa2200 ++ BLOCKSIZE := 64k ++ DEVICE_TITLE := Plasma Cloud PA2200 ++ KERNEL = kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb | pad-to $$(BLOCKSIZE) ++ IMAGE_SIZE := 15552k ++ IMAGES = factory.bin sysupgrade.bin ++ IMAGE/factory.bin := append-rootfs | pad-rootfs | openmesh-image ce_type=PA2200 ++ IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata ++ DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-plasmacloud-pa2200 uboot-envtools ++endef ++TARGET_DEVICES += plasmacloud_pa2200 ++ + define Device/qcom_ap-dk01.1-c1 + DEVICE_TITLE := QCA AP-DK01.1-C1 + BOARD_NAME := ap-dk01.1-c1 +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 cd0cd4164207f0a851d19a42fce07ad54fec8939..22c9e2305740938b57802f3e8c8a37fda4d855d9 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 + + --- a/arch/arm/boot/dts/Makefile + +++ b/arch/arm/boot/dts/Makefile +-@@ -697,7 +697,33 @@ dtb-$(CONFIG_ARCH_QCOM) += \ ++@@ -697,7 +697,34 @@ dtb-$(CONFIG_ARCH_QCOM) += \ + qcom-apq8074-dragonboard.dtb \ + qcom-apq8084-ifc6540.dtb \ + qcom-apq8084-mtp.dtb \ +@@ -35,6 +35,7 @@ Signed-off-by: John Crispin + + qcom-ipq4019-fritzrepeater-3000.dtb \ + + qcom-ipq4019-linksys_ea8300.dtb \ + + qcom-ipq4019-map-ac2200.dtb \ +++ qcom-ipq4019-pa2200.dtb \ + + qcom-ipq4019-qxwlan-e2600ac-c1.dtb \ + + qcom-ipq4019-qxwlan-e2600ac-c2.dtb \ + + qcom-ipq4028-wpj428.dtb \ diff --git a/targets/ipq40xx-generic b/targets/ipq40xx-generic index e40c6822..f2b3686c 100644 --- a/targets/ipq40xx-generic +++ b/targets/ipq40xx-generic @@ -94,6 +94,10 @@ device('openmesh-a62', 'openmesh_a62', { device('plasma-cloud-pa1200', 'plasmacloud_pa1200') +device('plasma-cloud-pa2200', 'plasmacloud_pa2200', { + packages = ATH10K_PACKAGES_IPQ40XX_QCA9888, +}) + -- ZyXEL