02-xtr10890.bin.patch 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354
  1. From 98eeb48d7069b0ca3e52fdd23a03951532aa7ddc Mon Sep 17 00:00:00 2001
  2. From: zhouF96 <[email protected]>
  3. Date: Thu, 7 Apr 2022 22:49:43 +0800
  4. Subject: [PATCH] Add basic support for TL-XTR10890 (#9202)
  5. * kernel: add module for bcm574xx 575xx serials
  6. kernel: add module for bnxt_en Linux driver for the
  7. Broadcom NetXtreme-C/NetXtreme-E
  8. BCM573xx, BCM574xx, BCM575xx, NetXtreme-S BCM5880x
  9. (up to 200 Gbps) Ethernet Network Controllers and Broadcom Nitro
  10. BCM58700 4-port 1/2.5/10 Gbps Ethernet Network Controller.
  11. * reapply bcm578xx sfp 2.5g patch
  12. * add basic tplink-xtr10890 support
  13. * update 10890dts and add to platform.sh
  14. * update 10890 dts to try boot qcn9074
  15. * revert qca-ssdk to original version
  16. ---
  17. package/firmware/ipq-wifi/Makefile | 4 +-
  18. .../ipq-wifi/board-tplink_xtr10890.ipq8074 | Bin 0 -> 131176 bytes
  19. .../ipq807x/base-files/etc/board.d/02_network | 3 +
  20. .../etc/hotplug.d/firmware/11-ath11k-caldata | 3 +
  21. .../base-files/lib/upgrade/platform.sh | 3 +
  22. .../arm64/boot/dts/qcom/ipq8078-xtr10890.dts | 969 ++++++++++++++++++
  23. target/linux/ipq807x/image/generic.mk | 13 +
  24. .../900-arm64-dts-add-OpenWrt-DTS-files.patch | 3 +-
  25. 8 files changed, 996 insertions(+), 2 deletions(-)
  26. create mode 100755 package/firmware/ipq-wifi/board-tplink_xtr10890.ipq8074
  27. create mode 100755 target/linux/ipq807x/files-5.15/arch/arm64/boot/dts/qcom/ipq8078-xtr10890.dts
  28. diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
  29. index d56a182658cf..416a03413891 100644
  30. --- a/package/firmware/ipq-wifi/Makefile
  31. +++ b/package/firmware/ipq-wifi/Makefile
  32. @@ -58,7 +58,8 @@ ALLWIFIBOARDS:= \
  33. qnap_301w \
  34. qxwlan_e2600ac \
  35. zte_mf263 \
  36. - zte_mf269
  37. + zte_mf269 \
  38. + tplink_xtr10890
  39. ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
  40. @@ -162,5 +163,6 @@ $(eval $(call generate-ipq-wifi-package,qnap_301w,QNAP 301w))
  41. $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC))
  42. $(eval $(call generate-ipq-wifi-package,zte_mf263,ZTE MF263))
  43. $(eval $(call generate-ipq-wifi-package,zte_mf269,ZTE MF269))
  44. +$(eval $(call generate-ipq-wifi-package,tplink_xtr10890,TPLINK XTR10890))
  45. $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
  46. diff --git a/package/firmware/ipq-wifi/board-tplink_xtr10890.ipq8074 b/package/firmware/ipq-wifi/board-tplink_xtr10890.ipq8074
  47. new file mode 100755
  48. index 0000000000000000000000000000000000000000..2815a4d661471ac403d9c0f38258aa8cd95a266f
  49. GIT binary patch
  50. literal 131176
  51. zcmeHQ31Ah~)xI<L<t2d-LI_D71jtGrOEiEW?z})CKoVjSR+l18D_U)-)fQLW3ze!>
  52. zRK%qLsalJQiVC>5wQ5nS)}`(L|E*frE*iJi1<C(?_s+aGFA2PXgvfH|oXMLrGxwfz
  53. zzjN-ncW&k-M^A{9MH;I{j+|CjF+Ea0QJi|}sRCQIu=ybl#XkRx9~^PQg83u9f9gqP
  54. z-&}Cg!m^W^jwn~s{O_G`S`)=FqsEQ+;R&ambi#K}Kcca^Y<6S)$ntTAl%IO4rE0N-
  55. zB?19;c>c=kasxsx&OB(Q`Z-JeoUMM&Q9tLZpU0@X@grk0k3QiKT^WzCT?xsKJEPBc
  56. z@N-@V=k~KxnN}Y~W2_?;9cCS>=qT%8MMpZHhggRzI@mf$(HLu#q6{m~p~LanKZ<*r
  57. zV9f-RHS?1-^OH66lQr{`HS?1-^OH66Q*V~Ate`6hksR;q*adU6cOzhnt;*{&`n7LI
  58. zt7vV1ayw^qc5*JR61}%`Tc=Oo5vNE%(ax!gE554J=4`iuj_}+WTf56nDbnIpZMQ*R
  59. z$Aw@}od5grTh9Npc>R^vcg=tmdfTPKE4EY0%1x1b^1dCjeVq=7JUuV)b$5cBEbB82
  60. zBe6Zf?fdlQ0C3pRz85v#Gfn8&>gu}2*~iXnTCnWO<tuJ%UUU1}b?Y}g^2C$RJlE!S
  61. zE0~&^+Cy<lN+6h$3^6qYC)?b&3*y{eC}WBwMj%N%zUPh?iOn~67z9L6JZoau#KAs;
  62. zK(ffyL$YO+FK+ow@1u%5Tkm&m%d)(?dZ_D-jdx)YCo9Q1!h?ln<#tpFYOp=~G?v&=
  63. zC4MYPP>IK=T|P_^&#q+Qg-h4A#x@~}@jOw0`N*LAg$OMdBI^{aY*h=<BM*xmGO@an
  64. zH&Omsl)q1i{?`c6kL9Nbkye88t%;wThrA_3;btKQuSfZ-gvkCb%2%R%0m^SpT)z14
  65. zLgYjLz<Y(ry;_LA-w`5xBJ3|j`IN-=pNXyb4b<^_T}KFQ=z9|Cs6ZWqP)AbYI!aK!
  66. z5H<`3hW&wIKiH5l32i7w`L7bUVF)lRgnnW$;96jSmCg*b!8ZmdpAR4Axfq~)Ixy^k
  67. zs80GKvHmCq@WVj(F&BR5dot>nfI9O1;n=PX^rPDbA2tku9~B1B-wuN>6Stv=K6EjF
  68. z5BeewRU8n5&l8s?1|^6^)feE05Mn6{7-ZA}gZ{w4P8<hA-uA@u&kzR-P#zej6{5Tk
  69. z8%lveG1`#74!(pBa?plM_%Xc{Hu#A{=r7pf>C3dg24&foeUw*m@EYp)1L6QSurDwl
  70. zq>o1(15ro72L`~<^<)1l5z7l54A`H2#6f2<D2Dy{PsiJ@d`SEKVt|~O{|xH52N+z3
  71. zSb`sSCLgH2fbxUU9|vIZB>Q{7paOA_4;ywS4xm2|ahP)|;sE(1Jq$kt6Z?QU-D`gq
  72. z%4gJ}Ec2O<@{EJTTFe~=0fT@+z#w1{FbM2#2sHn(={J$};ng9`Q{An3OVgu~yTUhz
  73. ze(IhPqWL9t-z{<X>2qs1$9A{o7n^<^xfk_e&ggE<&o(_AxifrY=rZ>V>g(t}p1ZG&
  74. zEiW`Zj`~)`)wj9np~%|s4WXZS>U$pd-4kvOUEw+RLemq<7R=$@t@+ia-$fn_-xk92
  75. znY%SV*YpVNyD7BHJp=omRXSG2>3Fs2smO-#?VL-x8|ve^+c?K|H{kaO@aw3)c$;5s
  76. zdOETZ^?80V*ZhiOpSM2R*S5aRO`Cwh%Ft3*D{Q7M8)1vbzSvcBWDw|n1h`JsPHT(v
  77. z@|WkrRaadlF1qkSam5u^h~-y%5{l;@bGYv#unfOpU9)!mBTqgTTix^?4aeG6>3vvV
  78. z!76CMxp=Ogfpx9}@obJ~;!GcFbi;m+^7o_sjd->`2jyp?{796=nnL<p?L)OK;zOSm
  79. zVhGliif+QXz}YB|_XxAgP(Bsq-%DJ6ILen|J%RcQsK3#%AL|<FZze9U^gjUoC_k9x
  80. zkAwaLpg#@e|CP9W82AlA`wM}eDt|1>13$mzhhaTL*-!kb-^D)<b@*7{3j_ZWw7=+P
  81. zt-pT*^p~S-Z`l7qV*9zK!EG4hfPRD@lpkjU$I+;VetbJ|JuE+jam4cUqgx*9Dt^ij
  82. zb;_$aAP#dK9DAbtKYi#24nr6RZS7C?r$34#$}<l8BaWgtzMoh><DdlXS8>4hd*i@|
  83. z{lj5@7;#u~qZ0@0M~p+PE&7RLWk2=b0Q=8%?5F?wp!|o4?blI&IB@%OTO57*QN;oM
  84. zfOu>d2k#`dV<`QII8^aW92p11f%)JciObV|#$nO*P8`oc`Qa$fIPjyNeuVvnD6it6
  85. z0p*#`GElxHvHmdnv+9qGBgXMDD8Cc=U^vP%4vOJNl@Dg=eC9Wwx^Wzh1LTuz#z7|R
  86. z|0uEj(KrAOsz1|@YzJ{1fqGI<&%251iOUCwN9KcQUiVR+aZu_V7g(M+_JDpLaS)9o
  87. z_6IkPIIj3D&-OD89Y3mkFbd^;_9vyE_CtUEd7e1v1^fS<7{B3Is}D0DyK%sL%DnEg
  88. zAGXT}yBY`d1MNUwQvI2EiSa}`eDtTdd_q649S5Pj&%CV0CE!>>9Gy5)dC_kiqCctm
  89. zg<Ia6PkhWTyna-1bet2%KIaFjJoAx9znUM>ejoUa0RCZ=SM7KDA={sw0}TI@IF8h~
  90. z$~dI|7>8`XJHPVLkD~biII4Lf+7X>+(T+UW;p6wwDh^<Wny1l^h({IAKIa$2f%=D_
  91. z9n?Rl5#`a2>|E&o%m)rAui}8^sh@e(?N2`Z5cMO<M{(SVam9^e)t{-qLF>;R0Q-H+
  92. z^HdyQTw?nRQGPJ&?+^R4k=HXnPTYQ_ANVQ!&xU>%zy2ui<M)ql9PoKT%~KEuv}0gB
  93. z>=*+(vQdwZc#OuuO89|x&<}1L`N82i=qC;smx@q+5aLMTfcb8wk9nGFKXIV_3J2oI
  94. zIP!smHy^m;qRMAJpLe3|2YxCJ83!2GR6p|5e&z$G9~GiM52PR6eDL4IaiH3d^2{eJ
  95. zukdsI_i5ttZXArja~Jax{ZM$0r=Bd}=%b#t<p%<X{$qgy^O}!#lszTHaLkj!&|eJw
  96. zgAs>$ERS&|)5r752*&aKu>U65@5a$Vj()#!%>LBIkC}KMBK?iTII8g-<>`llv*1Uz
  97. zpMLO}&&q)RQ1k=!+z$IyK4Cs2{+}e)&wMfzaWDk>ix$Iw?8lhrW@CPn>0_Sj#z7fy
  98. zq#Z-hpNr6+2C*INPZ_Ak$8(3uYqZ0SBjz<X4t(VGvfm;O;71h)z#$q37+*7e<n=Q4
  99. zC)$rVC}JEpIyhvaypQ>^>QB(G{0RN3KVqJo9YT2@`9%4Famajhrqho``S(K^=83~#
  100. ze<}S4{0Gl)@b{Sy+5TbBugViYmZ$waVE<0c56YhO_<?pH4)VsJ9{Rz@e7_9yi=pTb
  101. z#6kI?9(E9iOqBN#M`e#gKX3>GhhnrNAMMB+jq-SY&h)VkrR+x>GLEQU*?*9K`=kAd
  102. zeq=vj9I<>~==Tvvs{OE^{Yd2_mS_9fAN{od*J%HG_>uUzeq=vPLwO(T4{`qUwjc9+
  103. zKl#+n2g4ALYCUU(GrrYfd}3Z2gnE3eCl1H>9xZ<!d|0o?$4o37a!<6WapfN1_;cWh
  104. zb_|*g91n*6Y?SvgE-CvFhsAjQFQERTch3Ik_zpkjFGBeSlpm>WPk$|OURLXY)KC1V
  105. zpXK34zwIA}aiJ9BBF81AA91uZ`bWTjLxEo@@KgN&&;9-Bzh1Dx$9kw62V9p8Z$Mr|
  106. zURC4UOxQ6T_2i)*A9+#bRd0FD6PcF=qP&mijS<Wz$ZH(m3gHJeE{#Tc0O_YcDg6(^
  107. ze)OjTlxJS=e<;f5qP&m!$?z?}5I9EtSP%QTet`hyo@jH+m%tCvdE(B*0rI+fUSk|D
  108. zcKXpyl;`|HjSFah5yqv#@LzxWuP5x^iE%;oXW*dPf&Msf_RjfHt%o76m7pDkXb0y>
  109. zxnbB5f*n5Q2PzIwUd>O=cj90a%J)HeA9+>9u{RE&zyBdS5eMFWfcEEk^WnDEL}4J*
  110. zx-jBc%`f1Gf$T>+(GQ~e0DjCr3;J0e{XorA|DIUCiUYL2^k&2X$`77{_VamTXY&E)
  111. zSr2&Hf$=$aDC+4CTYS9xIRfK?nx{1*4v-fI9_{!c2jzYAN0ry^LmXU>b|8*aK5*l}
  112. z$9z}K*Y8Dn>gV`A3;M^v{=U%f<M~^~G5xr*gM8>CpLzR%%16Y{&8I$|8>8b2+8-U4
  113. zoP6MCTvGEy^rKSPUxa+PtNEbAygU*(W&lSYzpqmBEW~5<xy|)M7Rvj0?orPx>zsH-
  114. ze^l|z=kIis_pyEuoiC$5DI6LR2h2x4=SgK47u55T8;6Wz_`$D!)qeCN^}K-o7>z@=
  115. z-%lK3e2?}cH;%_bzt8gJk71q({Dz_*lmNec*q?`dkc)94+sFLQogZ+%I}GiJ<`w#J
  116. z80ttxJN!H^Z1&)Yd@zVOx_<PrzOJ5|)<eJRNAxG9pU*u$)`iQR`F0rPi_ZiOD4z%Y
  117. zxoK#FkG!tp$lLyz(9izN_WRHu?MKkB<~Ot-d0owKd^~Tc^$++_J$EyXyybn2i{+0B
  118. zF#`Q?=+6-cc-|<$xSoe`DK`Z+_{c|Y93&h7%?$<tgMdN6AYc$M2p9wm0tNwtfI+|@
  119. zU=T0}7z7Lg1_6VBLBJqj5HJWB1PlTO0fT@+z#w1{FbEg~5+KlgZ`10?)!_?53u8An
  120. zuWM?KTp2zubgJjvolQ4Iei}X}^c~N+yKwIEHs|hdx;1ib_~Ov%p8M{Dj;q?}_*K)&
  121. z$YtTPLMM6d>&TY-n|`6{`+?`a^-XIc*Mu)jX!AX2$5r9;L*Mn3-PrWY$jb1KLqBYH
  122. zZb|4zo^!<DXKl(p&_UaHZbh5+y7qlPuD(^MZ*iP0_cpCk_I=NDpRVuH&>5a{8=7v9
  123. zT;Im#yP9t90Q+A=mWMA2otB_%N0<`(wmzcYt_IHDcCc-2b*y)M<n{R-P1i?$5<as7
  124. z|F*5KWB<0*(NRnigDb-4hEDOcx1$)+zKq9yP1EwoCE?RT^F3u5FZ8*$FWjfvdqK$S
  125. zBiFy)`|fV~Ir_}G?fS>EHZiVaDBefwn{EN7@qJL^w<z>2k9`{Z`1>9J_SdxW`GZZj
  126. zMXp0kdi#uvi?=W6_Qv<~O-*-1ZV1Qsg@>EgMs5sW7Q%av?$&&d6T9B}blIQ8-A7v(
  127. zyYcbNKDZ>V58e-)+vW|8OFUK&qA#pyW1sFHOXBpdZMq?{EPQt8WY=Q+J*$nXA1#f$
  128. zkC?XA`v7cS(WbvK4z2;F-oC}SVt(<)f!lw*`Gx)My6`1&Iq_G@zWDsNLFJ}+`|gI0
  129. zE1|<1fA={3(yLd;Uwp2+vxEL|pNh43OqsK<3tt*%-yI#~=Z>(~aS-3Pbgaeq^R-Pk
  130. zwi`c)0mlHZkLb%4u*Hj?J{KR8jNL0RMtS3pec@W*?2UWc$3E>H%e2k${YcvvA1@k%
  131. zMR7TdvB7xujunh?#)~(`?^U@Z9v7A+&ffc6Tf8||`{?|*Si4*K^1Qe>aAVv%h7yCe
  132. zIvA6TKd)XLFN@=1*KLQlpS$CrH`a9iyEv{sjdMJvcPXF8=Vv`u#P<dE{cB*K*XNvD
  133. zbmZTT+YuiJ+P?Vq>RcCZ->;N?@$uL3ILQ1Q-)G$Ukaz6SzHHkEId6*Bq3>H9H*T@7
  134. zww+7e-n1gJH2kB`w>>$`?Z4g_e?aB13){qt9*?|n-@&*atJxeG1PlTO0fT@+z#w1{
  135. zFbM1q2rOIPto}M`r`y`W-{9TpI)9378A{;~_FjDzK7ah<OE0|?pVwY{%{ABH^U_PO
  136. z;gh%VKAgQ~IX;&yyX>;d@M$)KfI+|@U=T0}7z7Lg1_6VBLBJqj5HJWB1PlTO0fT@+
  137. zz#w1{FbEg~3<3rLgMdN6AYc$M2p9wm0tNwtfI+|@U=T0}7z7Lg1_6VBLBJqj5HJWB
  138. z1ojF9Qbid50au8m<Q{418JT^v`eo<jhWZc48#riienDYTamkR<@X*%Q<OJKhttlc`
  139. zgvB^9Uet-%VxCwa7K%mUe6d7aDOQMPal2S2Hi*Z?)8cvYC-ItiH;!Jz`E|H+0m|o!
  140. z_W!7@xhWD3DMX7)ioM)2SEL9F|3yZK9_g9cx&7lUA2xhMS*x=pXhQPSt!xF`P_@Gr
  141. zunlZQTVe}Vpv`rtLx}eOyfM~>5^S+X6t@hGwm~&<Z~W1+HyXWX+FV>*1THBoC@3l{
  142. zC@g3r;{QkO=Ie~jl49u2FDiikHX{Ci({8@L$9ToEY+K5&&m8=Jv)Gn~EhcsEk(Hg6
  143. zpFad!c6J^%@9~g4m?EW2!q&Y;b-T76BA~{Zg-dT*Thz&|+l}AD6jskZcEPgd_0Npl
  144. z&$m6yEykQ~Mu1b(ZdPg383YUhoj{<ccvzJl)w*M9oVRSnnstvnv*Wu)wRYydvzD$H
  145. zwzCN&O$4&ofK&A5elF1Bf~K~g^XJW*=bq!S-j1C;v$3(!d)|B8o%eY4wma^GpZE2m
  146. z^wF`i8|$5qy0)LSQ>&`nb3BH->#D0JO{_Tb@WZ|5y~o{ok5_M-<9YM;b?0?K`+(VA
  147. z?f>qKHKVKZ{k}~fW$LMOa*XP)CLT2&Ce}J1Ykn{^@wn%W>3;mSuild=9=l-3H&qw}
  148. z3<3rLgTP*dzz*iciRR6|uJ1)q7*o3tfnMU>t6812g|O^2{<a&tWmyu((zbS_$_nD1
  149. zAZ`xg{$v~{C%8Wa_oU$d6x^SR<J2ABzi@R-`@*#yA0M@kZUVj#@Pz<e0=|HQcIXQM
  150. zUkLa@z!w6(5D9!C;0pm?2>3$47sB{ryOCtuX}xW{1){nJd|}J9Afz4pBNnc^d}Ifq
  151. zmzv;H8$QKuV-MJge7nmUbwN7?dQ+emv0<mCCEE#Nqm$~Q#rNm_zTMz67knci(NEDy
  152. zCAy|1(ND1lDMSNoHyudyQ;B{m(N87%DRvusK<?&#D$!3R`l&=emFTCkoBHWlD>RU2
  153. zIpeeY>Dy7}#!exyo5HxutL;=HcSGSWZ=k7gml4<v?lo2JBM9VR9M8cxo`Z2b2je*Q
  154. zU`{uT<2e||b1;tQU>wiEIF8-M9?03v<9H6n@f?ifIT*)tFplSR(>QMC+xtj|`I?%M
  155. zi+-AmewvGZnu~slJ($}K{WKT-G#C9e7yUFB{S>>6J&?Pb`)MxvX)gL{F8XOM`e|-A
  156. z^;37g&B4~4YqvfAnnJ*+-3t)d<w=?;__ZOh7lhR=nfSE<Y81CaV3!<d3hfsNv<nt<
  157. zqFWKzFM@0jXk@oKwG+zr0I1?j=tNUY(Jn?H&M`(X2zU_a;!rcybpip8Tg;(BAP#{}
  158. zgq11U#R$YX#s~%h4+32rYI|RGb_?D~#rvYscT*wbcRvZ=Pxaf<AnJ>ImlZO8$CL1V
  159. zR=@S9puV_wUm^Q=|J85x)yF>aTu1j-FI(TyX;HmwLx<-*A!iN^0tSIDM!-fM!;aUw
  160. zTLRcW!#m!P)6!$_dE>gob&2b;Wf9)_?zZ>7J4^_jJZT48TI1g*NBfe|zGSp7xg`aA
  161. z2KIT~`JQ<vo3z8?b_&`X_a1x8;_iHxeTT;FhKpw0>EZ-osxt@}1PlTO0fT@+V7DP4
  162. zF%QSSE&jV(IET46_5k)p-T7Uv-7qzat5RYf9{+tYv=#Gk?D)P|OA7W3?DM+wdt`A2
  163. zcCjEa50C$zTFc_@{H|ITHz#3rwZ}j9RNI?sFTbnpDN%d*1MSZ3woYa$HV7C53<3rL
  164. zgTP*ZK)`Nk4dA;)SeTUoe77hdTe#cU1K1Y@uojCw80d!Y8nqjwcf*MQ=7a%!rzwE%
  165. zGzIXTra&^<i#Z|o0QMB@8QA9q@Ov=qIG={|yZ`SR?1rYQDg&4k2Cz08z;~$v_%2l-
  166. zwPkSt-=_+6)Ay-%SG%@XZ~gq=L@(7}75k$`^;g{+J--)pOJkxzz#y=PArMU<=D;AZ
  167. zpCGV@bwOi}LBJre7a*{oq({?CgFqC4y`Wnf6Ac0efjta?Al6`mSc45>4Oab$Z>+%v
  168. zu?CAhfPGOAYp~dZ!F^;6Hi$LYAl6`mSc45>4K|21SnM|T0QMB@8QA9qu?CAB=hJY0
  169. z?_GlpVhuKkHP|55V1rnL4Pp&8h&9;YKDq`wccl>SzK3<Seb$`lB*Ywa2?G0UpqPer
  170. z3j$pdg!_3V-Qp;tq{|T4&%?D#n%`y4FcozR0$t+t{k)QHag<TgWeDu&;kr}J?=sN4
  171. zsG=Nv2L!u~J%If){QZB(Y3Z^50f6gRd%_;TzNkC@C%{et>+|LutTn~|uK~0VYfaek
  172. zzXn=TuxDVO*PZ`^z^CcEbXyMAn&SV*LCfOq{67b~WOOGAneSqEQDQLF7z7Lg1_6VB
  173. zLBJre+Y!jcJRJMB`2XvJbC`Q$4`5%^o&V>j6H_o>MRPF^kN;mnXe;L7*zv!FT2ioQ
  174. zV4v5W|6|CP;k$TKF6QC!|HG(dad-Y7qg^z6my31uU2Im?(f6_S`S#z*=K0;;@r(k4
  175. zfI+|@U=T0}7zFlv1VVWCGK6<8LwNTxgzvwH@a`pc8+!ozq7dG_#2yUoBkx{@Fb@ym
  176. z-OCW(y$s>q%MjkZ#BO5`U{ArGfqh;G?_OfZ`81s0d*8hbVICgByO$xndl|yJmm$1+
  177. z8N$1lp?&n-OYisJIiGen?|0$dbNuvvFW!58zfTMX0E2)*z#w1{FbEg~b~^&zxraG6
  178. z2<+_$q>Dfb+t9i$ElUQP#KNU(1^$tb2#6GMJ+@V=n}2>bHr}&o<3kVg-0IcM&F;C4
  179. z8y|Xz=We-W)hhSgh7FrGU59NIHkRYI0ULGLN{5K*=;*%Aoa-(f0kmV;nn#}VVs*>v
  180. zRkuVj*tltf#wvDhqjT<-TUN*J+ptmHhjVM9WjAbmknQMD2QZD^w`tQRg*_Y+JqL$4
  181. z=VJFku{s9>qxWstxXINqd&TWfy6xx;_8pbg-ZwuD0tNwtfI(nSMWD9`<aXA!&r?57
  182. zWgU^8k)E;7f|LTxFnXo-!ZrS^4b}#&WGlI|+JrFrx)#sQd&JbxSp<#}?de-z-M8(&
  183. zZF5?^)K9dh&g%A-zq7SHd9S<2w}}SOusG7T#+P^RH=hOpgMdL`e@0+YpA~7B_nF^|
  184. zyI&misGvszo%y$4QfFR$UFT<=k+)yMTrmh31PlTO0fT@+z#w1{FbEg~3<3s${SAQ(
  185. z=Y4?vt=*=*1_6VBLBJqj5HJV`(MO!ptuSPYMvDr|?RAdcK$q!XY`1n<U2a9Y!_M7N
  186. zXJ2PNmtX5z9{;&Py{W<XG0kQWFbEg~3<3rLgTTIqK$ZyPu}uMSu!u||hnt1?OdKX6
  187. zv&ocFc&(aDDNW236BSd+5QmCL1DR45@0>`cwA_X?g-j`rbxtNz$`_}KNIjX-Xi*^|
  188. zHDpTtSZ)@XQn4r!kr`x4VQOe3QyMJFMPx3S(g<j%XdqK67jr~K6`9f~Q7<Yck|`Y|
  189. z3PeQ(nbJbkS%I79K*|^6C{>bqtx+5yD&~?Y9gfyk)Q~BS=bepYN)tt@sF+TsG>O+D
  190. zWJ=X|d#?fp=+@5Towa0MYvP@g$&_YFv|$pN(&@N1t%^)(5u^z<WJ>1%?FkVwr6p+l
  191. zv^iu-%OFjdL=K1H2b61^NanQ_;!QE3noQ|NF-uISB~x0>a<j>l?w~ZCOlbq9X=F+d
  192. zQ>rIZI^Tjcg-q!&=&PzHQ|fDfLrj1Y?aklf+Jre|UfWD*E}7EvkS0zeQ+f%pHL-?F
  193. z=@lS9aXOjOUm#UZAX6G8$BN3yWJ-U9WeqdQl-@&~m6c>l?@($aQ+glLq-kVI|DZIT
  194. zOzA(ArjRLpL8+chX&a=;lgN~8>tIngiA*T~sc{mSQW~Vmm1Ig;kS11=DdhvR$yH=Z
  195. z#k_M0nbHVK^<+xrl&Z;;4zdmvlP8iXjpMaCGNr?LZ3darcwTEHQ#wjQnoOotW#P6t
  196. zWJ=X2SJg<SRBIK9sv0t-I@B^VLZ;LRtE+0slx9<!My7Nu?yQ<YrZf-Ilm;@TChPlR
  197. zN-dev0xKe>OeBZv(EoVn(PUmbol+&4QUq2{sUcHZWQ`S5s>zhj;hl|SN*7yiim5eZ
  198. zO5;&(Y9*P{l~#qAI-N}Ea%+j0HkV9kxm7BrRgx*Kw9wt^$&_w}hH10Nl-5G3o=K*3
  199. zE81RNL8f#EuQiY<JwRy+nbHPIjbuujD9s>KdK9(POea$+h1E6F$drDEJ8Nc<DgE9G
  200. ziJCcNN?WXBM9oYxrB`@oBbic_eW<9ZB2)ScuN_UM^jAvtWJ<45nn9*?H{yCuBbm~h
  201. z)={EnHks07)H$h!Oz9(*n@FbgFG>^0lv>!LS~8`Nd99L6=@Uu~WJ;gGn>7(Kr3J{)
  202. zH8o^P0sAdc8zEClv;Qt?>&TQcFh0~)lPP6#w5TOh%Hy>OWJ<&AqeSgoGNrNhF`{-d
  203. znbJg}R7a+C0HoR}WJ-s!mKkJ9N7_ZAb`qIV1+PsfQxcG-*N`bqwP%RBX=F-MP-opN
  204. zGNtME+oCQ)rZm$&Ow>&#Q<_a_4w=%ilq$)T=25C5Q(6Fhb=71_r%-AnQ~DwG)srcm
  205. zWe*icN63`U!=3e&WJ(uOnog#4k$r@ypF!sMcPaGM&m!~MGTd2FO{R1?q=qUorK^$I
  206. zr`3`vT??st0-4fvxU*&wnbJx~bv0y4H$$2^flTQ%#QdxVGRLabXhTB{nb&TGEe(xi
  207. zN_W^JMMH#4=`Q<C(NIgKv<`LFH;^ek%5sy*l(KQHVK$l4W0a<mDLp}H3YpUHP;PF7
  208. zOz9<Dt85@sdXsn7lPO(^5xsgEnbNz6kcO#bN-eyzl1%9nNE52aly1hz)i{exsY2F^
  209. z#<^rlTcN$NicCoWm&VCt;*y4WL1QDC*Rn9;HP(_T<?>Ecq%F(iofF8smJeyhWHO~<
  210. zd8C*TA=A?txE84-^V*@PWpV|XQkBdWGaAU0Ds4zLWJ+^oftWFeOzBwIGGi{8QZd>v
  211. za|W5x@v>0NtRz!<oY!i}%=-26P%(1~S=EBvGjlST(kYCINn}btf;6X+OzBzRId>MB
  212. z(h}=+F}03N>F(Z;MvieLVYZz{Kq8}M2n*}HmYpwb%#&@qP}oU_3W<4@L_U>CnRr_0
  213. zE0QoT587EGD6&Pe2#Hkm#~#RWJ(1(n?XjY_U5-qBgy>@*i5y*wd0+`j4G~#(7&H7*
  214. z^va<k2R%C1o+?6iz37kJ**~dL46tX40Z9=tAXtHHevBAsA14Oc$BV&sl^7hDAO<IY
  215. zL*(1jVcF55(4H%b>{*DqIikc~D2CXliXlnwh|;9jL}~E*BAoP=7>coDnEi$ro^+uY
  216. z5x8EI$t9vJuv8oncvT!2_?svXye>ut=84fgPQX4N`!~g?)Nf&L5~EVSEk>uDg#AP@
  217. zI&}f|ld+$IJyj&z|G=}*yP_8`ZpA{f*>{A&{M6f1!+4exqT{1`qgN9hWvN=OPrWmh
  218. zN4B^=^<L-bj?_oh(Rkq=RV0Z21NxrVSJzh^J-W5;8_u~=Sr=y2DQ%rNvZH0yk;Z`M
  219. zl-}4?F)HiDtY+0B_Xy)O&e4JtpGUD0v7=bo*trgm?5H+%L`!33Q`9-ytdA5f_G$g*
  220. zXVc~s;U3x1BaH0M)!0$&zWAfsXe}KdX<JU~*YQ=?g4%3lAN0P`Pow4@(E@#rN576<
  221. z&5Y_D(!tR-=f2GB`PsTY_Xx92=bR8HW^Yzk{T|snERhnu%A=2+7P&{%@o`jJ+as2E
  222. zFnU!VdCu9qs-ykH>?^W$ByP_Bn{)1Ojy60oWS8XV`(j54I#MStX9y9rJms})N6(bw
  223. z$inF3ZsT!ai(n70Y+)2~H+_HXw}e`beXY0-H+t{q?*J{3yHU1<rM|JubB>JfD({{x
  224. z!@@sG7c%28r+O_1;^crx&dzsk;B~LP8Nv<%54X7B^(5SX;KBM7<$wr!%VX@OJY8wj
  225. z*ORkHAEgaIeHh<+hl*T%N)E<ki`V1qfgG#9+_vGZ9s^39_LSR6tRce@@ta&5a!O`Y
  226. z#yVC&1hNVpedU-_K+YKM*i&xzfSfvTC>@7Q%V~oSnBdB^Cv{*+#4Gn0P&~;i2Qr3C
  227. zj+cw4I5MoUMK9-Wt{cMpnCrNkmZ!O*x(<zpx+ipdllmO)oXAk^>l>|Ld=l{wWRy51
  228. z%9TF?eM_r!0m!hwXWp=hj;!ztjH-6()Aa{3#yIl$0PziE9O20H7w{hJm6L?*S3XXg
  229. z!0SmOkTdd-@u~#;4Sn!erLKVW2jH(_rvkQDiq!sYd$j%@1ExCq#w&c197%}rQt2O1
  230. z=3ehW#@zusL*K#sEv(hL+jvAT<E6wo(Te(Qk$$9mow5|^1<@1k1@qY<0<lci;bn8u
  231. zAYc$M2(&?<AAZxt?eN17@6tURzbV?Aw;Zu`Z#KWvw&!96n3W7`9RV5!(w`$*4^Xn-
  232. zPq&==>9?GFU*o)GE7q)g<QccT`{`cy`{|Z*KmC?-@7vStpf`4g&RV*n(=qXNRuB@$
  233. zy6P><vhC{G3zjvnf8;s$<PJU;Uc7n-SDj1!@rD7nyu6|z`T0dd+)w9n+{Xa%X6&&v
  234. z?uro%0tSJ71%W)Va2(rmO6n!4H>Vz+wJ2+SR!i21ehd1o>GxW{yzJT8%d>CK#zVCD
  235. zQhq7_D?gGSg5Fp3Pf4;wtK0_S^)Dg0avFYvkS3myPs!hbUY0L`?v{7SM`WYbXf;^V
  236. zK{bkwu}FDVNKvUp;+A3c25m;I+hkwC@~_B2R<U)wm2C~MrdpG&iPjXW%9>?mT9d3w
  237. zMHLpQPEjwb2PoCbRrHbg2#aCMY|<s5i$E9JKeMj{)!TKT>Gtu8#@XZS$@V0W2)r+o
  238. zu)^@ZY?bd~e;w_%#Q(`p<i|jQ^uGMP{Hw$o2#9UB@Mcej=q;YbdD5R0-6!vpPsk%I
  239. z(irO?YZPdtH6C=7h5z4TwPGbM-6Fk*-@5!)5$g(qdZ4!6s52A4Vd{(DN0C~w&cKxe
  240. ztaX8?J6X}^@(a*dafqVfScw>c-y|I^CWv3#q)qli_9Ke!w%37L?2kd8*l#Q9DSOJV
  241. zY?6egKG3;Ueh&JNTx<UlW!KwJ+E0Tvt9mx6dLFYMQ#Jn@SJ&J3+aIB}PeJb}>Lq*0
  242. zR{JcAbOvaVqLVGsudKTiHCv=7K@TcwRXW)Y5%?UKx55KkWh&Zfi7(`*@&kC{4aDFF
  243. zD*70SAIR6>nb+lD{N9Yz7prbr3V~r_jlIVHg?$U?7xt~76^j03|Bs^QY|=-dzk}XX
  244. z|4K)DvF%Ud&A%6{amSjbA}zZ=-7@-4O3tRjgDqiC(VzO5{YLkmZECc2Yv5-OMXAnb
  245. zPtlh2_1MpzxKr=3J9*WuA$F&Gq_3pn4!ufDyIuN9eg)e!xt7Od-3nLcXRKB3kv{9a
  246. z;vT!@v<7MnB6=C;>^qEd9p^c)i%~As^<)+8DfoR%GU6aU&Kc=C&Y!SJ8$k~#T5FU3
  247. zjYw~?KeXRalq{3w=Qc?qPN=O_ZUucI(_zH`^siF&xBbfSUgtp2U=Tm^6=k9)W(vGu
  248. zqW%itM1dFZ#CJf)i9gw-7eO!CFN2-}J#D9;SGhfFn_VaiWtJif8I@YM!t*+BCW~#d
  249. zC)yVfUm??ei1>aB8Ky=43)G_M4MhGMG9SO4E(Gy!Vr64B_b^e0w@FBh_S+O)Z<GFF
  250. z|F5DgHc7|%oAz7CYhTJ<`0XySOol#^j%a=SjwHS3(7Whyq<7@Qpoc&=fL1EHS>7yf
  251. zQpCLG(rEs%Q&7-)TWER<Z!0ply^Gb-FO~N`MHc-8?c;dzff`R*@cDs!Q4zDfrawwe
  252. zw@FP)<P!N~ML&_GrJzEqKvBL$`c!<P=q0>o`A6|0=oQe*AnGRlM-laZtn`2A<ntHh
  253. z3m{jcwuEPHmA_DQi6mVNqE=e61S8VGDCJon3Q~*sgQ6{B3oOt!xb4=uKUNy))en>f
  254. zEpoG>=cG%|O44Teb0ADQPo4`p2Xq1Gd_`GSUqzW10W+<4@DAuZ!27qL-za)oJT0CA
  255. z#dLp)464U2jrNBsuKplNZ0Yk3=`*Y4YPkv&)5x}8EH47(VGJhqSJZ+we*k*cq0M;X
  256. z^?8K>qkHQPFyA7#pv})K3$#|A*`o9|%VxP4Eoa-$Q(7;Sq`{V^K^DpNH#KUV+Vg)z
  257. zyO}3GQE~MFdJ*R<I+p*TVq0s{TK}N5#&oZO?(?Bt>!((taDgmPF~&Hf4gbO0v?SNd
  258. zFRD0u8Ih-Te-6AEXN+=p-oz;Xz(G3}V=nq@<QjPkC?0bnevuqvl_)C4EU4JpiuIeV
  259. z;!E)=h!Oq@-W~pn__O#EGAa>w<2>f?7RQd4F&}$bzN+XI%&N5flKiDZmr4?2Jr?If
  260. zt)W&Jq~~XPplB8UqlkL{3i>~gZZ}8jSi9NY_njQpzK^lxFQ9kds^}u+VWREYaIq}1
  261. z3ZqmI9ab?swB4e)g>laLS$u9`TVKJ9EY@<}`nB>`igae7Ugj0uzqOwSt4JGU{a1PW
  262. zQ<YU-5G3Xm<{3Rh{sNiB)y>?^mg_ziubUR=Gk40hinKOba2ZJFw)i;LkruC8M><DP
  263. zqOIqD9J}4|d#gIqGXjqE9P=sZpQG^IfzjA!idkZ|q8S1&xGB29zR5#RII}#?6gjth
  264. z7o&(K{EAyqPc`57&Q<$h4%tVIoP#i`k~oUGgs&(lI#Ha6_hU)l0)1Q2!}g;ddfnC(
  265. zltGN#$udPIfhbWo=jVDx!x62QGmA(UB#zvA>>elvITFuIbm(M3;^?g{;LpeG$34V0
  266. zzKy+y?BR^#DbP=fwVQZqeY(Y*#bjWuWhiI}<`Shic4;VP4w_CEXMlbPIt}y#MbFzW
  267. zfL?Tda)$B+XrLS@2g$*p0S>j--5W@AUZQntt;KkIr34nZREqCv;3Z`IjA>kmZ-{7m
  268. z*?tA|s`GQ3-KvQ5l_Ev?l2m|MIT24%QPfi*-pkRdF(|`q<Nz^T(Fh#7)QHF;ou%k(
  269. zaklu8qDA=b2Qg+;>7RXMADM~$AVp*37&%hWC<pU2)zVC7{*#OM^Fks=5w(s0>ipZx
  270. z+Je|K5a)*)aq2xCMClCiPs|Qulp{5bljGzeiVl{V^ei<QQO+pSIP1BpM!p=sJugSg
  271. zN&1*SN1|8FQFIQz)pD*PBEa^aBR*5JP}k2TQqyEfssdGlCV^bc8Rzk_ru&=L%BQ^%
  272. zjs*vZ13|MKI#ZnK=p@>d&cqwJU)kHDG)!umCa1}2MN{Qe98Xi2bC$@bdAHq+w7$TA
  273. z@qVzPF@iMKkq*W;jpjRavA9@VqUb_#p|}WiG2Zy?CDWtSHi>&=#2T{;dsrI!7+b67
  274. z-@2zAgl{_?g#5)UrjPk^jF{)p1>yonr#_+unX<1l1Lr(EA}bWlm-FQ}WfO=;B#pV&
  275. z-4W)x#iOA)rkm%e`vj1y@gi})I;I@2TWhX>Uai@q8~uwTxKP6^=j7~h?z4Wtc@i0f
  276. zoaW7H`A+|?K|VVL-$5gt1kxGqIrR*np9HqppE;B(b7g-;*)m(jzHoH8m=kqxZqZSu
  277. z`<FiE&oU><=c+z^CZcSS)7zNg{){IP{lv|m0ja4N@je7ps`5**EJk~EZqZMsdIgDD
  278. zrMHu3bUx9&TkF=@We&c#$DLYrexX*KUtYuL@rE;kysq*%bNL8RnWC^9s$##rZa3O>
  279. z+%d{VIXzn+>$ubYo(C_}&x|nk^7BB81;@$vqQtC5Vn!PaI@rl-%xk*cx_>jjq(^fq
  280. zV?NfunOjNh-3Q|L1)5^HMfY@K@P=B`;JOA$KZEv^2Y?P#G+Yi>D74qjF_h2ZI-ie3
  281. z4jbv{V?J}~c%f-A+R50yKxH(Y;oiVniYAVqTm>SPgGS0xAR<po^f=ZtE}QBVF0SD8
  282. zQzOX%Dyz}+y5;;iSJ5#}7NyQuyWg|_5v70HdMwF|jwE_486`(!9gqDfIhtG8TAk6@
  283. z`rc|JiH#+(NZ0eE+0dx7xE{xJUX6L1HfV3h{5@8+eKd4qlB`J2$aI{0G1s#NJ#M=*
  284. z2hJz>e+L@y+iZ?oI=VTMb1XYu{M-J(L%J{Ls1fWiN#ZER5v~2)AzkJ1KC0E;Skt}D
  285. zMO}|#b3B;qHZ#_~u(x{1lfT;@I&+8kIA<=`m~+N7RLz)5)sdEmsW#&aB5JmzwZ=yB
  286. zWSQzAMi&uo1kI2$LG_>pkT=eIIHS1Ms^grxhGCw@*_xg~=p3hKEi-|)J92W?Mrn~6
  287. z#~9gqEISx;2GShRT+lIc7HBreLjUIcw?M7il&E=`o}cJk#x*2-rPZ00;%k&@RjE>Z
  288. zU(speD$v!6uEe)<C|w1AYkJ=%4Ul=Dfy&d`-`bW#oH*w=#_?N68AtCdXC&4Bb$zX8
  289. zZ#?Jb)L74A#A)<(PI3FVj`O~%ckBMGvrM^zIoGgBu{iJT<QAR9Vmc{v)}*uAaZV;(
  290. zj9kk35@$^3i2p{%F3z4xF?y8Bu$m?5dD8?rK~4m@{^nScs&wmo&UJ0lSVeliz?q9X
  291. zci~eA=@M}%=*J+=S~!cjSoD->Af3(9<>B%O(2?>udAy=;D6iA=I=6V|4je;CTDP7t
  292. z=usp#gBat?n7#>pu0}noFuR6i$Qh~o<0)VYh%>a4Kqo8uw*0m{5v1Gg)g9~K)IJV$
  293. zh-aQgiNt3g(o)b*6miz3F>uEUJ!&2!k5zPzT9M+)%$cCGKzfdx=CqYLJWI{XbJcGx
  294. zvZ0mQU95Smt>H5up8|>Y5=AlHLoq(<5t>%$eszqa?`(Ot{1IposH42b_A<BdlXEl9
  295. z72Wxop1+O7chpJWQvTIiiMF1px;<Jy3oLNZ=9-9pKIcjS*CJirZeC+X(f-!`P0vkZ
  296. zp5`2t<khVsEH;a%KpeZVJW-wwIs>#^UIV%obTw!>i1SoF1?wkzckU3&sWHsm2-m2)
  297. zPu;|uK3@uNYkyxVIPZ6#1FF%w?QYOb?XjNi{+>!dA!tq7->$D2Yn+pk7-!2sKUFbz
  298. znL3`W@~6(AbAU5fLzb!4nYHpx5Z9>g0C}H@dN}h#jW*Hm?I5g?*J$hKllHO3=M&x2
  299. znXlcPJv-`UYUBFQT6sH&`nQXRxnK}52p9wm0tNwtfI+|@U=T0}7z7Lg1_6VBLBJqj
  300. z5HJWB1PlTO0fT@+z#w1{*zXV+DE>G47q0fZ#+wEk1PlTO0fT@+z#w1{FbM2(2>d@Q
  301. CPBuUQ
  302. literal 0
  303. HcmV?d00001
  304. diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network
  305. index 93421fbb86dc..cbd229347f76 100644
  306. --- a/target/linux/ipq807x/base-files/etc/board.d/02_network
  307. +++ b/target/linux/ipq807x/base-files/etc/board.d/02_network
  308. @@ -17,6 +17,9 @@ ipq807x_setup_interfaces()
  309. zte,mf269)
  310. ucidef_set_interfaces_lan_wan "eth0" "eth1"
  311. ;;
  312. + tplink,xtr10890)
  313. + ucidef_set_interfaces_lan_wan "eth0 eth1 eth2 eth3 eth4" "eth5"
  314. + ;;
  315. *)
  316. echo "Unsupported hardware. Network interfaces not initialized"
  317. ;;
  318. diff --git a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
  319. index 68334ce4101e..4a91b83d8604 100644
  320. --- a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
  321. +++ b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
  322. @@ -15,6 +15,9 @@ case "$FIRMWARE" in
  323. zte,mf269)
  324. caldata_extract "0:ART" 0x1000 0x20000
  325. ;;
  326. + tplink,xtr10890)
  327. + caldata_extract "0:ART" 0x1000 0x20000
  328. + ;;
  329. esac
  330. ;;
  331. *)
  332. diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
  333. index a7de5ea47afe..a164a73deb7b 100644
  334. --- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
  335. +++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
  336. @@ -18,6 +18,9 @@ platform_do_upgrade() {
  337. zte,mf269)
  338. nand_do_upgrade "$1"
  339. ;;
  340. + tplink,xtr10890)
  341. + nand_do_upgrade "$1"
  342. + ;;
  343. *)
  344. default_do_upgrade "$1"
  345. ;;
  346. diff --git a/target/linux/ipq807x/files-5.15/arch/arm64/boot/dts/qcom/ipq8078-xtr10890.dts b/target/linux/ipq807x/files-5.15/arch/arm64/boot/dts/qcom/ipq8078-xtr10890.dts
  347. new file mode 100755
  348. index 000000000000..9b2ef387508c
  349. --- /dev/null
  350. +++ b/target/linux/ipq807x/files-5.15/arch/arm64/boot/dts/qcom/ipq8078-xtr10890.dts
  351. @@ -0,0 +1,969 @@
  352. +// SPDX-License-Identifier: GPL-2.0-only
  353. +/dts-v1/;
  354. +/* Copyright (c) 2017, 2020-2021, The Linux Foundation. All rights reserved.
  355. + */
  356. +#include "ipq8074.dtsi"
  357. +#include "ipq8074-hk-cpu.dtsi"
  358. +#include "ipq8074-ac-nss.dtsi"
  359. +#include <dt-bindings/gpio/gpio.h>
  360. +#include <dt-bindings/input/input.h>
  361. +#include <dt-bindings/leds/common.h>
  362. +
  363. +/ {
  364. + #address-cells = <0x2>;
  365. + #size-cells = <0x2>;
  366. + model = "TP-LINK XTR10890";
  367. + compatible = "tplink,xtr10890", "qcom,ipq8074";
  368. + interrupt-parent = <&intc>;
  369. + //qcom,msm-id = <0x143 0x0>, <0x186 0x0>, <0x158 0x0>, <0x188 0x0>;
  370. +
  371. + aliases {
  372. + serial0 = &blsp1_uart5;
  373. + serial1 = &blsp1_uart3;
  374. + /*
  375. + * Aliases as required by u-boot
  376. + * to patch MAC addresses
  377. + */
  378. + led-boot = &led_system_red;
  379. + led-failsafe = &led_system_green;
  380. + led-running = &led_system_red;
  381. + led-upgrade = &led_system_green;
  382. + ethernet0 = &dp1;
  383. + ethernet1 = &dp2;
  384. + ethernet2 = &dp3;
  385. + ethernet3 = &dp4;
  386. + ethernet4 = &dp5;
  387. + ethernet5 = &dp6;
  388. + };
  389. +
  390. + chosen {
  391. + stdout-path = "serial0";
  392. + bootargs-append = " root=/dev/ubiblock0_1 rootfstype=squashfs";
  393. + };
  394. +
  395. + reserved-memory {
  396. +
  397. + /delete-node/ wifi_dump@51100000;
  398. + /delete-node/ wigig_dump@51300000;
  399. + qcn9000_pcie0: qcn9000_pcie0@51100000 {
  400. + no-map;
  401. + reg = <0x0 0x51100000 0x0 0x03500000>;
  402. + };
  403. +
  404. + mhi_region0: dma_pool0@54600000 {
  405. + compatible = "shared-dma-pool";
  406. + no-map;
  407. + reg = <0x0 0x54600000 0x0 0x00900000>;
  408. + };
  409. +
  410. + };
  411. +
  412. +
  413. + keys {
  414. + compatible = "gpio-keys";
  415. + pinctrl-0 = <&button_pins>;
  416. + pinctrl-names = "default";
  417. + status = "okay";
  418. + button@1 {
  419. + label = "wps";
  420. + linux,code = <KEY_WPS_BUTTON>;
  421. + gpios = <&tlmm 50 GPIO_ACTIVE_LOW>;
  422. + linux,input-type = <1>;
  423. + debounce-interval = <60>;
  424. + };
  425. + };
  426. +
  427. + leds {
  428. + compatible = "gpio-leds";
  429. + led_system_green: system-green {
  430. + label = "green:system";
  431. + gpios = <&tlmm 31 GPIO_ACTIVE_LOW>;
  432. + };
  433. + led_system_red: system-red {
  434. + label = "red:system";
  435. + gpios = <&tlmm 29 GPIO_ACTIVE_HIGH>;
  436. + };
  437. +
  438. + 10g-green {
  439. + label = "green:10g";
  440. + gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
  441. + };
  442. +
  443. + sfp_green {
  444. + label = "green:sfp";
  445. + gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>;
  446. + };
  447. + };
  448. +
  449. +};
  450. +
  451. +&sdhc_1 {
  452. + status = "okay";
  453. +};
  454. +
  455. +
  456. +&qpic_nand {
  457. + pinctrl-0 = <&qpic_pins>;
  458. + pinctrl-names = "default";
  459. + status = "okay";
  460. + nand@0 {
  461. + reg = <0>;
  462. + #address-cells = <1>;
  463. + #size-cells = <1>;
  464. + nand-ecc-strength = <4>;
  465. + nand-ecc-step-size = <512>;
  466. + nand-bus-width = <8>;
  467. +
  468. + partition0@0 {
  469. + label = "0:SBL1";
  470. + reg = <0x0 0x80000>;
  471. + read-only;
  472. + };
  473. + partition1@80000 {
  474. + label = "0:MIBIB";
  475. + reg = <0x80000 0x40000>;
  476. + };
  477. +
  478. + partition2@c0000 {
  479. + label = "0:BOOTCONFIG";
  480. + reg = <0xc0000 0x20000>;
  481. + read-only;
  482. + };
  483. + partition3@e0000 {
  484. + label = "0:BOOTCONFIG1";
  485. + reg = <0xe0000 0x20000>;
  486. + read-only;
  487. + };
  488. +
  489. + partition4@100000 {
  490. + label = "0:QSEE";
  491. + reg = <0x100000 0x280000>;
  492. + read-only;
  493. + };
  494. +
  495. + partition4@380000 {
  496. + label = "0:DEVCFG";
  497. + reg = <0x380000 0x20000>;
  498. + read-only;
  499. + };
  500. +
  501. + partition4@3a0000 {
  502. + label = "0:RPM";
  503. + reg = <0x3a0000 0x40000>;
  504. + read-only;
  505. + };
  506. +
  507. + partition5@3e0000 {
  508. + label = "0:CDT";
  509. + reg = <0x3e0000 0x20000>;
  510. + read-only;
  511. + };
  512. +
  513. + partition6@400000 {
  514. + label = "0:APPSBLENV";
  515. + reg = <0x400000 0x40000>;
  516. + };
  517. +
  518. + partition7@440000 {
  519. + label = "0:APPSBL";
  520. + reg = <0x440000 0x100000>;
  521. + };
  522. +
  523. + partition8@540000 {
  524. + label = "0:ART";
  525. + reg = <0x540000 0x80000>;
  526. + };
  527. +
  528. + partition12@5c0000 {
  529. + label = "rootfs";
  530. + reg = <0x5c0000 0x7000000>;
  531. + };
  532. +
  533. + partition13@75c0000 {
  534. + label = "0:WIFIFW";
  535. + reg = <0x75c0000 0x900000>;
  536. + };
  537. +
  538. + partition15@7ec0000 {
  539. + label = "0:ETHPHYFW";
  540. + reg = <0x7ec0000 0x80000>;
  541. + };
  542. + };
  543. +};
  544. +
  545. +
  546. +&mdio{
  547. + status = "okay";
  548. +
  549. + pinctrl-0 = <&mdio_pins>;
  550. + pinctrl-names = "default";
  551. + phy-reset-gpio = <&tlmm 37 0>;
  552. + phy0: ethernet-phy@0 {
  553. + reg = <16>;
  554. + };
  555. + phy1: ethernet-phy@1 {
  556. + reg = <17>;
  557. + };
  558. + phy2: ethernet-phy@2 {
  559. + reg = <18>;
  560. + };
  561. + phy3: ethernet-phy@3 {
  562. + reg = <19>;
  563. + };
  564. + phy4: ethernet-phy@4 {
  565. + reg = <30>;
  566. + };
  567. + phy5: ethernet-phy@5 {
  568. + compatible ="ethernet-phy-ieee802.3-c45";
  569. + reg = <0>;
  570. + };
  571. +};
  572. +
  573. +&tlmm {
  574. + sd_pins: sd-pinmux {
  575. + pins = "gpio63";
  576. + function = "sd_card";
  577. + drive-strength = <8>;
  578. + bias-pull-up;
  579. + };
  580. +
  581. + button_pins: button_pins {
  582. + wps_button {
  583. + pins = "gpio50";
  584. + function = "gpio";
  585. + drive-strength = <8>;
  586. + bias-pull-up;
  587. + };
  588. + };
  589. +
  590. + leds_pins: leds_pinmux {
  591. + led_pwr_green {
  592. + pins = "gpio31";
  593. + function = "gpio";
  594. + drive-strength = <8>;
  595. + bias-pull-down;
  596. + };
  597. +
  598. + led_pwr_red {
  599. + pins = "gpio29";
  600. + function = "gpio";
  601. + drive-strength = <8>;
  602. + bias-pull-down;
  603. + };
  604. +
  605. + led_sfp_green {
  606. + pins = "gpio30";
  607. + function = "gpio";
  608. + drive-strength = <8>;
  609. + bias-pull-down;
  610. + };
  611. +
  612. + led_10g_green {
  613. + pins = "gpio32";
  614. + function = "gpio";
  615. + drive-strength = <8>;
  616. + bias-pull-down;
  617. + };
  618. + };
  619. +
  620. + mdio_pins: mdio_pinmux {
  621. + mux_0 {
  622. + pins = "gpio68";
  623. + function = "mdc";
  624. + drive-strength = <8>;
  625. + bias-pull-up;
  626. + };
  627. + mux_1 {
  628. + pins = "gpio69";
  629. + function = "mdio";
  630. + drive-strength = <8>;
  631. + bias-pull-up;
  632. + };
  633. + };
  634. +
  635. + qpic_pins: qpic-pins {
  636. + pins = "gpio1", "gpio3", "gpio4",
  637. + "gpio5", "gpio6", "gpio7",
  638. + "gpio8", "gpio10", "gpio11",
  639. + "gpio12", "gpio13", "gpio14",
  640. + "gpio15", "gpio17";
  641. + function = "qpic";
  642. + drive-strength = <8>;
  643. + bias-disable;
  644. + };
  645. +
  646. + uniphy_pins: uniphy_pinmux {
  647. + mux {
  648. + pins = "gpio60";
  649. + function = "rx2";
  650. + bias-disable;
  651. + };
  652. +
  653. + sfp_tx {
  654. + pins = "gpio52";
  655. + function = "gpio";
  656. + drive-strength = <8>;
  657. + bias-pull-down;
  658. + output-low;
  659. + };
  660. + };
  661. +
  662. + i2c_0_pins: i2c-0-pinmux {
  663. + pins = "gpio46", "gpio47";
  664. + function = "blsp1_i2c";
  665. + drive-strength = <8>;
  666. + bias-disable;
  667. + };
  668. +
  669. + pwm_pins: pwm_pinmux {
  670. + mux_1 {
  671. + pins = "gpio25";
  672. + function = "pwm02";
  673. + drive-strength = <8>;
  674. + };
  675. + };
  676. +
  677. + pcie0_pins: pcie_pins {
  678. + pcie0_rst {
  679. + pins = "gpio58";
  680. + function = "pcie0_rst";
  681. + drive-strength = <8>;
  682. + bias-pull-down;
  683. + };
  684. + pcie0_wake {
  685. + pins = "gpio59";
  686. + function = "pcie0_wake";
  687. + drive-strength = <8>;
  688. + bias-pull-down;
  689. + };
  690. + };
  691. +};
  692. +
  693. +&blsp1_uart5 {
  694. + status = "okay";
  695. +};
  696. +
  697. +&blsp1_spi1 {
  698. + status = "okay";
  699. + pinctrl-0 = <&spi_0_pins>;
  700. + pinctrl-names = "default";
  701. + cs-select = <0>;
  702. +
  703. + m25p80@0 {
  704. + compatible = "n25q128a11";
  705. + #address-cells = <1>;
  706. + #size-cells = <1>;
  707. + reg = <0>;
  708. + spi-max-frequency = <50000000>;
  709. + };
  710. +};
  711. +
  712. +&blsp1_i2c2 {
  713. + pinctrl-0 = <&i2c_0_pins>;
  714. + pinctrl-names = "default";
  715. + status = "okay";
  716. +};
  717. +
  718. +&ssphy_0 {
  719. + status = "okay";
  720. +};
  721. +
  722. +&qusb_phy_0 {
  723. + status = "okay";
  724. +};
  725. +
  726. +&ssphy_1 {
  727. + status = "okay";
  728. +};
  729. +
  730. +&qusb_phy_1 {
  731. + status = "okay";
  732. +};
  733. +
  734. +&usb_0 {
  735. + status = "okay";
  736. +};
  737. +
  738. +&usb_1 {
  739. + status = "okay";
  740. +};
  741. +
  742. +&prng {
  743. + status = "okay";
  744. +};
  745. +
  746. +&cryptobam {
  747. + status = "okay";
  748. +};
  749. +
  750. +&crypto {
  751. + status = "okay";
  752. +};
  753. +
  754. +&qpic_bam {
  755. + status = "okay";
  756. +};
  757. +
  758. +&qmp_pcie_phy0 {
  759. + status = "okay";
  760. +};
  761. +
  762. +&pcie0 {
  763. + perst-gpio = <&tlmm 58 1>;
  764. + status = "okay";
  765. +
  766. + pcie0_rp {
  767. + status = "ok";
  768. +
  769. + mhi_0: qcom,mhi@0 {
  770. + reg = <0 0 0 0 0 >;
  771. + qrtr_instance_id = <0x20>;
  772. + #address-cells = <0x2>;
  773. + #size-cells = <0x2>;
  774. + memory-region = <&mhi_region0>;
  775. + // base-addr = <0x51100000>;
  776. + // m3-dump-addr = <0x53400000>;
  777. + // etr-addr = <0x53500000>;
  778. + // qcom,caldb-addr = <0x53600000>;
  779. + // mhi,max-channels = <30>;
  780. + // mhi,timeout = <10000>;
  781. + // qcom,board_id= <0xa4>;
  782. +
  783. + // pcie0_mhi: pcie0_mhi {
  784. + // status = "ok";
  785. + // };
  786. + };
  787. + };
  788. +
  789. +};
  790. +
  791. +&qmp_pcie_phy1 {
  792. + //status = "okay";
  793. + status = "disabled";
  794. +};
  795. +
  796. +&pcie1 {
  797. + perst-gpio = <&tlmm 61 0x1>;
  798. + status = "disabled";
  799. +};
  800. +
  801. +&ess_switch {
  802. + status = "okay";
  803. + pinctrl-0 = <&uniphy_pins>;
  804. + pinctrl-names = "default";
  805. + switch_cpu_bmp = <0x1>; /* cpu port bitmap */
  806. + switch_lan_bmp = <0x3e>; /* lan port bitmap */
  807. + switch_wan_bmp = <0x40>; /* wan port bitmap */
  808. + switch_mac_mode = <0x0b>; /* mac mode for uniphy instance0*/
  809. + switch_mac_mode1 = <0x0e>; /* mac mode for uniphy instance1*/
  810. + switch_mac_mode2 = <0x0d>; /* mac mode for uniphy instance2*/
  811. + bm_tick_mode = <0>; /* bm tick mode */
  812. + tm_tick_mode = <0>; /* tm tick mode */
  813. + qcom,port_phyinfo {
  814. + port@0 {
  815. + port_id = <1>;
  816. + phy_address = <16>;
  817. + };
  818. + port@1 {
  819. + port_id = <2>;
  820. + phy_address = <17>;
  821. + };
  822. + port@2 {
  823. + port_id = <3>;
  824. + phy_address = <18>;
  825. + };
  826. + port@3 {
  827. + port_id = <4>;
  828. + phy_address = <19>;
  829. + };
  830. + port@4 {
  831. + port_id = <5>;
  832. + phy_address = <30>;
  833. + phy_i2c_address = <30>;
  834. + phy-i2c-mode; /*i2c access phy */
  835. + media-type = "sfp"; /* fiber mode */
  836. + };
  837. + port@5 {
  838. + port_id = <6>;
  839. + phy_address = <0>;
  840. + ethernet-phy-ieee802.3-c45;
  841. + };
  842. + };
  843. + port_scheduler_resource {
  844. +
  845. + port@0 {
  846. + port_id = < 0x00 >;
  847. + ucast_queue = < 0x00 0x8f >;
  848. + mcast_queue = < 0x100 0x10f >;
  849. + l0sp = < 0x00 0x23 >;
  850. + l0cdrr = < 0x00 0x2f >;
  851. + l0edrr = < 0x00 0x2f >;
  852. + l1cdrr = < 0x00 0x07 >;
  853. + l1edrr = < 0x00 0x07 >;
  854. + };
  855. +
  856. + port@1 {
  857. + port_id = < 0x01 >;
  858. + ucast_queue = < 0x90 0x9f >;
  859. + mcast_queue = < 0x110 0x113 >;
  860. + l0sp = < 0x24 0x27 >;
  861. + l0cdrr = < 0x30 0x3f >;
  862. + l0edrr = < 0x30 0x3f >;
  863. + l1cdrr = < 0x08 0x0b >;
  864. + l1edrr = < 0x08 0x0b >;
  865. + };
  866. +
  867. + port@2 {
  868. + port_id = < 0x02 >;
  869. + ucast_queue = < 0xa0 0xaf >;
  870. + mcast_queue = < 0x114 0x117 >;
  871. + l0sp = < 0x28 0x2b >;
  872. + l0cdrr = < 0x40 0x4f >;
  873. + l0edrr = < 0x40 0x4f >;
  874. + l1cdrr = < 0x0c 0x0f >;
  875. + l1edrr = < 0x0c 0x0f >;
  876. + };
  877. +
  878. + port@3 {
  879. + port_id = < 0x03 >;
  880. + ucast_queue = < 0xb0 0xbf >;
  881. + mcast_queue = < 0x118 0x11b >;
  882. + l0sp = < 0x2c 0x2f >;
  883. + l0cdrr = < 0x50 0x5f >;
  884. + l0edrr = < 0x50 0x5f >;
  885. + l1cdrr = < 0x10 0x13 >;
  886. + l1edrr = < 0x10 0x13 >;
  887. + };
  888. +
  889. + port@4 {
  890. + port_id = < 0x04 >;
  891. + ucast_queue = < 0xc0 0xcf >;
  892. + mcast_queue = < 0x11c 0x11f >;
  893. + l0sp = < 0x30 0x33 >;
  894. + l0cdrr = < 0x60 0x6f >;
  895. + l0edrr = < 0x60 0x6f >;
  896. + l1cdrr = < 0x14 0x17 >;
  897. + l1edrr = < 0x14 0x17 >;
  898. + };
  899. +
  900. + port@5 {
  901. + port_id = < 0x05 >;
  902. + ucast_queue = < 0xd0 0xdf >;
  903. + mcast_queue = < 0x120 0x123 >;
  904. + l0sp = < 0x34 0x37 >;
  905. + l0cdrr = < 0x70 0x7f >;
  906. + l0edrr = < 0x70 0x7f >;
  907. + l1cdrr = < 0x18 0x1b >;
  908. + l1edrr = < 0x18 0x1b >;
  909. + };
  910. +
  911. + port@6 {
  912. + port_id = < 0x06 >;
  913. + ucast_queue = < 0xe0 0xef >;
  914. + mcast_queue = < 0x124 0x127 >;
  915. + l0sp = < 0x38 0x3b >;
  916. + l0cdrr = < 0x80 0x8f >;
  917. + l0edrr = < 0x80 0x8f >;
  918. + l1cdrr = < 0x1c 0x1f >;
  919. + l1edrr = < 0x1c 0x1f >;
  920. + };
  921. +
  922. + port@7 {
  923. + port_id = < 0x07 >;
  924. + ucast_queue = < 0xf0 0xff >;
  925. + mcast_queue = < 0x128 0x12b >;
  926. + l0sp = < 0x3c 0x3f >;
  927. + l0cdrr = < 0x90 0x9f >;
  928. + l0edrr = < 0x90 0x9f >;
  929. + l1cdrr = < 0x20 0x23 >;
  930. + l1edrr = < 0x20 0x23 >;
  931. + };
  932. + };
  933. +
  934. + port_scheduler_config {
  935. +
  936. + port@0 {
  937. + port_id = < 0x00 >;
  938. +
  939. + l1scheduler {
  940. +
  941. + group@0 {
  942. + sp = < 0x00 0x01 >;
  943. + cfg = < 0x00 0x00 0x00 0x00 >;
  944. + };
  945. + };
  946. +
  947. + l0scheduler {
  948. +
  949. + group@0 {
  950. + ucast_queue = < 0x00 0x04 0x08 >;
  951. + mcast_queue = < 0x100 0x104 >;
  952. + cfg = < 0x00 0x00 0x00 0x00 0x00 >;
  953. + };
  954. +
  955. + group@1 {
  956. + ucast_queue = < 0x01 0x05 0x09 >;
  957. + mcast_queue = < 0x101 0x105 >;
  958. + cfg = < 0x00 0x01 0x01 0x01 0x01 >;
  959. + };
  960. +
  961. + group@2 {
  962. + ucast_queue = < 0x02 0x06 0x0a >;
  963. + mcast_queue = < 0x102 0x106 >;
  964. + cfg = < 0x00 0x02 0x02 0x02 0x02 >;
  965. + };
  966. +
  967. + group@3 {
  968. + ucast_queue = < 0x03 0x07 0x0b >;
  969. + mcast_queue = < 0x103 0x107 >;
  970. + cfg = < 0x00 0x03 0x03 0x03 0x03 >;
  971. + };
  972. + };
  973. + };
  974. +
  975. + port@1 {
  976. + port_id = < 0x01 >;
  977. +
  978. + l1scheduler {
  979. +
  980. + group@0 {
  981. + sp = < 0x24 >;
  982. + cfg = < 0x00 0x08 0x00 0x08 >;
  983. + };
  984. +
  985. + group@1 {
  986. + sp = < 0x25 >;
  987. + cfg = < 0x01 0x09 0x01 0x09 >;
  988. + };
  989. + };
  990. +
  991. + l0scheduler {
  992. +
  993. + group@0 {
  994. + ucast_queue = < 0x90 >;
  995. + ucast_loop_pri = < 0x10 >;
  996. + mcast_queue = < 0x110 >;
  997. + mcast_loop_pri = < 0x04 >;
  998. + cfg = < 0x24 0x00 0x30 0x00 0x30 >;
  999. + };
  1000. + };
  1001. + };
  1002. +
  1003. + port@2 {
  1004. + port_id = < 0x02 >;
  1005. +
  1006. + l1scheduler {
  1007. +
  1008. + group@0 {
  1009. + sp = < 0x28 >;
  1010. + cfg = < 0x00 0x0c 0x00 0x0c >;
  1011. + };
  1012. +
  1013. + group@1 {
  1014. + sp = < 0x29 >;
  1015. + cfg = < 0x01 0x0d 0x01 0x0d >;
  1016. + };
  1017. + };
  1018. +
  1019. + l0scheduler {
  1020. +
  1021. + group@0 {
  1022. + ucast_queue = < 0xa0 >;
  1023. + ucast_loop_pri = < 0x10 >;
  1024. + mcast_queue = < 0x114 >;
  1025. + mcast_loop_pri = < 0x04 >;
  1026. + cfg = < 0x28 0x00 0x40 0x00 0x40 >;
  1027. + };
  1028. + };
  1029. + };
  1030. +
  1031. + port@3 {
  1032. + port_id = < 0x03 >;
  1033. +
  1034. + l1scheduler {
  1035. +
  1036. + group@0 {
  1037. + sp = < 0x2c >;
  1038. + cfg = < 0x00 0x10 0x00 0x10 >;
  1039. + };
  1040. +
  1041. + group@1 {
  1042. + sp = < 0x2d >;
  1043. + cfg = < 0x01 0x11 0x01 0x11 >;
  1044. + };
  1045. + };
  1046. +
  1047. + l0scheduler {
  1048. +
  1049. + group@0 {
  1050. + ucast_queue = < 0xb0 >;
  1051. + ucast_loop_pri = < 0x10 >;
  1052. + mcast_queue = < 0x118 >;
  1053. + mcast_loop_pri = < 0x04 >;
  1054. + cfg = < 0x2c 0x00 0x50 0x00 0x50 >;
  1055. + };
  1056. + };
  1057. + };
  1058. +
  1059. + port@4 {
  1060. + port_id = < 0x04 >;
  1061. +
  1062. + l1scheduler {
  1063. +
  1064. + group@0 {
  1065. + sp = < 0x30 >;
  1066. + cfg = < 0x00 0x14 0x00 0x14 >;
  1067. + };
  1068. +
  1069. + group@1 {
  1070. + sp = < 0x31 >;
  1071. + cfg = < 0x01 0x15 0x01 0x15 >;
  1072. + };
  1073. + };
  1074. +
  1075. + l0scheduler {
  1076. +
  1077. + group@0 {
  1078. + ucast_queue = < 0xc0 >;
  1079. + ucast_loop_pri = < 0x10 >;
  1080. + mcast_queue = < 0x11c >;
  1081. + mcast_loop_pri = < 0x04 >;
  1082. + cfg = < 0x30 0x00 0x60 0x00 0x60 >;
  1083. + };
  1084. + };
  1085. + };
  1086. +
  1087. + port@5 {
  1088. + port_id = < 0x05 >;
  1089. +
  1090. + l1scheduler {
  1091. +
  1092. + group@0 {
  1093. + sp = < 0x34 >;
  1094. + cfg = < 0x00 0x18 0x00 0x18 >;
  1095. + };
  1096. +
  1097. + group@1 {
  1098. + sp = < 0x35 >;
  1099. + cfg = < 0x01 0x19 0x01 0x19 >;
  1100. + };
  1101. + };
  1102. +
  1103. + l0scheduler {
  1104. +
  1105. + group@0 {
  1106. + ucast_queue = < 0xd0 >;
  1107. + ucast_loop_pri = < 0x10 >;
  1108. + mcast_queue = < 0x120 >;
  1109. + mcast_loop_pri = < 0x04 >;
  1110. + cfg = < 0x34 0x00 0x70 0x00 0x70 >;
  1111. + };
  1112. + };
  1113. + };
  1114. +
  1115. + port@6 {
  1116. + port_id = < 0x06 >;
  1117. +
  1118. + l1scheduler {
  1119. +
  1120. + group@0 {
  1121. + sp = < 0x38 >;
  1122. + cfg = < 0x00 0x1c 0x00 0x1c >;
  1123. + };
  1124. +
  1125. + group@1 {
  1126. + sp = < 0x39 >;
  1127. + cfg = < 0x01 0x1d 0x01 0x1d >;
  1128. + };
  1129. + };
  1130. +
  1131. + l0scheduler {
  1132. +
  1133. + group@0 {
  1134. + ucast_queue = < 0xe0 >;
  1135. + ucast_loop_pri = < 0x10 >;
  1136. + mcast_queue = < 0x124 >;
  1137. + mcast_loop_pri = < 0x04 >;
  1138. + cfg = < 0x38 0x00 0x80 0x00 0x80 >;
  1139. + };
  1140. + };
  1141. + };
  1142. +
  1143. + port@7 {
  1144. + port_id = < 0x07 >;
  1145. +
  1146. + l1scheduler {
  1147. +
  1148. + group@0 {
  1149. + sp = < 0x3c >;
  1150. + cfg = < 0x00 0x20 0x00 0x20 >;
  1151. + };
  1152. +
  1153. + group@1 {
  1154. + sp = < 0x3d >;
  1155. + cfg = < 0x01 0x21 0x01 0x21 >;
  1156. + };
  1157. + };
  1158. +
  1159. + l0scheduler {
  1160. +
  1161. + group@0 {
  1162. + ucast_queue = < 0xf0 >;
  1163. + ucast_loop_pri = < 0x10 >;
  1164. + mcast_queue = < 0x128 >;
  1165. + cfg = < 0x3c 0x00 0x90 0x00 0x90 >;
  1166. + };
  1167. + };
  1168. + };
  1169. + };
  1170. +};
  1171. +
  1172. +
  1173. +&soc {
  1174. +
  1175. + phy@86000 {
  1176. + status = "okay";
  1177. + };
  1178. +
  1179. + sd-pwrseq {
  1180. + status = "okay";
  1181. + };
  1182. +
  1183. + sdhci@7864900 {
  1184. + pinctrl-0 = <&sd_pins>;
  1185. + pinctrl-names = "default";
  1186. + cd-gpios = <&tlmm 63 GPIO_ACTIVE_LOW>;
  1187. + status = "okay";
  1188. + };
  1189. +
  1190. + pwm {
  1191. + pinctrl-0 = <&pwm_pins>;
  1192. + pinctrl-names = "default";
  1193. + used-pwm-indices = <1>, <0>, <0>, <0>;
  1194. + status = "disabled";
  1195. + };
  1196. +
  1197. + // qcom,test@0 {
  1198. + // status = "okay";
  1199. + // };
  1200. +
  1201. +
  1202. + dp1: dp1 {
  1203. + device_type = "network";
  1204. + compatible = "qcom,nss-dp";
  1205. + qcom,id = <1>;
  1206. + reg = <0x3a001000 0x200>;
  1207. + qcom,mactype = <0>;
  1208. + local-mac-address = [000000000000];
  1209. + qcom,link-poll = <1>;
  1210. + qcom,phy-mdio-addr = <16>;
  1211. + phy-mode = "sgmii";
  1212. + mdio-bus = <&mdio>;
  1213. + };
  1214. +
  1215. + dp2: dp2 {
  1216. + device_type = "network";
  1217. + compatible = "qcom,nss-dp";
  1218. + qcom,id = <2>;
  1219. + reg = <0x3a001200 0x200>;
  1220. + qcom,mactype = <0>;
  1221. + local-mac-address = [000000000000];
  1222. + qcom,link-poll = <1>;
  1223. + qcom,phy-mdio-addr = <17>;
  1224. + phy-mode = "sgmii";
  1225. + mdio-bus = <&mdio>;
  1226. + };
  1227. +
  1228. + dp3: dp3 {
  1229. + device_type = "network";
  1230. + compatible = "qcom,nss-dp";
  1231. + qcom,id = <3>;
  1232. + reg = <0x3a001400 0x200>;
  1233. + qcom,mactype = <0>;
  1234. + local-mac-address = [000000000000];
  1235. + qcom,link-poll = <1>;
  1236. + qcom,phy-mdio-addr = <18>;
  1237. + phy-mode = "sgmii";
  1238. + mdio-bus = <&mdio>;
  1239. + };
  1240. +
  1241. + dp4: dp4 {
  1242. + device_type = "network";
  1243. + compatible = "qcom,nss-dp";
  1244. + qcom,id = <4>;
  1245. + reg = <0x3a001600 0x200>;
  1246. + qcom,mactype = <0>;
  1247. + local-mac-address = [000000000000];
  1248. + qcom,link-poll = <1>;
  1249. + qcom,phy-mdio-addr = <19>;
  1250. + phy-mode = "sgmii";
  1251. + mdio-bus = <&mdio>;
  1252. + };
  1253. +
  1254. + dp5: dp5 {
  1255. + device_type = "network";
  1256. + compatible = "qcom,nss-dp";
  1257. + qcom,id = <5>;
  1258. + reg = <0x3a003000 0x3fff>;
  1259. + qcom,mactype = <1>;
  1260. + local-mac-address = [000000000000];
  1261. + qcom,link-poll = <1>;
  1262. + qcom,phy-mdio-addr = <30>;
  1263. + phy-mode = "sgmii";
  1264. + mdio-bus = <&mdio>;
  1265. + };
  1266. +
  1267. + dp6: dp6 {
  1268. + device_type = "network";
  1269. + compatible = "qcom,nss-dp";
  1270. + qcom,id = <6>;
  1271. + reg = <0x3a007000 0x3fff>;
  1272. + qcom,mactype = <1>;
  1273. + local-mac-address = [000000000000];
  1274. + qcom,link-poll = <1>;
  1275. + qcom,phy-mdio-addr = <0>;
  1276. + phy-mode = "sgmii";
  1277. + mdio-bus = <&mdio>;
  1278. + };
  1279. +
  1280. + // qcn9000_pcie0: qcn9000_pcie0@51100000 {
  1281. + // no-map;
  1282. + // reg = <0x0 0x51100000 0x0 0x02D00000>;
  1283. + // };
  1284. +
  1285. + wifi1: wifi1@f00000 {
  1286. +
  1287. + compatible = "qcom,cnss-qcn9000";
  1288. + qcom,wlan-ramdump-dynamic = <0x400000>;
  1289. + mhi,max-channels = <30>;
  1290. + mhi,timeout = <10000>;
  1291. + qrtr_node_id = <0x20>;
  1292. + qca,auto-restart;
  1293. +
  1294. + pcie0_mhi: pcie0_mhi {
  1295. + status = "ok";
  1296. + };
  1297. +
  1298. + };
  1299. +};
  1300. +
  1301. +&wifi {
  1302. + status = "okay";
  1303. + qcom,board_id = <528>;
  1304. + qcom,ath11k-calibration-variant = "TL-XTR10890";
  1305. +};
  1306. +
  1307. +&wifi1 {
  1308. + base-addr = <0x51100000>;
  1309. + m3-dump-addr = <0x53400000>;
  1310. + etr-addr = <0x53500000>;
  1311. + caldb-addr = <0x53600000>;
  1312. + hremote-size = <0x2300000>;
  1313. + tgt-mem-mode = <0x0>;
  1314. + caldb-size = <0x800000>;
  1315. + hremote_node = <&qcn9000_pcie0>;
  1316. + pageable-size = <0x800000>;
  1317. + board_id = <171>;
  1318. + qcom,ath11k-calibration-variant = "TL-XTR10890";
  1319. + status = "ok";
  1320. +};
  1321. diff --git a/target/linux/ipq807x/image/generic.mk b/target/linux/ipq807x/image/generic.mk
  1322. index e8440c83ce02..b853ae4338d0 100644
  1323. --- a/target/linux/ipq807x/image/generic.mk
  1324. +++ b/target/linux/ipq807x/image/generic.mk
  1325. @@ -44,3 +44,16 @@ define Device/zte_mf269
  1326. DEVICE_PACKAGES := ipq-wifi-zte_mf269 uboot-envtools
  1327. endef
  1328. TARGET_DEVICES += zte_mf269
  1329. +
  1330. +define Device/tplink_xtr10890
  1331. + $(call Device/FitImage)
  1332. + $(call Device/UbiFit)
  1333. + DEVICE_VENDOR := TPLINK
  1334. + DEVICE_MODEL := XTR10890
  1335. + BLOCKSIZE := 128k
  1336. + PAGESIZE := 2048
  1337. + DEVICE_DTS_CONFIG := [email protected]
  1338. + SOC := ipq8078
  1339. + DEVICE_PACKAGES := ipq-wifi-tplink_xtr10890 uboot-envtools
  1340. +endef
  1341. +TARGET_DEVICES += tplink_xtr10890