From a4f573cd1f08e1a24bc927ebcb44aa33de8b1fe9 Mon Sep 17 00:00:00 2001 From: kiddin9 <48883331+kiddin9@users.noreply.github.com> Date: Sat, 2 Mar 2024 08:17:08 +0800 Subject: [PATCH] update --- .github/workflows/Openwrt-AutoBuild.yml | 2 +- devices/common/diy.sh | 4 +- devices/ipq807x_generic/.config | 15 - devices/ipq807x_generic/diy.sh | 8 - .../patches/01-zte_mf269.bin.patch | 600 ------ devices/mediatek_filogic/.config | 2 +- devices/mediatek_filogic/diy.sh | 6 - .../dts/mt7981b-cmcc-rax3000m-nand.dts | 2 +- .../patches/08-cmcc_rax3000m.patch | 97 +- .../patches/11-gl-mt2500.patch | 4 +- .../patches/15-cmcc-a10.patch | 14 - devices/qualcommax_ipq60xx/diy.sh | 3 +- .../ipq-wifi/src/board-jdc_ax1800-pro.ipq6018 | Bin 0 -> 65644 bytes .../qualcommax_ipq60xx/patches/01-zn-m2.patch | 11 + .../patches/02-jdc_ax1800-pro.patch | 1799 +++++++++++++++++ devices/qualcommax_ipq807x/.config | 15 + devices/qualcommax_ipq807x/diy.sh | 10 + .../arm64/boot/dts/qcom/ipq8071-ax3600.dts | 6 +- .../arch/arm64/boot/dts/qcom/ipq8071-ax6.dts | 6 +- .../arm64/boot/dts/qcom/ipq8072-ax9000.dts | 6 +- .../patches/04-stock.patch | 56 +- .../patches/kernel_version.patch | 30 + devices/qualcommax_ipq807x/settings.ini | 2 + devices/ramips_mt7621/patches/02-cr660x.patch | 2 +- 24 files changed, 1937 insertions(+), 763 deletions(-) delete mode 100644 devices/ipq807x_generic/.config delete mode 100644 devices/ipq807x_generic/diy.sh delete mode 100644 devices/ipq807x_generic/patches/01-zte_mf269.bin.patch create mode 100644 devices/qualcommax_ipq60xx/diy/package/firmware/ipq-wifi/src/board-jdc_ax1800-pro.ipq6018 create mode 100644 devices/qualcommax_ipq60xx/patches/01-zn-m2.patch create mode 100644 devices/qualcommax_ipq60xx/patches/02-jdc_ax1800-pro.patch create mode 100644 devices/qualcommax_ipq807x/.config create mode 100644 devices/qualcommax_ipq807x/diy.sh rename devices/{ipq807x_generic/diy/target/linux/ipq807x => qualcommax_ipq807x/diy/target/linux/qualcommax}/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts (94%) rename devices/{ipq807x_generic/diy/target/linux/ipq807x => qualcommax_ipq807x/diy/target/linux/qualcommax}/files/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts (92%) rename devices/{ipq807x_generic/diy/target/linux/ipq807x => qualcommax_ipq807x/diy/target/linux/qualcommax}/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts (98%) rename devices/{ipq807x_generic => qualcommax_ipq807x}/patches/04-stock.patch (60%) create mode 100644 devices/qualcommax_ipq807x/patches/kernel_version.patch create mode 100644 devices/qualcommax_ipq807x/settings.ini diff --git a/.github/workflows/Openwrt-AutoBuild.yml b/.github/workflows/Openwrt-AutoBuild.yml index 17b4a173ac3a..5b0fc1d72ff9 100644 --- a/.github/workflows/Openwrt-AutoBuild.yml +++ b/.github/workflows/Openwrt-AutoBuild.yml @@ -183,7 +183,6 @@ jobs: cp -rf devices/${{matrix.target}}/. openwrt/ cp -rf devices openwrt/ cd openwrt - cp -Rf ./diy/* ./ || true chmod +x devices/common/$DIY_SH /bin/bash "devices/common/$DIY_SH" cp -f devices/common/$CONFIG_FILE .config @@ -196,6 +195,7 @@ jobs: echo "/bin/bash devices/${{matrix.target}}/$DIY_SH" /bin/bash "devices/${{matrix.target}}/$DIY_SH" fi + cp -Rf ./diy/* ./ || true - name: Apply patches run: | diff --git a/devices/common/diy.sh b/devices/common/diy.sh index 1734a2fb4c2f..8d86f06fbb8d 100644 --- a/devices/common/diy.sh +++ b/devices/common/diy.sh @@ -57,7 +57,7 @@ grep -q 'PKG_RELEASE:=9' package/libs/openssl/Makefile && { sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/a48d0bdb77eb93f7fba6e055dace125c72755b6a.patch | patch -d './' -p1 --forward" } -sed -i "/wireless.\${name}.disabled/d" package/kernel/mac80211/files/lib/wifi/mac80211.sh +sed -i "/wireless.\${name}.disabled/d" package/kernel/mac80211/files/lib/wifi/mac80211.sh || sed -i "/wireless.\${name}.disabled/d" package/network/config/wifi-scripts/files/lib/wifi/mac80211.sh sed -i "/BuildPackage,miniupnpd-iptables/d" feeds/packages/net/miniupnpd/Makefile sed -i 's/Os/O2/g' include/target.mk @@ -69,8 +69,6 @@ sed -i 's/max_requests 3/max_requests 20/g' package/network/services/uhttpd/file #rm -rf ./feeds/packages/lang/{golang,node} sed -i "s/tty\(0\|1\)::askfirst/tty\1::respawn/g" target/linux/*/base-files/etc/inittab -sed -i '/echo "radio_config_id=${radio_md5sum}" >> $hostapd_conf_file/d' package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh - date=`date +%m.%d.%Y` sed -i -e "/\(# \)\?REVISION:=/c\REVISION:=$date" -e '/VERSION_CODE:=/c\VERSION_CODE:=$(REVISION)' include/version.mk diff --git a/devices/ipq807x_generic/.config b/devices/ipq807x_generic/.config deleted file mode 100644 index af4abfedc8c6..000000000000 --- a/devices/ipq807x_generic/.config +++ /dev/null @@ -1,15 +0,0 @@ - -CONFIG_TARGET_ipq807x=y -CONFIG_TARGET_ipq807x_generic=y -CONFIG_TARGET_MULTI_PROFILE=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_redmi_ax6=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_xiaomi_ax3600=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_xiaomi_ax9000=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_qnap_301w=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_zte_mf269=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_zyxel_nbg7815=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_buffalo_wxr-5950ax12=y -CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_cmcc_rm2-6=y -CONFIG_PACKAGE_kmod-rtl8812au-ct=n -CONFIG_PACKAGE_luci-ssl=y # uhttpd服务 - diff --git a/devices/ipq807x_generic/diy.sh b/devices/ipq807x_generic/diy.sh deleted file mode 100644 index b749d072d8ac..000000000000 --- a/devices/ipq807x_generic/diy.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -shopt -s extglob - -SHELL_FOLDER=$(dirname $(readlink -f "$0")) - -sed -i '/rm -rf $(KDIR)\/tmp/d' include/image.mk - -rm -rf feeds/kiddin9/{rtl8821cu,rtl88x2bu} package/kernel/mt76 devices/common/patches/mt7922.patch diff --git a/devices/ipq807x_generic/patches/01-zte_mf269.bin.patch b/devices/ipq807x_generic/patches/01-zte_mf269.bin.patch deleted file mode 100644 index e98cc432cebd..000000000000 --- a/devices/ipq807x_generic/patches/01-zte_mf269.bin.patch +++ /dev/null @@ -1,600 +0,0 @@ -From c8b8a6adca5bfb49a9312eb3ba17a68f53ffd63e Mon Sep 17 00:00:00 2001 -From: Hugo Yuan <429632952@163.com> -Date: Thu, 8 Sep 2022 20:27:05 +0800 -Subject: [PATCH] ipq807x: add support for ZTE MF269 - -Co-authored-by: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> -Signed-off-by: Tianling Shen ---- - package/boot/uboot-envtools/files/ipq807x | 3 +- - package/firmware/ipq-wifi/Makefile | 2 + - .../firmware/ipq-wifi/board-zte_mf269.ipq8074 | Bin 0 -> 131172 bytes - .../ipq807x/base-files/etc/board.d/02_network | 24 +- - .../etc/hotplug.d/firmware/11-ath11k-caldata | 3 +- - .../etc/hotplug.d/ieee80211/11_fix_wifi_mac | 18 ++ - .../base-files/lib/upgrade/platform.sh | 4 + - .../arm64/boot/dts/qcom/ipq8071-mf269.dts | 212 ++++++++++++++++++ - target/linux/ipq807x/image/generic.mk | 13 ++ - 9 files changed, 276 insertions(+), 3 deletions(-) - create mode 100644 package/firmware/ipq-wifi/board-zte_mf269.ipq8074 - create mode 100644 target/linux/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac - create mode 100644 target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts - -diff --git a/package/boot/uboot-envtools/files/ipq807x b/package/boot/uboot-envtools/files/ipq807x -index 5c5b77089ac..4444021defe 100644 ---- a/package/boot/uboot-envtools/files/ipq807x -+++ b/package/boot/uboot-envtools/files/ipq807x -@@ -27,7 +27,8 @@ edimax,cax1800) - ;; - redmi,ax6|\ - xiaomi,ax3600|\ --xiaomi,ax9000) -+xiaomi,ax9000|\ -+zte,mf269) - idx="$(find_mtd_index 0:appsblenv)" - [ -n "$idx" ] && \ - ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x20000" -diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile -index 32988910c0a..763eeb3a137 100644 ---- a/package/firmware/ipq-wifi/Makefile -+++ b/package/firmware/ipq-wifi/Makefile -@@ -40,6 +40,7 @@ ALLWIFIBOARDS:= \ - wallys_dr40x9 \ - xiaomi_ax3600 \ - xiaomi_ax9000 \ -+ zte_mf269 \ - zte_mf289f \ - zte_mf287plus \ - zyxel_nbg7815 -@@ -128,6 +129,7 @@ $(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6)) - $(eval $(call generate-ipq-wifi-package,wallys_dr40x9,Wallys DR40X9)) - $(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600)) - $(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000)) -+$(eval $(call generate-ipq-wifi-package,zte_mf269,ZTE MF269)) - $(eval $(call generate-ipq-wifi-package,zte_mf289f,ZTE MF289F)) - $(eval $(call generate-ipq-wifi-package,zte_mf287plus,ZTE MF287Plus)) - $(eval $(call generate-ipq-wifi-package,zyxel_nbg7815,Zyxel NBG7815)) -diff --git a/package/firmware/ipq-wifi/board-zte_mf269.ipq8074 b/package/firmware/ipq-wifi/board-zte_mf269.ipq8074 -new file mode 100644 -index 0000000000000000000000000000000000000000..473fceabc4e532a3099c0210562a31188e0c1988 -GIT binary patch -literal 131172 -zcmeHw3vg7&neIPlhC#wY2qDb_1R6=BhY3zF79b=6l0YCp5<(gYNeGaHY`_LAFktbp -zd1C}J<{{ho5u13u*{sXE>o`v0+KLnBUD+gCx3>1?)~2#~t+UDQ-MU3>Qn#|Vvex~+ -zbLNcBfMAZEMyPxKp6S24|L(uP{`+xy&Y9V;qV$2%P{o4}u6v+teQE7V*}Z$Wz*UIG -z4=I3eKk&rTwjJ&B_U_*Kz_uMbJ0IBDv2?!9wLjjruY>G@g$w5$Y}>c9ZO{It&7txK -zs#Yynw8Wv8pov3VELQ;@oX3*$8}#>$`g^1P-lV@b>+hTN+<3e4AVc|lGYVq} -z?h-gHD#nN(;JtN#xCs`O?3k{<7CM&cuOdgG{#x!>tiP6pKbJU)_19uYzW!S1SfIa> -z9BJWKF+OKTa8D4HOfXq8KUp$ASu#IaGCx@|KUp$ASu#Hj=Maa(Z89R0qx-r)L50RQ -z0-F3u@AdlGx3*)NOuIGmHZjJ`6i)oyZ8D8O^jlFCi8%2ZjEfQDPOKZoDo=d&gUcLV27v6s7z4t%(=68Sa6^*a%FL5Bt{(ZV(La&Y{@FsvHV|F+;#DKkB#P -zF{@Qoq!1V#1SX3weC6(tV>iA%ZF!c(P5YhZa5$`f9krMS$6PqXNtxtWYE^9DLQsNc -z@k1+QkeXPv8e%w3e)KX$I}dkXd*kiCuoIc{7a}vSh(_lT -zYn$`ukiR72?Gj086G>VL`Ao>8CtSabEg$$Nk+iRi_}>&sJ%##lzINY2$OmwW_P=e& -z|6F9&2O>V`kwSU2Vag&A_jJhrXKeXHaC5$Z`g?%E0bsBNWh_SZ-u-Vj4GeV*K7{_C0|qC70c?5D7+@^S!hGPxSV)09>0p^3$HppWvOw9rYQ|w`o0b7pD2ejoDiyaIXgFnR9U$+Cc!D`D((T41B -z8-5qNjLg488z>J9Q!y5&V=PQfhrAmY{A+A^9fPlh=R^~OBG|GQwmcLJpu=G8Kqk1O -z9ZYZtL}4Hb0}KLX2MPnug~|>T2BsYxIkoNR(p`c2)K!cz+=Ua(dkfmKYyB(D7?EdR -zYra@`ET_|py`!NOJ*4R_ -zz82~!LU}%m?3wE=y@jW;_F2n2eKPdK!flx$Pq`^6a_VsXV~aKgD}C6HneLfa8+sNW -z4es$;%Ip5z*52aNnVr`1&OP1m_~Na>8Xv9+On3Ilh8>F=gKK=)o0(28@2TuPR{dUh -zv-SDn)7ejWTFqP{-A5aD7iRu;XK_>R+LVX-Lt8cvh?)x8n`^V-1XXG>Z -zZIR6PaNdct4gaG!>#Gw<#`#cUGR`+_AeZwUk>FQE0x#lhU>C0KA9{IRYeoH7LsMp>epHoU<7_OO^1xn~ -z$6D)K3i&k1<7_SAp9dQ1(QU}3JoHaLfckMJ#63o8CglGFc^l_a+`G~Rzb}%3ewgzD -z%6J?YYy<|2fdTpT+en`hTZ`u&Xb2jbhc6RWK -z*z-XiqjBK4f3Us4?tdnyp8!N -zmv%_`gOJDdkPrGt))gD;k~tq_p&v5d1qPVg{GGs{5f~Hz1G{zrJL38tnGfor$6)4z -zZ=oHiU$+Cy>z)m$e?D-?fDY4Q^`c1jcToSAhhYbA8tX!o9b`iX%!P@+v1tduF0w8R -z)($Y9BX-apwuAIR*a7sm_9vzt1iy=Z_zL;~Q8?W;~Ddjmv)5ng{0Y#zt4s|=YwI` -z!Q4NC4wzRnvA(8vKnKnTs5=?o<0jhNr|I)@7se9$!M_yiGvy~ie;eO@<#L}2JJRR% -zR>)&MNDV+9d#gkn-=WTh9R=|ntiG+>?^6T9uJ!z#=IV}Bg#X6FYGvCM+vd*XfDQ6HrDry -z0~ibF$C=ohcrYH5v0qQLF|X%vJhC6LF3jGFe#Cr`igh6wV<7RjeK8e?vIF#^ZU-5V -z=RWV>W6SIN8|n``o`d-$>UzhoQJ#0rd<^$aho`oG?KAN)?`a?dl&$Y3?h}Z$fbLN*(2KpgtT}Z)v -zpvA^9G9I6Y4(50+43B3U^SXI{pzkkWhrW8)(L<2;pdVea>kobi{l5r1xQ6<%E_oXu -zkG@O_Kt3_H{DAYpQ0xHX@s{~usCEF|?XC-Xn2+>zfp)M37%aEgfsN~(h#g>kjXFo- -zetiKjOokoAhOvKrAF3UE6YcmC=G7~>?!@_luLk3x0R1=}I@qXRw}W>Eumg-KTXul) -zn2mWo;~;P}*M&jYfj*vlpg-lep&wSDAA-QpiTZ8K%em}Fj6uqq*DI-56ZL(njr|4Z -zgY3)3x|aSh>c?E@p}fugO_Uv=AEK_?24M%mZ^4en{&w;q#w|m`}19{yJfW<6a -zFAUla%=&>vZQaV_iti2M)6^Ck&?k7g7Hn)X#MVW5VwKK*y2$Eb|;` -zuy(-py=NHn!JX{D#y&G*2bfPH`y1L3=K~x2n}{7?JPmj*Yj>ZAe$=n~xGq@FaWFU8 -zx$e{L;LGR-$frTxAA%h`GzdFj{gA)q9EtVYxZdEotbVSH{eI+JITQ6eAaCP7a(!Os -zyi9rS(+0UdN94KRZ-aap=A*1|{Wh-q`29$bc5LnsFrN(OdM9EB-vo|d1df>3XLVYx -z|NX$h&h`KIur9m4g&ij-wt{1FK7oE@V8?Jm`{S3k9gh7^N(4O -z_ri`-c>XYm@0o61pZ$&KhsEdvERcy96R}+6To>#6P_7$uV28umC+gRo*q;pbd#3x} -zG_D&nVF&50z_A24!VXffJ}23{ZqxT^=*RSJmVUtXf0B)Rprhs^)USWfg?_XB%UmDm$3Koo{KnvI7ek6F8{sU;=l(rRmBJEMQFFpt6Gr -z-1(NKD?6}&F@b~14kmEtTbi!yzyihu4k|mCz@2Yty0QZc7!x>X+QH>ln$H&=$$r$^ -z+z-Z6r)%~v-<8+mtL%?E_DsjI<$D4Ro{Ijs(>)z0OZMe$^VjyrU3{u>_rgsX>r#vQ -z<9g3G9$L5~qtU;q{i%{eIoo+3n(3~c-g;n3M^?zU(u~2sDZSo&ammx!k9%;> -zm+6k3+tBsUj=;ugxChL1m!E4sR`hsq>x|WA41QziO8tpNduKNCS$fl*KC%~1krhDPF&CeD;mAl)&*^Ci+ -z`b^D%l0A7_{8jyNpM9?V*z(T2t*MqeUb?#ZMA6=yc0T)Ky4O!^+gH?@Q{yW!V??f= -zYwXJ3p0&~Xn@TTV-Ew;I-mED7E}Yo7Z(&XjYSFjhRd2<=)MwiuUDfo3XAx?$YU&1B=l|UP~YKoDUr?=?pZbSY$uj -z+kU3-iQqOq-)6e&XKD{F+nwH!vdWARIdQG_+`=aV+f#8Loav6A-EgpUPkOx-zq98W -z4lUl9*<`i9S9@DeEqx+y8-Me{bmvbs9az+n8Jb>f#)zElu06E8Gq*LxV!N+hZ9lVQ -zU$EUOd+kE|Q$@RTHe2iM?rl81cz=39 -z^fsSaav*CPpZhW0#q*mE7osnHYt0yu*LvEHluE_b&aUbsDTqxCnqPE)^qxov)n?Or~&`AE@YS_VzyMykk$@l3DMw*zT$4>W(dZJg_CzGOwLFS$|*=@_8)zUg>T>Qn)>Pqjl_`JQq4tdXs)v -z&bD?H?Z}F1NAHy_CyVxFw^?oI<(_Rvm)>Po3D-wR}gQCe<>poqMj~*y6`Cwsb(~IUOm%suy9*;oe%f4n(oZ$hJ*PX8KG3mIKOgg%YmYYGwZBl|JlpU -zCztHQJY*SzC(qS&E!dH_)jFTPeqqa@;+?roehc=!-7P1U?8|Po&JpLIX*#rIXJ(_- -z#$SPc1s%Cj>%zG+O;0X-I5TRzJ$I(%$t90uMfK5{3k^pX@5yY|H-Qj+}arrM(xPZF;J3Pv&N?Wh^}NOv9l?&@a_8246Yd4*YVW@VjuP8Tw^K -z*};V~jRy-J&WQT$x!13>pIEjxuZ_>?nC{wz)+0+F%W3vo#?dQhTAnE0mJ_n}(bE@d -zjx5Lg=dtAL>25w;@MvaJs%30lI?=o@e{1G?&vLT{kypC69a)O;=C|Z~>6xm|q8-5o -zt8Kh|Y2A~>o!PBEiw#|WcEf?v-MK9(7Oajx-EnaFBZ2A^OC4u=LPr+?dyfVCOJ_HA -z72a&)$G7fXyd|^RV_DB%J74nH{Px^t>wNGM_6LO>S+yQZzg;}P5$i&*(Yh{NJKuho -zZJS=w-`*=HHgy)YW!G5O{in~>c46JxXk8aBA8*-P(3-X0W08ISXzT8R=HNO{VSjmN -zPBc8RpfzKIb-Z0Wx@A}4rmVHo7xd>-A%%cKKp~(IPzWdl6aoqXg}~i}KyCY#H{Sg= -ze!OS+P8)s^cP`F&<5Dpet%5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4< -zKp~(IPzWdl6aor?y9a@I$(u}VT<*9j2~!iNB~4GBk&^21`usCzrOgRs2D5W=``{+W -zaQwGJpX5n_lt_itNTamM4(XIGIWFhql3bJP@&$QE-oMT3P3e*S(jvu@CV%R?^$()1 -zca-MgufO1e*+DBwv&4xbjww?T5|ff6%FmvY9>~bdVgvH-pKGrTECv5dBmuN!{-E1p -zzYW=N{f!99yhs}i4b=NYMj#l>0%d1rWMpM#WM! -z%IOoi@1xp2$I2zZS^2vu>~uOO!QD+Nje;&y#HFt@o!y^(J8PJ36x176MOHSp?C81v -z-VYv};BH)Xno@Se5#YXb#0ymgDg+b)qlUnJ@-@Be1$}pZg<5;Az4^`uKe%(Q1$~3f -zSJ2o0I^2D2?qDa71aa~2ccsE`vXZX2xR@UWa3yf~$T#`<^XJVQuVKqiu8o>KsDc#& -z;}L;k4)&W|et!NuOa;0_IDa@{qi7TeH=Ho_pqrPMmuG~A8x92e%Q3_A^3u|LzFXs2 -zS9Bf|H|D)L%-jRTv;AhgnP)hdSY`9)8*W}+FgUC*6@=?=uQhBRA49i-0_tNsi~(d~ -zY0B`E>I}yQt+GbBC~#cZqZRu*hfUnrcQ=PAIZ%8UTRp#-XT$RVC_+~{2v3fYKMr}~kUtLj;}MR(bNL?M7lOVJ^o7Le3qfB9`a;kbg1!*d7q_(}O-q=j -zX_`|X8t4nnncxO@=lpr>k09X1I_||f?!`Lp#X1h}_Kv|i?!`Lp#X9cAI_||f4zIzxyraC1d$Ept -zv5tGOj(f3=d&g)USNrXIWWanv&G2EI`Y=v?7^gmrQ+T&;492MsccqoVVuHi -z@Gjpdk5eDUsSo4ShjHq|IQ5OuI5qd%Tx`v~_RZl>$OKfi;{bsnZ_;BDOhYPa~xmJfbBP~OU(_XdiV%AWTJ -zjJKGa3MvE?0wauohItGgw{_oe!T%BWc!N(!?7z<&=}x3Ok?y?Fg?qlo?7r^-Cxl@} -zYVI3-(f5<1eUs6?$!Oo?8*%VS@U3HcpZPGGbVqS54(*M)kNw86vAmc4j>?TfqFQ%G -zc!E&HDFhS(3ITxfY6v*74~PFa`q?eSVebv^g6|s3XSqgUYZg_c6Z`P!=f%)g -z?8D*lyx5I6_$2t&v3!m!O2H9koY;p)Kc{x%*jPTRHp0z`SzPs&Z+!peOw||v`sOI9 -zzW9|};zn(dse%;(3ITxf4iIo@H~L(7wg?BaP8Xgnayf6%Yw#}kE*H*X;oYt= -zc-H8aMS2t>T-X!3@Jy2n&osI4Op|Le+KW9QybC@KJ_)|nh3~=O5ubqg(f?h8QD~}O -zqzijO7tUr~c$UhAXQ^EAH;%dRJe6yVo~IhEcHOSr+V*cpl4`H?|EN*zm3JfY<6u}S -z6%_&sfx8TW$ONJS3V{iNz+E;3l{yLmg}^vKV1i7Ks+kIb2m<3^SSl420t$h<3;{RJ -zVBI)_b>j?H|A}v$!Mbq<3-5yOa^nmZ-tE3e&S2d*gLUH!){Qe*H_l+)ID>`P;9c-> -z@JaBkZk)lwBR&D~ff4ES30}yUbd;)O -z#1NR^<~pe6j~M79RFD_XfWT|;F8Dv<_y55sB=-LY0Mc>x1n+|H8q5C#7!hapb$_9j5-27?8D(dj{aXC#9{9Z?}G0d%m4Wq#um($s1N(_=>HNzTd@y^ -z$A1akh=WgpZyn437_z1K5HtC(50Cy2qZ`M@@_&qmsP>S>26`5og$?vPwh@2pGuezE -z^?|1Xya@L>IJ1rK!wo0yUaG?dtQxO<;k%=W -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 -z1QY@a0fm4V!Z - -literal 0 -HcmV?d00001 - -diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network -index 004ab4fdc62..a597aee68f2 100644 ---- a/target/linux/ipq807x/base-files/etc/board.d/02_network -+++ b/target/linux/ipq807x/base-files/etc/board.d/02_network -@@ -16,7 +16,8 @@ ipq807x_setup_interfaces() - xiaomi,ax9000) - ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" - ;; -- edgecore,eap102) -+ edgecore,eap102|\ -+ zte,mf269) - ucidef_set_interfaces_lan_wan "lan" "wan" - ;; - edimax,cax1800) -@@ -38,9 +39,31 @@ ipq807x_setup_interfaces() - esac - } - -+ipq807x_setup_macs() -+{ -+ local board="$1" -+ local lan_mac="" -+ local wan_mac="" -+ local label_mac="" -+ -+ case "$board" in -+ zte,mf269) -+ wan_mac="$(mtd_get_mac_binary mac 0x0)" -+ [ "$wan_mac" != "00:00:00:00:00:00" ] || wan_mac="$(get_mac_binary "$(find_mtd_chardev mac)" 0x20000)" -+ lan_mac="$(macaddr_add "$wan_mac" 1)" -+ label_mac="$wan_mac" -+ ;; -+ esac -+ -+ [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" "$lan_mac" -+ [ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" "$wan_mac" -+ [ -n "$label_mac" ] && ucidef_set_label_macaddr "$label_mac" -+} -+ - board_config_update - board=$(board_name) - ipq807x_setup_interfaces $board -+ipq807x_setup_macs $board - board_config_flush - - exit 0 -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 -index 524211ef43e..61ea555247e 100644 ---- 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 -@@ -18,6 +18,7 @@ case "$FIRMWARE" in - redmi,ax6|\ - xiaomi,ax3600|\ - xiaomi,ax9000|\ -+ zte,mf269|\ - zyxel,nbg7815) - caldata_extract "0:art" 0x1000 0x20000 - ;; -diff --git a/target/linux/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac -new file mode 100644 -index 00000000000..c8a8c6ad2b9 ---- /dev/null -+++ b/target/linux/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac -@@ -0,0 +1,19 @@ -+[ "$ACTION" == "add" ] || exit 0 -+ -+PHYNBR=${DEVPATH##*/phy} -+ -+[ -n $PHYNBR ] || exit 0 -+ -+. /lib/functions.sh -+. /lib/functions/system.sh -+ -+board=$(board_name) -+ -+case "$board" in -+ zte,mf269) -+ mac_addr="$(mtd_get_mac_binary mac 0x0)" -+ [ "$mac_addr" != "00:00:00:00:00:00" ] || mac_addr="$(get_mac_binary "$(find_mtd_chardev mac)" 0x20000)" -+ [ "$PHYNBR" = "0" ] && macaddr_add "$mac_addr" 2 > "/sys${DEVPATH}/macaddress" -+ [ "$PHYNBR" = "1" ] && macaddr_add "$mac_addr" 3 > "/sys${DEVPATH}/macaddress" -+ ;; -+esac -diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh -index 346cc390f3124..d9a81e1e22d2b 100644 ---- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh -+++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh -@@ -109,6 +109,10 @@ platform_do_upgrade() { - CI_ROOT_UBIPART="rootfs" - nand_do_upgrade "$1" - ;; -+ zte,mf269) -+ CI_UBIPART="rootfs" -+ nand_do_upgrade "$1" -+ ;; - *) - default_do_upgrade "$1" - ;; -diff --git a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts -new file mode 100644 -index 00000000000..be76ddf12e4 ---- /dev/null -+++ b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts -@@ -0,0 +1,212 @@ -+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT -+ -+/dts-v1/; -+ -+#include "ipq8074-512m.dtsi" -+#include "ipq8074-ac-cpu.dtsi" -+#include "ipq8074-ess.dtsi" -+#include -+#include -+ -+/ { -+ model = "ZTE MF269"; -+ compatible = "zte,mf269", "qcom,ipq8074"; -+ -+ aliases { -+ serial0 = &blsp1_uart5; -+ led-boot = &led_system_white; -+ led-failsafe = &led_system_white; -+ led-running = &led_system_white; -+ led-upgrade = &led_system_white; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ bootargs-append = " root=/dev/ubiblock0_1"; -+ }; -+ -+ keys { -+ compatible = "gpio-keys"; -+ -+ reset { -+ label = "reset"; -+ gpios = <&tlmm 46 GPIO_ACTIVE_LOW>; -+ linux,code = ; -+ }; -+ -+ wps { -+ label = "wps"; -+ gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; -+ linux,code = ; -+ }; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ -+ led_system_white: system-white { -+ label = "white:system"; -+ gpio = <&tlmm 56 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+}; -+ -+&tlmm { -+ mdio_pins: mdio-pins { -+ mdc { -+ pins = "gpio68"; -+ function = "mdc"; -+ drive-strength = <8>; -+ bias-pull-up; -+ }; -+ -+ mido { -+ pins = "gpio69"; -+ function = "mdio"; -+ drive-strength = <8>; -+ bias-pull-up; -+ }; -+ }; -+ -+ usb_vbus_pins: usb-vbus-pins { -+ usb-pins { -+ pins = "gpio29"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-disable; -+ output-high; -+ }; -+ }; -+}; -+ -+&blsp1_spi1 { -+ pinctrl-0 = <&spi_0_pins>; -+ pinctrl-names = "default"; -+ cs-select = <0>; -+ status = "okay"; -+ -+ flash@0 { -+ compatible = "jedec,spi-nor"; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ reg = <0>; -+ spi-max-frequency = <50000000>; -+ }; -+}; -+ -+&blsp1_uart5 { -+ status = "okay"; -+}; -+ -+&prng { -+ status = "okay"; -+}; -+ -+&cryptobam { -+ status = "okay"; -+}; -+ -+&crypto { -+ status = "okay"; -+}; -+ -+&qpic_bam { -+ status = "okay"; -+}; -+ -+&qpic_nand { -+ status = "okay"; -+ -+ nand@0 { -+ reg = <0>; -+ nand-ecc-strength = <4>; -+ nand-ecc-step-size = <512>; -+ nand-bus-width = <8>; -+ -+ partitions { -+ compatible = "qcom,smem-part"; -+ }; -+ }; -+}; -+ -+&qusb_phy_0 { -+ status = "okay"; -+}; -+ -+&ssphy_0 { -+ status = "okay"; -+}; -+ -+&usb_0 { -+ pinctrl-0 = <&usb_vbus_pins>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&mdio { -+ status = "okay"; -+ -+ pinctrl-0 = <&mdio_pins>; -+ pinctrl-names = "default"; -+ -+ qca8075_24: ethernet-phy@24 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <24>; -+ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; -+ }; -+ -+ qca8075_28: ethernet-phy@28 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <28>; -+ reset-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>; -+ }; -+}; -+ -+&switch { -+ status = "okay"; -+ -+ switch_cpu_bmp = <0x1>; /* cpu port bitmap */ -+ switch_lan_bmp = <0x3e>; /* lan port bitmap */ -+ switch_wan_bmp = <0x40>; /* wan port bitmap */ -+ switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ -+ switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ -+ switch_mac_mode2 = <0xf>; /* mac mode for uniphy instance2*/ -+ bm_tick_mode = <0>; /* bm tick mode */ -+ tm_tick_mode = <0>; /* tm tick mode */ -+ -+ qcom,port_phyinfo { -+ port@4 { -+ port_id = <5>; -+ phy_address = <24>; -+ port_mac_sel = "QGMAC_PORT"; -+ }; -+ port@5 { -+ port_id = <6>; -+ phy_address = <28>; -+ port_mac_sel = "QGMAC_PORT"; -+ }; -+ }; -+}; -+ -+&edma { -+ status = "okay"; -+}; -+ -+&dp5_syn { -+ status = "okay"; -+ phy-handle = <&qca8075_24>; -+ label = "lan"; -+}; -+ -+&dp6_syn { -+ status = "okay"; -+ phy-handle = <&qca8075_28>; -+ label = "wan"; -+}; -+ -+&wifi { -+ status = "okay"; -+ -+ qcom,ath11k-calibration-variant = "ZTE-MF269"; -+ qcom,ath11k-fw-memory-mode = <1>; -+}; - ---- a/target/linux/ipq807x/image/generic.mk -+++ b/target/linux/ipq807x/image/generic.mk -@@ -162,6 +162,19 @@ endif - endef - TARGET_DEVICES += xiaomi_ax9000 - -+define Device/zte_mf269 -+ $(call Device/FitImage) -+ $(call Device/UbiFit) -+ DEVICE_VENDOR := ZTE -+ DEVICE_MODEL := MF269 -+ BLOCKSIZE := 128k -+ PAGESIZE := 2048 -+ DEVICE_DTS_CONFIG := config@ac04 -+ SOC := ipq8071 -+ DEVICE_PACKAGES := ipq-wifi-zte_mf269 -+endef -+TARGET_DEVICES += zte_mf269 -+ - define Device/zyxel_nbg7815 - $(call Device/FitImage) - $(call Device/EmmcImage) diff --git a/devices/mediatek_filogic/.config b/devices/mediatek_filogic/.config index fedbbd94fcbb..5b7ecb617fd1 100644 --- a/devices/mediatek_filogic/.config +++ b/devices/mediatek_filogic/.config @@ -19,7 +19,7 @@ CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_jcg_q30-pro=y CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_cetron_ct3003=y CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_glinet_gl-mt6000=y CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_glinet_gl-mt2500=y -CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_cmcc_rax3000m=y +CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_cmcc_rax3000m-nand=y CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_cmcc_rax3000m-emmc=y CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_jdcloud_re-cp-03=y CONFIG_TARGET_DEVICE_mediatek_filogic_DEVICE_abt_asr3000=y diff --git a/devices/mediatek_filogic/diy.sh b/devices/mediatek_filogic/diy.sh index 7383d72565ba..01abab9500ca 100644 --- a/devices/mediatek_filogic/diy.sh +++ b/devices/mediatek_filogic/diy.sh @@ -1,9 +1,3 @@ #!/bin/bash shopt -s extglob - -sed -i "/mt7986_xiaomi_redmi-router-ax6000 /d" package/boot/uboot-mediatek/Makefile -sed -i "/mt7981_h3c_magic-nx30-pro /d" package/boot/uboot-mediatek/Makefile -sed -i "/mt7981_qihoo_360t7 /d" package/boot/uboot-mediatek/Makefile -sed -i "/cmcc_rax3000m.* /d" package/boot/uboot-mediatek/Makefile -sed -i "/mt7981_jcg_q30-pro /d" package/boot/uboot-mediatek/Makefile \ No newline at end of file diff --git a/devices/mediatek_filogic/diy/target/linux/mediatek/dts/mt7981b-cmcc-rax3000m-nand.dts b/devices/mediatek_filogic/diy/target/linux/mediatek/dts/mt7981b-cmcc-rax3000m-nand.dts index 6e813d10b5f6..086a4223d18a 100644 --- a/devices/mediatek_filogic/diy/target/linux/mediatek/dts/mt7981b-cmcc-rax3000m-nand.dts +++ b/devices/mediatek_filogic/diy/target/linux/mediatek/dts/mt7981b-cmcc-rax3000m-nand.dts @@ -5,7 +5,7 @@ / { model = "CMCC RAX3000M (NAND version)"; - compatible = "cmcc,rax3000m", "mediatek,mt7981"; + compatible = "cmcc,rax3000m-nand", "mediatek,mt7981"; aliases { label-mac-device = &gmac1; diff --git a/devices/mediatek_filogic/patches/08-cmcc_rax3000m.patch b/devices/mediatek_filogic/patches/08-cmcc_rax3000m.patch index ca4de48d09d4..1fb8924f6150 100644 --- a/devices/mediatek_filogic/patches/08-cmcc_rax3000m.patch +++ b/devices/mediatek_filogic/patches/08-cmcc_rax3000m.patch @@ -12,66 +12,47 @@ --- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac +++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac -@@ -46,9 +46,9 @@ case "$board" in - [ "$PHYNBR" = "0" ] && macaddr_add $addr 1 > /sys${DEVPATH}/macaddress - [ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_add $addr 2) > /sys${DEVPATH}/macaddress +@@ -57,6 +57,13 @@ case "$board" in + esac + [ "$PHYNBR" = "1" ] && echo "$addr" > /sys${DEVPATH}/macaddress ;; -- cmcc,rax3000m) -- case "$(cmdline_get_var root)" in -- /dev/mmc*) -+ cmcc,rax3000m*) -+ case "$board" in -+ cmcc,rax3000m-emmc) - addr=$(mmc_get_mac_binary factory 0xa) - ;; - *) ++ cmcc,rax3000m-emmc) ++ [ "$PHYNBR" = "1" ] && mmc_get_mac_binary factory 0xa > /sys${DEVPATH}/macaddress ++ ;; ++ cmcc,a10|\ ++ cmcc,rax3000m-nand) ++ [ "$PHYNBR" = "1" ] && mtd_get_mac_binary Factory 0xa > /sys${DEVPATH}/macaddress ++ ;; + cudy,wr3000-v1) + addr=$(mtd_get_mac_binary bdinfo 0xde00) + # Originally, phy0 is phy1 mac with LA bit set. However, this would conflict --- a/target/linux/mediatek/image/filogic.mk +++ b/target/linux/mediatek/image/filogic.mk -@@ -251,37 +251,36 @@ TARGET_DEVICES += cetron_ct3003 - - define Device/cmcc_rax3000m - DEVICE_VENDOR := CMCC -- DEVICE_MODEL := RAX3000M -- DEVICE_DTS := mt7981b-cmcc-rax3000m -- DEVICE_DTS_OVERLAY := mt7981b-cmcc-rax3000m-emmc mt7981b-cmcc-rax3000m-nand +@@ -280,7 +280,38 @@ define Device/cmcc_rax3000m + ARTIFACT/nand-preloader.bin := mt7981-bl2 spim-nand-ddr4 + ARTIFACT/nand-bl31-uboot.fip := mt7981-bl31-uboot cmcc_rax3000m-nand + endef +-TARGET_DEVICES += cmcc_rax3000m ++ ++define Device/cmcc_rax3000m-nand ++ DEVICE_VENDOR := CMCC + DEVICE_MODEL := RAX3000M NAND + DEVICE_DTS := mt7981b-cmcc-rax3000m-nand - DEVICE_DTS_DIR := ../dts -- DEVICE_DTC_FLAGS := --pad 4096 -- DEVICE_DTS_LOADADDR := 0x43f00000 - DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware kmod-usb3 \ - e2fsprogs f2fsck mkf2fs -- KERNEL_LOADADDR := 0x44000000 -- KERNEL := kernel-bin | gzip -- KERNEL_INITRAMFS := kernel-bin | lzma | \ -- fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k -- KERNEL_INITRAMFS_SUFFIX := -recovery.itb ++ DEVICE_DTS_DIR := ../dts ++ DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware kmod-usb3 \ ++ e2fsprogs f2fsck mkf2fs + UBINIZE_OPTS := -E 5 + BLOCKSIZE := 128k + PAGESIZE := 2048 + IMAGE_SIZE := 116736k - KERNEL_IN_UBI := 1 -- UBOOTENV_IN_UBI := 1 -- IMAGES := sysupgrade.itb -- IMAGE_SIZE := $$(shell expr 64 + $$(CONFIG_TARGET_ROOTFS_PARTSIZE))m -- IMAGE/sysupgrade.itb := append-kernel | \ -- fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | \ -- pad-rootfs | append-metadata -- ARTIFACTS := \ -- emmc-gpt.bin emmc-preloader.bin emmc-bl31-uboot.fip \ -- nand-preloader.bin nand-bl31-uboot.fip -- ARTIFACT/emmc-gpt.bin := mt798x-gpt emmc -- ARTIFACT/emmc-preloader.bin := mt7981-bl2 emmc-ddr4 -- ARTIFACT/emmc-bl31-uboot.fip := mt7981-bl31-uboot cmcc_rax3000m-emmc -- ARTIFACT/nand-preloader.bin := mt7981-bl2 spim-nand-ddr4 -- ARTIFACT/nand-bl31-uboot.fip := mt7981-bl31-uboot cmcc_rax3000m-nand ++ KERNEL_IN_UBI := 1 + IMAGES += factory.bin + IMAGE/factory.bin := append-ubi | check-size $$$$(IMAGE_SIZE) + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata - endef - TARGET_DEVICES += cmcc_rax3000m - ++endef ++TARGET_DEVICES += cmcc_rax3000m-nand ++ +define Device/cmcc_rax3000m-emmc + DEVICE_VENDOR := CMCC + DEVICE_MODEL := RAX3000M eMMC @@ -85,7 +66,25 @@ + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata +endef +TARGET_DEVICES += cmcc_rax3000m-emmc -+ + define Device/confiabits_mt7981 DEVICE_VENDOR := Confiabits - DEVICE_MODEL := MT7981 + +--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh ++++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh +@@ -109,6 +109,7 @@ platform_do_upgrade() { + cudy,wr3000-v1) + default_do_upgrade "$1" + ;; ++ cmcc,rax3000m-emmc|\ + glinet,gl-mt6000) + CI_KERNPART="kernel" + CI_ROOTPART="rootfs" +@@ -184,6 +185,7 @@ platform_copy_config() { + ;; + esac + ;; ++ cmcc,rax3000m-emmc|\ + glinet,gl-mt6000|\ + ubnt,unifi-6-plus) + emmc_copy_config diff --git a/devices/mediatek_filogic/patches/11-gl-mt2500.patch b/devices/mediatek_filogic/patches/11-gl-mt2500.patch index f2c02b758c86..b786db67f54a 100644 --- a/devices/mediatek_filogic/patches/11-gl-mt2500.patch +++ b/devices/mediatek_filogic/patches/11-gl-mt2500.patch @@ -238,17 +238,17 @@ index 3c278d5faf2c4..6130768cb4c66 100755 --- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh +++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh @@ -97,6 +97,7 @@ platform_do_upgrade() { - cudy,wr3000-v1) default_do_upgrade "$1" ;; + cmcc,rax3000m-emmc|\ + glinet,gl-mt2500|\ glinet,gl-mt6000) CI_KERNPART="kernel" CI_ROOTPART="rootfs" @@ -176,6 +177,7 @@ platform_copy_config() { - ;; esac ;; + cmcc,rax3000m-emmc|\ + glinet,gl-mt2500|\ glinet,gl-mt6000|\ ubnt,unifi-6-plus) diff --git a/devices/mediatek_filogic/patches/15-cmcc-a10.patch b/devices/mediatek_filogic/patches/15-cmcc-a10.patch index 84350a473592..c91a458a4277 100644 --- a/devices/mediatek_filogic/patches/15-cmcc-a10.patch +++ b/devices/mediatek_filogic/patches/15-cmcc-a10.patch @@ -270,20 +270,6 @@ index 53e7b024e40fb..61637e09c7f0e 100644 confiabits,mt7981|\ cudy,wr3000-v1|\ tenbay,wr3000k|\ -diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac -index cb476d84d9115..125bec12cdb88 100644 ---- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac -+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac -@@ -62,6 +62,9 @@ - esac - [ "$PHYNBR" = "1" ] && echo "$addr" > /sys${DEVPATH}/macaddress - ;; -+ cmcc,a10) -+ [ "$PHYNBR" = "1" ] && mtd_get_mac_binary factory 0xa > /sys${DEVPATH}/macaddress -+ ;; - cudy,wr3000-v1) - addr=$(mtd_get_mac_binary bdinfo 0xde00) - # Originally, phy0 is phy1 mac with LA bit set. However, this would conflict diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk index 6976a399e86dc..83428f0d981e7 100644 --- a/target/linux/mediatek/image/filogic.mk diff --git a/devices/qualcommax_ipq60xx/diy.sh b/devices/qualcommax_ipq60xx/diy.sh index a98436c214f0..d515c970379e 100644 --- a/devices/qualcommax_ipq60xx/diy.sh +++ b/devices/qualcommax_ipq60xx/diy.sh @@ -6,7 +6,7 @@ SHELL_FOLDER=$(dirname $(readlink -f "$0")) git_clone_path master https://github.com/coolsnowwolf/lede target/linux/generic/hack-6.1 -rm -rf target/linux/qualcommax package/kernel/qca-* package/boot/uboot-envtools package/firmware/ipq-wifi +rm -rf target/linux/qualcommax/!(Makefile) package/kernel/qca-* package/boot/uboot-envtools package/firmware/ipq-wifi git_clone_path master https://github.com/coolsnowwolf/lede target/linux/qualcommax git_clone_path master https://github.com/coolsnowwolf/lede package/qca git_clone_path master https://github.com/coolsnowwolf/lede package/boot/uboot-envtools @@ -18,3 +18,4 @@ curl -sfL https://raw.githubusercontent.com/coolsnowwolf/lede/master/target/linu + diff --git a/devices/qualcommax_ipq60xx/diy/package/firmware/ipq-wifi/src/board-jdc_ax1800-pro.ipq6018 b/devices/qualcommax_ipq60xx/diy/package/firmware/ipq-wifi/src/board-jdc_ax1800-pro.ipq6018 new file mode 100644 index 0000000000000000000000000000000000000000..3a05fe8f1833bddf0a2dba514084eeb448e359c5 GIT binary patch literal 65644 zcmeHQ3wV^(ng0HNCLswCa+ypLh+%Rgg8~f@E{0ns$s`jpGZ~UeG6@j_MgbQzA}Ue@ zM5<83)u>>>0(DUX3RSmdyY*JP?y9R#*T>q{-SyJiZMV-p`}inZv1`eG?|+&3b7Llu z#DM3_`_G*Bob!F>JMTIFW$ueh9a9{B*R*L>Q%b5GHD$DB%^Kq5BMA>QpSR_=-!^~Q z%H@-9U9)P+^($AkOR8~605tufopkRt` z?Jew2^(3)JvsrOUseVZ!)8?eYdgZ=BxeqA!jmmwKa=%1vO_VfO&uL+4bPv0hRrkRL zBGaD&Nm8OTQ(7R+m5QW=(rnJnmadWJ@qHnePnQy;4DB|LAIAlCji+#yYL7684s|Y> zLV1xB3Ir99$*-)fx~O1LFk_;~SB)IBq9c^{W!je^KB&1)Lq~8tkQmY4V19(YIQzv} z6b?Z$QM{q6A?TnVms{Q_ew*HT`IlRMQ~V$FaX*dDQ@meI=V>9TE<^z{WoYNyp4NQ! z4VxtCEMYre$~<4?B~mw7T39ZT@eU+Rx6dDFZfRZFzNcgV!NZR~dE(Ubr(byGA76i~ zhZ89}Ha0d+K}?J}I%X8p*cdMC(e46h(*@WFlZX_EqL-EPg~Zp;ycggWOnsFFD@8^q zFhUfFroh*7%`-xVFTxl?1xC>c)jJ;?H+OY)ZO&BE*w17>USi8Rdv@&DoE#!4rh6EY zl%^QuC~52&lgT7wn@-fXL3i^DWHHoU0MoV&JN6$v!2v6YDDyN?#&M$bM~G7Hi^0eCc^m`A@NePml^FhkeLTf6>}4NoIR+2=$mSTnWFNl{ z?<4aSwtt50_Y)H*njW)=Y1Dxn4r_*xuHA3Rl^erSS1yPdm3QSvU6v zdqaAKUP5%wj@k`{H|1VyY`6D2*WNz&MtdOL6>7KbyZ#NcxSf@cn<5R40&P2vhE9H; z4vtUZ<_MESm-3(I7>*L<@O7!}E{>s)W3aF-zsG|ul4R%S2*DWmnl7z?V@Mr941dQl{D5QF zM>OG9wx7i@q_F)cq6B`P5lQN%!-d4~{2;{eW7gqsc`iCwOO7G^ngQy77%&$Xqr(r0 z^7$G+?_r`WUQ_9X90M-|ODya8Rd_A!J?&>`_HmKfW3KGau?|OAhdmqvKX2`}U!02| z2G(IB>yV2z$?GAV*F%bh#}LmkbcMGc^cb*j>oH*8j$jN*47{#`<1qS&a2$4{{e|ja z^kIx4!f`0aINmpvW87NSVK&bN@0*q@1~3rBA;(!|F7z1q zSbIVHMSnVCE+btJ*e?!iI^51$V&6*C_Dy~c9xf^S<`ZoH5Rc(Dwx7oK32e{D$s~Rq zB9erCGoPP-E60a*1|Knz`3T0)5sJZ@KEN1GaSVLU%6pJ~@VXwy`mQxD!?xbCBGlV=o~quzV0Zqe)YYM~hfg*hn$@2DZOcuevipzMK3crj zeoy)>p|brammIogXU@iyzX_GKpQ!uZ%JQFr&-!+Xq2C?H8+!RW@WUnFpR+q>ll5lZlIY$is~;}jW#5!;C_D6A^O2%GxtmiB zG2hp@_<&=tZM`wRjh)vWnY$-%bDE*u&QAYRG{ z+q3&w3kv@u{VUi+1PSZCw+xz4r<4Lko6J+?Z~d-wjV)`~5k)ayD8GW!s*p?pWBK zzcJk~m)|?paH#MB+g-*v+V+H}V}6fzq2A7)t69G9=(Df(aYFs{{C1*NC?FIN3J3*+ z0zv_yfKWgvAQTV^2nB=!LII(GP(Uak6c7ps1%v`Z0il3U;L=hcmfHE9SpIf|IVvVD ze$3c}#H3_PiZwMYecbqrD>H+ie;O4g;a3H$G?8YJi<+o~ZlX3?Ph03d+C?37kRIpn zX*@?ip_l2O`PS9z_A)(5d)Q_XWzw0hH+sFneYn+O=eM3Y<>uw;;BUl9pEgm9_T7## z2}y>~C)l#Gb8_=0=G!M-b@k*aJd!X&;CI%E;wgjjXe!O*U)6Aum+GjQZlIf$v25oE z_tRnOq*KaB-k@L5uj$|EBW*ONxDI0|pak~R`@>A3F-*SdDtoS)lrc00$AB0v$#hA- zk7)RgbbLI2%41|ElZm3DBK(}*$Q(iVsN%@1?1ybT4xLcHnbrS&cyE_?3wNM-W&7dh zU(dhDba|^JMkf>y3J3)*Ed@pse+iY-^se*Y{4MSKA3ycN>*sGZy{oTw{1xOO6D6Jw z@~1qBTGXUJYP9!5AmI1wrJ+1>Zg=nUmX@!ljj>-fA3zF?(-4&MytVl<8^k_Dmq(eH)cJ=c!VyYKyN zF!m*VO&izpVCx;pJ|Nl%1%v`Z0il3UKqw#-5DEwdgaTiW0$0#SHuP+Y@V9r2QMU2# zmFTJMgr4Ky^fcrb4pItvzqs6R#vIAeFK#s9tw-8;M}j6Bw6}XUXzN#hj3l;;X%l|7 zF0RGJ#AdX;xG2I~i#6F>BcX}Vq_+a1ZJ_b=*M2B8>#r|k`B3ybP@l$lMnZm|@ef7&k)VSyhM^eaKz$nH843A; z#xL6Ut$@4vg}3^uakujia`ut>D<27KVklzhLxMpq68aCtto8OesFT)*Gw;%u{;6lN zch@sLi>R-%-qBv(CCZlm>+2h2Lm4F%r{ww;T-!=PpdeO z49{%hTf#$`#5@kqJPzd?!nc^m%VQpgdYuUWLII-!W9Sp**8;lUj<=ZPR^tD@BL2^4 zdgPHK{0|*Or%zMAd7~fQKG6Ql3$s5JZ;>zHa~8%JL|!N$6c7ps1$rwmmd;pum-b!K zp7ithcVcf!YQ5rMoO=IR+-sxejs7eK+q+RV<=0pGwl$UxmLH?f3(a3exTPpJqmR1@ zw}r~>hQB^{?zwY~U7_34UAP(BN0L{4sJ2f~E#K7MBe4~2My>*1C7c_*KH>3rZ2d*4 z&OP;-adn*$scWonYjxd)>eRIp;vy#$5DEwdgaSeVp@2|8C?FIN3J3*+0zv_yfKWgv z&|857GV?!~izE~f3J3*+0zv_yz&BBWL|Q$p!%pJA%Nf=VM_^~k^py!=*}UC@J3U(E z-*|z#%OaRi;IdM{Lgow%$V{`zQ4ZJ-^M78^Tyg{euo%?20kC-fU$8O-UcB zf|g|fSclB45&+A9&k6v{Mr+7X1Axt-5^{I|uoT!e0ARV4LykHC%#I%X0N4cnk1j_O z05+L>D5(X&3aF7vTmaZ~s-coH0IZO*sH6k{Yh#}!+_;gMjpl$k0o3{V|HDd}0I+#H z+7b@{R*aT@0IZB+siYbJD@UCJ0CV$aS4ublb+j#L=><^Nik1}sSiOnIP!52tULK5&(ON`*YO*V9D}zRLY&Gv-xwbD{TZ&_a;~q0QL)J zWmN#!yS%o_JOJ2xtbAED0QNpJXDI+S-874w6#&==99eBW0QO(()9D1j{s86&!2X9> zc@+TmC$MS&?9X780N7u^Y5=fv%qq$OFj<;SzH$J}%*!mP3u0Bee|Q-6a56C+cbeupfa{ z0$``X`~cWb!0G_77uk!a8UV}Zs6ABx*lXO<(*S_IA*GY25deEzT0)+B0PH=q^aEfn zxrjV20PKC#Ee60o0ILDOJ_4%)z)teIZuA3SpGXVI69B*}*k`#10Q(GfWdPWJgOvhc zpJGH_0PJ(rIRUUUV6_0)S!ot|901r#K00I)@J9r>yNuuAsnYXHEi<^Lp~0|2X+=aR1i01JRM0$|NxP5`V0%msk0=JNnxk1?w+1;Ezwns2BDaIQLv9y|c* zj&UrtegLdfo<_9}0PGq06RPzBV5iuwrWOEu5q1>-m=!()0N6`lRRGv4V3h#aYi!r# z0KnemI%h2a_6b_n0APFgjP9-i!2ZZ9q;?Si_9E;44E1#Y*iutA z)jI*Omr>^haMZ6c6;XX9pm^b9PkjXdwi;`q900qMS)&sG`xn-;sR01nE`3akd;r+V zvCO8;)EJ30UxAGI^(YiWYKlx(t#Z01t3jk=Dq?Kaf4@BeF-|N|T~~&*y>P(be*AX>!z7nqodcQ%&1x zs(A-}%ls=UFn>tX%pcQqa|;#5E#qxDZ`ad|*c*6jr5Q0dQen(0-d0dy>`LBl;%zl= zu{28l6F(pNBVEDQ)T8;EQC<8wbg}iN!SdKAW9|H(&_rquUvyA&xk~O?u2svBQ`;dI zs!i3}S(J7MVxNvhPNoB~&uY2O*cUmM%FoNxoQ0oNo&4w0(4v|x^3R}8h2gSJXe9UID&ezjVBgFNVk%iggZR>r30 z;CU;T`FLzGTFw&8B?WVt!5ku0EfAlYOAFRQQ?(4^&};P^m&s}w_on0!v!P$54AHB# zh>GO3Da);g34N$J%#4~t1bVHWgFm$lBhoGO9M`fxFZ)y5A&2p*W#hG+8kJh6_KSAo zg6&k#UaN&vi}zA|T71Z^q zh4oFY#Vn{f)T%isuI8}T^fFn?VW!nGqn8-13~H>fe#oB3u;MGMpKD`Nb7~)-b8RTc z?brfk&~JtH$H7`Pr=OzJk{oR!Q{sHBLzSDmaWjod&04HBK)o^E1d^j!58a$lA4OwQr(L5K zftxAXXwTD5y{q>8 z2k%J>G=l_Xyq2JY;wa3AIWZWoGCyX^q$;gHMc>g^POi|nqNlmATJxvsYfhZ4@nSRd zHYYCBIIjojZ!_{JGFhh=sUe^~ip*&<=Bj5$o_`)MuLoDCKa4+5bAa)gD0aL)9<~3t z43FMF*GueCPsRLG{Fwi5>GgeZZf%wm)fQ+k(Nx`>ig`7|exg>=#r|a)TdX$#H__Pa zV1ZsC9u);bM=~LZP(Uak6o^ED6n^&%Y2Lhf5p7m}*KD{`Dt$HFU5=>!(rC4EaG% +Date: Thu, 21 Sep 2023 18:37:36 +0800 +Subject: [PATCH] QualcommAX: ipq60xx: add support for JD Cloud AX1800 Pro + +--- + .../uboot-envtools/files/qualcommax | 5 + + package/firmware/ipq-wifi/Makefile | 2 + + .../ipq-wifi/src/board-jdc_ax1800-pro.ipq6018 | Bin 0 -> 65644 bytes + .../boot/dts/qcom/ipq6018-jdc-ax1800-pro.dts | 424 ++++++ + target/linux/qualcommax/image/ipq60xx.mk | 24 +- + .../ipq60xx/base-files/etc/board.d/01_leds | 4 +- + .../ipq60xx/base-files/etc/board.d/02_network | 3 + + .../etc/hotplug.d/firmware/11-ath11k-caldata | 3 + + .../ipq60xx/base-files/lib/upgrade/mmc.sh | 83 ++ + .../base-files/lib/upgrade/platform.sh | 5 + + ...ers-pinctrl-qcom-add-ipq6000-support.patch | 1133 +++++++++++++++++ + 11 files changed, 1684 insertions(+), 2 deletions(-) + create mode 100644 package/firmware/ipq-wifi/src/board-jdc_ax1800-pro.ipq6018 + create mode 100644 target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-jdc-ax1800-pro.dts + create mode 100644 target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/mmc.sh + create mode 100644 target/linux/qualcommax/patches-6.1/2000-drivers-pinctrl-qcom-add-ipq6000-support.patch + +diff --git a/package/boot/uboot-envtools/files/qualcommax b/package/boot/uboot-envtools/files/qualcommax +index 783073696615c..186c56c152f75 100644 +--- a/package/boot/uboot-envtools/files/qualcommax ++++ b/package/boot/uboot-envtools/files/qualcommax +@@ -20,6 +20,11 @@ glinet,gl-axt1800) + [ -n "$idx" ] && \ + ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x40000" "0x20000" "2" + ;; ++ jdc,ax1800-pro) ++ mmcpart="$(find_mmc_part 0:APPSBLENV)" ++ [ -n "$mmcpart" ] && \ ++ ubootenv_add_uci_config "$mmcpart" "0x0" "0x40000" "0x20000" "2" ++ ;; + esac + + config_load ubootenv +diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile +index 4474977494e4d..4b88911c0e102 100644 +--- a/package/firmware/ipq-wifi/Makefile ++++ b/package/firmware/ipq-wifi/Makefile +@@ -36,6 +36,7 @@ ALLWIFIBOARDS:= \ + edimax_cax1800 \ + glinet_gl-ax1800 \ + glinet_gl-axt1800 \ ++ jdc_ax1800-pro \ + linksys_mr7350 \ + linksys_mx4200 \ + netgear_rax120v2 \ +@@ -141,6 +142,7 @@ $(eval $(call generate-ipq-wifi-package,edgecore_eap102,Edgecore EAP102)) + $(eval $(call generate-ipq-wifi-package,edimax_cax1800,Edimax CAX1800)) + $(eval $(call generate-ipq-wifi-package,glinet_gl-ax1800,GL.iNet GL-AX1800)) + $(eval $(call generate-ipq-wifi-package,glinet_gl-axt1800,GL.iNet GL-AXT1800)) ++$(eval $(call generate-ipq-wifi-package,jdc_ax1800-pro,JD Cloud AX1800 Pro)) + $(eval $(call generate-ipq-wifi-package,linksys_mr7350,Linksys MR7350)) + $(eval $(call generate-ipq-wifi-package,linksys_mx4200,Linksys MX4200)) + $(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2)) +diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-jdc-ax1800-pro.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-jdc-ax1800-pro.dts +new file mode 100644 +index 0000000000000..85032240a7a83 +--- /dev/null ++++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-jdc-ax1800-pro.dts +@@ -0,0 +1,424 @@ ++/dts-v1/; ++/* ++ * Copyright (c) 2019, 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 "ipq6018.dtsi" ++#include "ipq6018-512m.dtsi" ++#include "ipq6018-ess.dtsi" ++ ++ ++#include ++#include ++#include ++ ++/ { ++ model = "JDCloud AX1800 Pro"; ++ compatible = "jdc,ax1800-pro", "qcom,ipq6018-cp03", "qcom,ipq6018"; ++ ++ aliases { ++ sdhc1 = &sdhc; ++ serial0 = &blsp1_uart3; ++ led-boot = &led_red_1; ++ led-failsafe = &led_red_1; ++ led-running = &led_green_1; ++ led-upgrade = &led_green_1; ++ ethernet1 = &dp2; ++ ethernet2 = &dp3; ++ ethernet3 = &dp4; ++ ethernet4 = &dp5; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyMSM0,115200,n8"; ++ bootargs-append = " rootfstype=squashfs,ext4 swiotlb=1 coherent_pool=2M"; ++ }; ++ ++ gpio_keys { ++ compatible = "gpio-keys"; ++ status = "okay"; ++ ++ joylink { ++ label = "joylink"; ++ linux,code = <0x211>; ++ gpios = <&tlmm 0x08 GPIO_ACTIVE_LOW>; ++ linux,input-type = <0x01>; ++ debounce-interval = <0x3c>; ++ }; ++ ++ reset { ++ label = "reset"; ++ linux,code = <0x198>; ++ gpios = <&tlmm 0x09 GPIO_ACTIVE_LOW>; ++ linux,input-type = <0x01>; ++ debounce-interval = <0x3c>; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led_blue_1: led@35 { ++ label = "led_b1"; ++ gpio = <&tlmm 0x23 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_red_1: led@37 { ++ label = "led_r1"; ++ gpio = <&tlmm 0x25 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_green_1: led@50 { ++ label = "led_g1"; ++ gpio = <&tlmm 0x32 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_blue_2: led@30 { ++ label = "led_b2"; ++ gpio = <&tlmm 0x1e GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_red_2: led@32 { ++ label = "led_r2"; ++ gpio = <&tlmm 0x20 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_green_2: led@33 { ++ label = "led_g2"; ++ gpio = <&tlmm 0x21 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_blue_3:led@31 { ++ label = "led_b3"; ++ gpio = <&tlmm 0x1f GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_red_3: led@29 { ++ label = "led_r3"; ++ gpio = <&tlmm 0x1d GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_green_3: led@34 { ++ label = "led_g3"; ++ gpio = <&tlmm 0x22 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++}; ++ ++&tlmm { ++ compatible = "qcom,ipq6000-pinctrl"; ++ ++ spi_1_pins: spi_1_pins { ++ mux { ++ pins = "gpio38","gpio39","gpio40","gpio41"; ++ function = "blsp0_spi"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ }; ++ ++ button_pins: button_pins { ++ joylink_button { ++ pins = "gpio8"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-up; ++ }; ++ ++ reset_button { ++ pins = "gpio9"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-up; ++ }; ++ }; ++ ++ mdio_pinmux: mdio_pinmux { ++ mux_0 { ++ pins = "gpio64"; ++ function = "mdc"; ++ drive-strength = <0x08>; ++ bias-pull-up; ++ }; ++ ++ mux_1 { ++ pins = "gpio65"; ++ function = "mdio"; ++ drive-strength = <0x08>; ++ bias-pull-up; ++ }; ++ ++ mux_2 { ++ pins = "gpio75"; ++ function = "gpio"; ++ bias-pull-up; ++ }; ++ }; ++ ++ leds_pins: leds_pins { ++ led_b1 { ++ pins = "gpio35"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_r1 { ++ pins = "gpio37"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_g1 { ++ pins = "gpio50"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_b2 { ++ pins = "gpio30"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_r2 { ++ pins = "gpio32"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_g2 { ++ pins = "gpio33"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_b3 { ++ pins = "gpio31"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_r3 { ++ pins = "gpio29"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ ++ led_g3 { ++ pins = "gpio34"; ++ function = "gpio"; ++ drive-strength = <0x08>; ++ bias-pull-down; ++ }; ++ }; ++}; ++ ++ ++&blsp1_uart3 { ++ pinctrl-0 = <&serial_3_pins>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&blsp1_spi1 { ++ pinctrl-0 = <&spi_1_pins>; ++ pinctrl-names = "default"; ++ cs-select = <0>; ++ status = "okay"; ++ ++ m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0>; ++ compatible = "n25q128a11"; ++ linux,modalias = "m25p80", "n25q128a11"; ++ spi-max-frequency = <50000000>; ++ use-default-sizes; ++ }; ++}; ++ ++&prng { ++ status = "okay"; ++}; ++ ++&cryptobam { ++ status = "okay"; ++}; ++ ++&crypto { ++ status = "okay"; ++}; ++ ++&qpic_bam { ++ status = "okay"; ++}; ++ ++&qusb_phy_0 { ++ status = "okay"; ++}; ++ ++&qusb_phy_1 { ++ status = "okay"; ++}; ++ ++ ++&ssphy_0 { ++ status = "okay"; ++}; ++ ++&usb3 { ++ status = "okay"; ++}; ++ ++&usb2 { ++ status = "okay"; ++}; ++ ++&edma { ++ status = "okay"; ++}; ++ ++&rpm { ++ status = "disabled"; ++}; ++ ++&mdio { ++ status = "okay"; ++ ++ pinctrl-0 = <&mdio_pinmux>; ++ pinctrl-names = "default"; ++ reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>; ++ ++ ethernet_0: ethernet-phy-package@0 { ++ compatible = "qcom,qca8075-package"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <0>; ++ qcom,package-mode = "psgmii"; ++ ++ qca8075_1: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <1>; ++ }; ++ ++ qca8075_2: ethernet-phy@2 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <2>; ++ }; ++ ++ qca8075_3: ethernet-phy@3 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <3>; ++ }; ++ ++ qca8075_4: ethernet-phy@4 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <4>; ++ }; ++ }; ++}; ++ ++&switch { ++ status = "okay"; ++ ++ switch_lan_bmp = <(0x8 | 0x10 | 0x20)>; /* lan port bitmap */ ++ switch_wan_bmp = <0x4>; /* wan port bitmap */ ++ ++ qcom,port_phyinfo { ++ port@1 { ++ port_id = <2>; ++ phy_address = <1>; ++ }; ++ ++ port@2 { ++ port_id = <3>; ++ phy_address = <2>; ++ }; ++ ++ port@3 { ++ port_id = <4>; ++ phy_address = <3>; ++ }; ++ ++ port@4 { ++ port_id = <5>; ++ phy_address = <4>; ++ }; ++ }; ++}; ++ ++&qpic_bam { ++ status = "okay"; ++}; ++ ++&wifi { ++ status = "okay"; ++ qcom,ath11k-calibration-variant = "JDC-AX1800-Pro"; ++ qcom,ath11k-fw-memory-mode = <1>; ++}; ++ ++ ++&dp2 { ++ phy-handle = <&qca8075_1>; ++ status = "okay"; ++}; ++ ++&dp3 { ++ phy-handle = <&qca8075_2>; ++ status = "okay"; ++}; ++ ++&dp4 { ++ phy-handle = <&qca8075_3>; ++ status = "okay"; ++}; ++ ++&dp5 { ++ phy-handle = <&qca8075_4>; ++ phy-mode = "psgmii"; ++ status = "okay"; ++}; ++ ++&sdhc { ++ status = "okay"; ++ ++ /delete-property/ mmc-hs400-1_8v; ++ mmc-hs200-1_8v; ++ mmc-ddr-1_8v; ++}; ++ ++&CPU0 { ++ /delete-property/ cpu-supply; ++}; ++ ++&CPU1 { ++ /delete-property/ cpu-supply; ++}; ++ ++&CPU2 { ++ /delete-property/ cpu-supply; ++}; ++ ++&CPU3 { ++ /delete-property/ cpu-supply; ++}; +diff --git a/target/linux/qualcommax/image/ipq60xx.mk b/target/linux/qualcommax/image/ipq60xx.mk +index 17fd54aa4017b..efc9c8802ad0a 100644 +--- a/target/linux/qualcommax/image/ipq60xx.mk ++++ b/target/linux/qualcommax/image/ipq60xx.mk +@@ -49,6 +49,21 @@ define Device/glinet_gl-axt1800 + endef + TARGET_DEVICES += glinet_gl-axt1800 + ++define Device/jdc_ax1800-pro ++ $(call Device/FitImage) ++ DEVICE_VENDOR := JD Cloud ++ DEVICE_MODEL := JDC AX1800 Pro ++ DEVICE_DTS_CONFIG := config@cp03-c2 ++ DEVICE_DTS := ipq6018-jdc-ax1800-pro ++ SOC := ipq6018 ++ DEVICE_PACKAGES := ipq-wifi-jdc_ax1800-pro kmod-fs-ext4 mkf2fs f2fsck kmod-fs-f2fs ++ BLOCKSIZE := 64k ++ KERNEL_SIZE := 6144k ++ IMAGES += factory.bin ++ IMAGE/factory.bin := append-kernel | pad-to 6144k | append-rootfs | append-metadata ++endef ++TARGET_DEVICES += jdc_ax1800-pro ++ + define Device/linksys_mr7350 + $(call Device/FitImage) + DEVICE_VENDOR := Linksys +diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds +index a75a2f071308a..6976dbabb6411 100644 +--- a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds ++++ b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds +@@ -11,6 +11,9 @@ cmiot,ax18) + ucidef_set_led_netdev "wlan2g" "WLAN2G" "blue:wlan2g" "wlan1" + ucidef_set_led_netdev "wlan5g" "WLAN5G" "blue:wlan5g" "wlan0" + ;; ++jdc,ax1800-pro) ++ ucidef_set_led_netdev "wan" "WAN" "net_blue" "eth3" ++ ;; + redmi,ax5-*|\ + xiaomi,rm1800) + ucidef_set_led_netdev "internet" "Internet" "blue:network" "wan" +diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network +index ead1fb8f0fa57..cb743fa38c199 100644 +--- a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network ++++ b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network +@@ -24,6 +24,9 @@ ipq60xx_setup_interfaces() + glinet,gl-axt1800) + ucidef_set_interfaces_lan_wan "lan1 lan2" "wan" + ;; ++ jdc,ax1800-pro) ++ ucidef_set_interfaces_lan_wan "eth0 eth1 eth2" "eth3" ++ ;; + *) + echo "Unsupported hardware. Network interfaces not initialized" + ;; +diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +index f148438b3335d..bc30e8cc423db 100644 +--- a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata ++++ b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +@@ -15,6 +15,7 @@ case "$FIRMWARE" in + zn,m2) + caldata_extract "0:art" 0x1000 0x10000 + ;; ++ jdc,ax1800-pro|\ + redmi,ax5-jdcloud) + caldata_extract_mmc "0:ART" 0x1000 0x10000 + ;; +diff --git a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/mmc.sh b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/mmc.sh +new file mode 100644 +index 0000000000000..dac9ddd568654 +--- /dev/null ++++ b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/mmc.sh +@@ -0,0 +1,83 @@ ++# ++# Copyright (C) 2016 lede-project.org ++# ++ ++# this can be used as a generic mmc upgrade script ++# just add a device entry in platform.sh, ++# define "kernelname" and "rootfsname" and call mmc_do_upgrade ++# after the kernel and rootfs flash a loopdev (as overlay) is ++# setup on top of the rootfs partition ++# for the proper function a padded rootfs image is needed, basically ++# append "pad-to 64k" to the image definition ++# this is based on the ipq806x zyxel.sh mmc upgrade ++ ++. /lib/functions.sh ++ ++mmc_do_upgrade() { ++ local tar_file="$1" ++ local rootfs= ++ local kernel= ++ ++ [ -z "$kernel" ] && kernel=$(find_mmc_part ${kernelname}) ++ [ -z "$rootfs" ] && rootfs=$(find_mmc_part ${rootfsname}) ++ ++ [ -z "$kernel" ] && echo "Upgrade failed: kernel partition not found! Rebooting..." && reboot -f ++ [ -z "$rootfs" ] && echo "Upgrade failed: rootfs partition not found! Rebooting..." && reboot -f ++ ++ mmc_do_flash $tar_file $kernel $rootfs ++ ++ return 0 ++} ++ ++mmc_do_flash() { ++ local tar_file=$1 ++ local kernel=$2 ++ local rootfs=$3 ++ ++ # keep sure its unbound ++ losetup --detach-all || { ++ echo Failed to detach all loop devices. Skip this try. ++ reboot -f ++ } ++ ++ # use the first found directory in the tar archive ++ local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$') ++ board_dir=${board_dir%/} ++ ++ echo "flashing kernel to $kernel" ++ tar xf $tar_file ${board_dir}/kernel -O >$kernel ++ ++ echo "flashing rootfs to ${rootfs}" ++ tar xf $tar_file ${board_dir}/root -O >"${rootfs}" ++ ++ # a padded rootfs is needed for overlay fs creation ++ local offset=$(tar xf $tar_file ${board_dir}/root -O | wc -c) ++ [ $offset -lt 65536 ] && { ++ echo Wrong size for rootfs: $offset ++ sleep 10 ++ reboot -f ++ } ++ ++ # Mount loop for rootfs_data ++ local loopdev="$(losetup -f)" ++ losetup -o $offset $loopdev $rootfs || { ++ echo "Failed to mount looped rootfs_data." ++ sleep 10 ++ reboot -f ++ } ++ ++ echo "Format new rootfs_data at position ${offset}." ++ mkfs.ext4 -F -L rootfs_data $loopdev ++ mkdir /tmp/new_root ++ mount -t ext4 $loopdev /tmp/new_root && { ++ echo "Saving config to rootfs_data at position ${offset}." ++ cp -v "$UPGRADE_BACKUP" "/tmp/new_root/$BACKUP_FILE" ++ umount /tmp/new_root ++ } ++ ++ # Cleanup ++ losetup -d $loopdev >/dev/null 2>&1 ++ sync ++ umount -a ++ reboot -f ++} +diff --git a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh +index 3c01d8dd967c4..d4c5072de7b13 100644 +--- a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh ++++ b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh +@@ -14,6 +14,11 @@ platform_do_upgrade() { + glinet,gl-ax1800) + nand_do_upgrade "$1" + ;; ++ jdc,ax1800-pro) ++ kernelname="0:HLOS" ++ rootfsname="rootfs" ++ mmc_do_upgrade "$1" ++ ;; + *) + default_do_upgrade "$1" + ;; +diff --git a/target/linux/qualcommax/patches-6.1/2000-drivers-pinctrl-qcom-add-ipq6000-support.patch b/target/linux/qualcommax/patches-6.1/2000-drivers-pinctrl-qcom-add-ipq6000-support.patch +new file mode 100644 +index 0000000000000..d856e56fbef64 +--- /dev/null ++++ b/target/linux/qualcommax/patches-6.1/2000-drivers-pinctrl-qcom-add-ipq6000-support.patch +@@ -0,0 +1,1133 @@ ++From 192ce4f2a695c1d6ed72ac1a1b69f125ada9d4c3 Mon Sep 17 00:00:00 2001 ++From: JiaY-shi ++Date: Tue, 28 Nov 2023 23:31:57 +0800 ++Subject: [PATCH] drivers: pinctrl: qcom: add ipq6000 support ++ ++--- ++ drivers/pinctrl/qcom/Makefile | 1 + ++ drivers/pinctrl/qcom/pinctrl-ipq6000.c | 1101 ++++++++++++++++++++++++ ++ 2 files changed, 1102 insertions(+) ++ create mode 100644 drivers/pinctrl/qcom/pinctrl-ipq6000.c ++ ++diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile ++index 8269a1db8794..0db75e183ca0 100644 ++--- a/drivers/pinctrl/qcom/Makefile +++++ b/drivers/pinctrl/qcom/Makefile ++@@ -6,6 +6,7 @@ obj-$(CONFIG_PINCTRL_APQ8084) += pinctrl-apq8084.o ++ obj-$(CONFIG_PINCTRL_IPQ4019) += pinctrl-ipq4019.o ++ obj-$(CONFIG_PINCTRL_IPQ8064) += pinctrl-ipq8064.o ++ obj-$(CONFIG_PINCTRL_IPQ8074) += pinctrl-ipq8074.o +++obj-$(CONFIG_PINCTRL_IPQ6018) += pinctrl-ipq6000.o ++ obj-$(CONFIG_PINCTRL_IPQ6018) += pinctrl-ipq6018.o ++ obj-$(CONFIG_PINCTRL_MSM8226) += pinctrl-msm8226.o ++ obj-$(CONFIG_PINCTRL_MSM8660) += pinctrl-msm8660.o ++diff --git a/drivers/pinctrl/qcom/pinctrl-ipq6000.c b/drivers/pinctrl/qcom/pinctrl-ipq6000.c ++new file mode 100644 ++index 000000000000..cd7b16ed695d ++--- /dev/null +++++ b/drivers/pinctrl/qcom/pinctrl-ipq6000.c ++@@ -0,0 +1,1101 @@ +++// SPDX-License-Identifier: GPL-2.0 +++/* +++ * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. +++ */ +++ +++#include +++#include +++#include +++#include +++ +++#include "pinctrl-msm.h" +++ +++#define FUNCTION(fname) \ +++ [msm_mux_##fname] = { \ +++ .name = #fname, \ +++ .groups = fname##_groups, \ +++ .ngroups = ARRAY_SIZE(fname##_groups), \ +++ } +++ +++#define REG_SIZE 0x1000 +++#define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9) \ +++ { \ +++ .name = "gpio" #id, \ +++ .pins = gpio##id##_pins, \ +++ .npins = (unsigned int)ARRAY_SIZE(gpio##id##_pins), \ +++ .funcs = (int[]){ \ +++ msm_mux_gpio, /* gpio mode */ \ +++ msm_mux_##f1, \ +++ msm_mux_##f2, \ +++ msm_mux_##f3, \ +++ msm_mux_##f4, \ +++ msm_mux_##f5, \ +++ msm_mux_##f6, \ +++ msm_mux_##f7, \ +++ msm_mux_##f8, \ +++ msm_mux_##f9 \ +++ }, \ +++ .nfuncs = 10, \ +++ .ctl_reg = REG_SIZE * id, \ +++ .io_reg = 0x4 + REG_SIZE * id, \ +++ .intr_cfg_reg = 0x8 + REG_SIZE * id, \ +++ .intr_status_reg = 0xc + REG_SIZE * id, \ +++ .intr_target_reg = 0x8 + REG_SIZE * id, \ +++ .mux_bit = 2, \ +++ .pull_bit = 0, \ +++ .drv_bit = 6, \ +++ .oe_bit = 9, \ +++ .in_bit = 0, \ +++ .out_bit = 1, \ +++ .intr_enable_bit = 0, \ +++ .intr_status_bit = 0, \ +++ .intr_target_bit = 5, \ +++ .intr_target_kpss_val = 3, \ +++ .intr_raw_status_bit = 4, \ +++ .intr_polarity_bit = 1, \ +++ .intr_detection_bit = 2, \ +++ .intr_detection_width = 2, \ +++ } +++ +++static const struct pinctrl_pin_desc ipq6018_pins[] = { +++ PINCTRL_PIN(0, "GPIO_0"), +++ PINCTRL_PIN(1, "GPIO_1"), +++ PINCTRL_PIN(2, "GPIO_2"), +++ PINCTRL_PIN(3, "GPIO_3"), +++ PINCTRL_PIN(4, "GPIO_4"), +++ PINCTRL_PIN(5, "GPIO_5"), +++ PINCTRL_PIN(6, "GPIO_6"), +++ PINCTRL_PIN(7, "GPIO_7"), +++ PINCTRL_PIN(8, "GPIO_8"), +++ PINCTRL_PIN(9, "GPIO_9"), +++ PINCTRL_PIN(10, "GPIO_10"), +++ PINCTRL_PIN(11, "GPIO_11"), +++ PINCTRL_PIN(12, "GPIO_12"), +++ PINCTRL_PIN(13, "GPIO_13"), +++ PINCTRL_PIN(14, "GPIO_14"), +++ PINCTRL_PIN(15, "GPIO_15"), +++ PINCTRL_PIN(16, "GPIO_16"), +++ PINCTRL_PIN(17, "GPIO_17"), +++ PINCTRL_PIN(18, "GPIO_18"), +++ PINCTRL_PIN(19, "GPIO_19"), +++ +++ PINCTRL_PIN(21, "GPIO_21"), +++ PINCTRL_PIN(22, "GPIO_22"), +++ PINCTRL_PIN(23, "GPIO_23"), +++ PINCTRL_PIN(24, "GPIO_24"), +++ PINCTRL_PIN(25, "GPIO_25"), +++ PINCTRL_PIN(26, "GPIO_26"), +++ PINCTRL_PIN(27, "GPIO_27"), +++ PINCTRL_PIN(28, "GPIO_28"), +++ PINCTRL_PIN(29, "GPIO_29"), +++ PINCTRL_PIN(30, "GPIO_30"), +++ PINCTRL_PIN(31, "GPIO_31"), +++ PINCTRL_PIN(32, "GPIO_32"), +++ PINCTRL_PIN(33, "GPIO_33"), +++ PINCTRL_PIN(34, "GPIO_34"), +++ PINCTRL_PIN(35, "GPIO_35"), +++ PINCTRL_PIN(36, "GPIO_36"), +++ PINCTRL_PIN(37, "GPIO_37"), +++ PINCTRL_PIN(38, "GPIO_38"), +++ PINCTRL_PIN(39, "GPIO_39"), +++ PINCTRL_PIN(40, "GPIO_40"), +++ PINCTRL_PIN(41, "GPIO_41"), +++ PINCTRL_PIN(42, "GPIO_42"), +++ PINCTRL_PIN(43, "GPIO_43"), +++ PINCTRL_PIN(44, "GPIO_44"), +++ PINCTRL_PIN(45, "GPIO_45"), +++ PINCTRL_PIN(46, "GPIO_46"), +++ PINCTRL_PIN(47, "GPIO_47"), +++ PINCTRL_PIN(48, "GPIO_48"), +++ PINCTRL_PIN(49, "GPIO_49"), +++ PINCTRL_PIN(50, "GPIO_50"), +++ PINCTRL_PIN(51, "GPIO_51"), +++ PINCTRL_PIN(52, "GPIO_52"), +++ PINCTRL_PIN(53, "GPIO_53"), +++ PINCTRL_PIN(54, "GPIO_54"), +++ PINCTRL_PIN(55, "GPIO_55"), +++ PINCTRL_PIN(56, "GPIO_56"), +++ PINCTRL_PIN(57, "GPIO_57"), +++ PINCTRL_PIN(58, "GPIO_58"), +++ PINCTRL_PIN(59, "GPIO_59"), +++ PINCTRL_PIN(60, "GPIO_60"), +++ PINCTRL_PIN(61, "GPIO_61"), +++ PINCTRL_PIN(62, "GPIO_62"), +++ PINCTRL_PIN(63, "GPIO_63"), +++ PINCTRL_PIN(64, "GPIO_64"), +++ PINCTRL_PIN(65, "GPIO_65"), +++ PINCTRL_PIN(66, "GPIO_66"), +++ PINCTRL_PIN(67, "GPIO_67"), +++ PINCTRL_PIN(68, "GPIO_68"), +++ PINCTRL_PIN(69, "GPIO_69"), +++ PINCTRL_PIN(70, "GPIO_70"), +++ PINCTRL_PIN(71, "GPIO_71"), +++ PINCTRL_PIN(72, "GPIO_72"), +++ PINCTRL_PIN(73, "GPIO_73"), +++ PINCTRL_PIN(74, "GPIO_74"), +++ PINCTRL_PIN(75, "GPIO_75"), +++ PINCTRL_PIN(76, "GPIO_76"), +++ PINCTRL_PIN(77, "GPIO_77"), +++ PINCTRL_PIN(78, "GPIO_78"), +++ PINCTRL_PIN(79, "GPIO_79"), +++}; +++ +++#define DECLARE_MSM_GPIO_PINS(pin) \ +++ static const unsigned int gpio##pin##_pins[] = { pin } +++DECLARE_MSM_GPIO_PINS(0); +++DECLARE_MSM_GPIO_PINS(1); +++DECLARE_MSM_GPIO_PINS(2); +++DECLARE_MSM_GPIO_PINS(3); +++DECLARE_MSM_GPIO_PINS(4); +++DECLARE_MSM_GPIO_PINS(5); +++DECLARE_MSM_GPIO_PINS(6); +++DECLARE_MSM_GPIO_PINS(7); +++DECLARE_MSM_GPIO_PINS(8); +++DECLARE_MSM_GPIO_PINS(9); +++DECLARE_MSM_GPIO_PINS(10); +++DECLARE_MSM_GPIO_PINS(11); +++DECLARE_MSM_GPIO_PINS(12); +++DECLARE_MSM_GPIO_PINS(13); +++DECLARE_MSM_GPIO_PINS(14); +++DECLARE_MSM_GPIO_PINS(15); +++DECLARE_MSM_GPIO_PINS(16); +++DECLARE_MSM_GPIO_PINS(17); +++DECLARE_MSM_GPIO_PINS(18); +++DECLARE_MSM_GPIO_PINS(19); +++ +++DECLARE_MSM_GPIO_PINS(21); +++DECLARE_MSM_GPIO_PINS(22); +++DECLARE_MSM_GPIO_PINS(23); +++DECLARE_MSM_GPIO_PINS(24); +++DECLARE_MSM_GPIO_PINS(25); +++DECLARE_MSM_GPIO_PINS(26); +++DECLARE_MSM_GPIO_PINS(27); +++DECLARE_MSM_GPIO_PINS(28); +++DECLARE_MSM_GPIO_PINS(29); +++DECLARE_MSM_GPIO_PINS(30); +++DECLARE_MSM_GPIO_PINS(31); +++DECLARE_MSM_GPIO_PINS(32); +++DECLARE_MSM_GPIO_PINS(33); +++DECLARE_MSM_GPIO_PINS(34); +++DECLARE_MSM_GPIO_PINS(35); +++DECLARE_MSM_GPIO_PINS(36); +++DECLARE_MSM_GPIO_PINS(37); +++DECLARE_MSM_GPIO_PINS(38); +++DECLARE_MSM_GPIO_PINS(39); +++DECLARE_MSM_GPIO_PINS(40); +++DECLARE_MSM_GPIO_PINS(41); +++DECLARE_MSM_GPIO_PINS(42); +++DECLARE_MSM_GPIO_PINS(43); +++DECLARE_MSM_GPIO_PINS(44); +++DECLARE_MSM_GPIO_PINS(45); +++DECLARE_MSM_GPIO_PINS(46); +++DECLARE_MSM_GPIO_PINS(47); +++DECLARE_MSM_GPIO_PINS(48); +++DECLARE_MSM_GPIO_PINS(49); +++DECLARE_MSM_GPIO_PINS(50); +++DECLARE_MSM_GPIO_PINS(51); +++DECLARE_MSM_GPIO_PINS(52); +++DECLARE_MSM_GPIO_PINS(53); +++DECLARE_MSM_GPIO_PINS(54); +++DECLARE_MSM_GPIO_PINS(55); +++DECLARE_MSM_GPIO_PINS(56); +++DECLARE_MSM_GPIO_PINS(57); +++DECLARE_MSM_GPIO_PINS(58); +++DECLARE_MSM_GPIO_PINS(59); +++DECLARE_MSM_GPIO_PINS(60); +++DECLARE_MSM_GPIO_PINS(61); +++DECLARE_MSM_GPIO_PINS(62); +++DECLARE_MSM_GPIO_PINS(63); +++DECLARE_MSM_GPIO_PINS(64); +++DECLARE_MSM_GPIO_PINS(65); +++DECLARE_MSM_GPIO_PINS(66); +++DECLARE_MSM_GPIO_PINS(67); +++DECLARE_MSM_GPIO_PINS(68); +++DECLARE_MSM_GPIO_PINS(69); +++DECLARE_MSM_GPIO_PINS(70); +++DECLARE_MSM_GPIO_PINS(71); +++DECLARE_MSM_GPIO_PINS(72); +++DECLARE_MSM_GPIO_PINS(73); +++DECLARE_MSM_GPIO_PINS(74); +++DECLARE_MSM_GPIO_PINS(75); +++DECLARE_MSM_GPIO_PINS(76); +++DECLARE_MSM_GPIO_PINS(77); +++DECLARE_MSM_GPIO_PINS(78); +++DECLARE_MSM_GPIO_PINS(79); +++ +++enum ipq6018_functions { +++ msm_mux_atest_char, +++ msm_mux_atest_char0, +++ msm_mux_atest_char1, +++ +++ msm_mux_atest_char3, +++ msm_mux_audio0, +++ msm_mux_audio1, +++ msm_mux_audio2, +++ msm_mux_audio3, +++ msm_mux_audio_rxbclk, +++ msm_mux_audio_rxfsync, +++ msm_mux_audio_rxmclk, +++ msm_mux_audio_rxmclkin, +++ msm_mux_audio_txbclk, +++ msm_mux_audio_txfsync, +++ msm_mux_audio_txmclk, +++ msm_mux_audio_txmclkin, +++ msm_mux_blsp0_i2c, +++ msm_mux_blsp0_spi, +++ msm_mux_blsp0_uart, +++ msm_mux_blsp1_i2c, +++ msm_mux_blsp1_spi, +++ msm_mux_blsp1_uart, +++ msm_mux_blsp2_i2c, +++ msm_mux_blsp2_spi, +++ msm_mux_blsp2_uart, +++ msm_mux_blsp3_i2c, +++ msm_mux_blsp3_spi, +++ msm_mux_blsp3_uart, +++ msm_mux_blsp4_i2c, +++ msm_mux_blsp4_spi, +++ msm_mux_blsp4_uart, +++ msm_mux_blsp5_i2c, +++ msm_mux_blsp5_uart, +++ msm_mux_burn0, +++ msm_mux_burn1, +++ msm_mux_cri_trng, +++ msm_mux_cri_trng0, +++ msm_mux_cri_trng1, +++ msm_mux_cxc0, +++ msm_mux_cxc1, +++ msm_mux_dbg_out, +++ msm_mux_gcc_plltest, +++ msm_mux_gcc_tlmm, +++ msm_mux_gpio, +++ msm_mux_lpass_aud, +++ msm_mux_lpass_aud0, +++ msm_mux_lpass_aud1, +++ msm_mux_lpass_aud2, +++ msm_mux_lpass_pcm, +++ msm_mux_lpass_pdm, +++ msm_mux_mac00, +++ msm_mux_mac01, +++ msm_mux_mac10, +++ msm_mux_mac11, +++ msm_mux_mac12, +++ msm_mux_mac13, +++ msm_mux_mac20, +++ msm_mux_mac21, +++ msm_mux_mdc, +++ msm_mux_mdio, +++ msm_mux_pcie0_clk, +++ msm_mux_pcie0_rst, +++ msm_mux_pcie0_wake, +++ msm_mux_prng_rosc, +++ msm_mux_pta1_0, +++ msm_mux_pta1_1, +++ msm_mux_pta1_2, +++ msm_mux_pta2_0, +++ msm_mux_pta2_1, +++ msm_mux_pta2_2, +++ msm_mux_pwm00, +++ msm_mux_pwm01, +++ msm_mux_pwm02, +++ msm_mux_pwm03, +++ msm_mux_pwm04, +++ msm_mux_pwm10, +++ msm_mux_pwm11, +++ msm_mux_pwm12, +++ msm_mux_pwm13, +++ msm_mux_pwm14, +++ +++ msm_mux_pwm21, +++ msm_mux_pwm22, +++ msm_mux_pwm23, +++ msm_mux_pwm24, +++ msm_mux_pwm30, +++ msm_mux_pwm31, +++ msm_mux_pwm32, +++ msm_mux_pwm33, +++ msm_mux_qdss_cti_trig_in_a0, +++ msm_mux_qdss_cti_trig_in_a1, +++ msm_mux_qdss_cti_trig_out_a0, +++ msm_mux_qdss_cti_trig_out_a1, +++ msm_mux_qdss_cti_trig_in_b0, +++ msm_mux_qdss_cti_trig_in_b1, +++ msm_mux_qdss_cti_trig_out_b0, +++ msm_mux_qdss_cti_trig_out_b1, +++ msm_mux_qdss_traceclk_a, +++ msm_mux_qdss_tracectl_a, +++ msm_mux_qdss_tracedata_a, +++ msm_mux_qdss_traceclk_b, +++ msm_mux_qdss_tracectl_b, +++ msm_mux_qdss_tracedata_b, +++ msm_mux_qpic_pad, +++ msm_mux_rx0, +++ msm_mux_rx1, +++ msm_mux_rx_swrm, +++ msm_mux_rx_swrm0, +++ msm_mux_rx_swrm1, +++ msm_mux_sd_card, +++ msm_mux_sd_write, +++ msm_mux_tsens_max, +++ msm_mux_tx_swrm, +++ msm_mux_tx_swrm0, +++ msm_mux_tx_swrm1, +++ msm_mux_tx_swrm2, +++ msm_mux_wci20, +++ msm_mux_wci21, +++ msm_mux_wci22, +++ msm_mux_wci23, +++ msm_mux_wsa_swrm, +++ msm_mux__, +++}; +++ +++static const char * const blsp3_uart_groups[] = { +++ "gpio73", "gpio74", "gpio75", "gpio76", +++}; +++ +++static const char * const blsp3_i2c_groups[] = { +++ "gpio73", "gpio74", +++}; +++ +++static const char * const blsp3_spi_groups[] = { +++ "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", "gpio78", "gpio79", +++}; +++ +++static const char * const wci20_groups[] = { +++ "gpio0", "gpio2", +++}; +++ +++static const char * const qpic_pad_groups[] = { +++ "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio9", "gpio10", +++ "gpio11", "gpio17", "gpio15", "gpio12", "gpio13", "gpio14", "gpio5", +++ "gpio6", "gpio7", "gpio8", +++}; +++ +++static const char * const burn0_groups[] = { +++ "gpio0", +++}; +++ +++static const char * const mac12_groups[] = { +++ "gpio1", "gpio11", +++}; +++ +++static const char * const qdss_tracectl_b_groups[] = { +++ "gpio1", +++}; +++ +++static const char * const burn1_groups[] = { +++ "gpio1", +++}; +++ +++static const char * const qdss_traceclk_b_groups[] = { +++ "gpio0", +++}; +++ +++static const char * const qdss_tracedata_b_groups[] = { +++ "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", "gpio8", "gpio9", +++ "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", "gpio15", "gpio16", +++ "gpio17", +++}; +++ +++static const char * const mac01_groups[] = { +++ "gpio3", "gpio4", +++}; +++ +++static const char * const mac21_groups[] = { +++ "gpio5", "gpio6", +++}; +++ +++static const char * const atest_char_groups[] = { +++ "gpio9", +++}; +++ +++static const char * const cxc0_groups[] = { +++ "gpio9", "gpio16", +++}; +++ +++static const char * const mac13_groups[] = { +++ "gpio9", "gpio16", +++}; +++ +++static const char * const dbg_out_groups[] = { +++ "gpio9", +++}; +++ +++static const char * const wci22_groups[] = { +++ "gpio11", "gpio17", +++}; +++ +++static const char * const pwm00_groups[] = { +++ "gpio18", +++}; +++ +++static const char * const atest_char0_groups[] = { +++ "gpio18", +++}; +++ +++static const char * const wci23_groups[] = { +++ "gpio18", "gpio19", +++}; +++ +++static const char * const mac11_groups[] = { +++ "gpio18", "gpio19", +++}; +++ +++static const char * const pwm10_groups[] = { +++ "gpio19", +++}; +++ +++static const char * const atest_char1_groups[] = { +++ "gpio19", +++}; +++ +++ +++static const char * const pwm30_groups[] = { +++ "gpio21", +++}; +++ +++static const char * const atest_char3_groups[] = { +++ "gpio21", +++}; +++ +++static const char * const audio_txmclk_groups[] = { +++ "gpio22", +++}; +++ +++static const char * const audio_txmclkin_groups[] = { +++ "gpio22", +++}; +++ +++static const char * const pwm02_groups[] = { +++ "gpio22", +++}; +++ +++static const char * const tx_swrm0_groups[] = { +++ "gpio22", +++}; +++ +++static const char * const qdss_cti_trig_out_b0_groups[] = { +++ "gpio22", +++}; +++ +++static const char * const audio_txbclk_groups[] = { +++ "gpio23", +++}; +++ +++static const char * const pwm12_groups[] = { +++ "gpio23", +++}; +++ +++static const char * const wsa_swrm_groups[] = { +++ "gpio23", "gpio24", +++}; +++ +++static const char * const tx_swrm1_groups[] = { +++ "gpio23", +++}; +++ +++static const char * const qdss_cti_trig_in_b0_groups[] = { +++ "gpio23", +++}; +++ +++static const char * const audio_txfsync_groups[] = { +++ "gpio24", +++}; +++ +++static const char * const pwm22_groups[] = { +++ "gpio24", +++}; +++ +++static const char * const tx_swrm2_groups[] = { +++ "gpio24", +++}; +++ +++static const char * const qdss_cti_trig_out_b1_groups[] = { +++ "gpio24", +++}; +++ +++static const char * const audio0_groups[] = { +++ "gpio25", "gpio32", +++}; +++ +++static const char * const pwm32_groups[] = { +++ "gpio25", +++}; +++ +++static const char * const tx_swrm_groups[] = { +++ "gpio25", +++}; +++ +++static const char * const qdss_cti_trig_in_b1_groups[] = { +++ "gpio25", +++}; +++ +++static const char * const audio1_groups[] = { +++ "gpio26", "gpio33", +++}; +++ +++static const char * const pwm04_groups[] = { +++ "gpio26", +++}; +++ +++static const char * const audio2_groups[] = { +++ "gpio27", +++}; +++ +++static const char * const pwm14_groups[] = { +++ "gpio27", +++}; +++ +++static const char * const audio3_groups[] = { +++ "gpio28", +++}; +++ +++static const char * const pwm24_groups[] = { +++ "gpio28", +++}; +++ +++static const char * const audio_rxmclk_groups[] = { +++ "gpio29", +++}; +++ +++static const char * const audio_rxmclkin_groups[] = { +++ "gpio29", +++}; +++ +++static const char * const pwm03_groups[] = { +++ "gpio29", +++}; +++ +++static const char * const lpass_pdm_groups[] = { +++ "gpio29", "gpio30", "gpio31", "gpio32", +++}; +++ +++static const char * const lpass_aud_groups[] = { +++ "gpio29", +++}; +++ +++static const char * const qdss_cti_trig_in_a1_groups[] = { +++ "gpio29", +++}; +++ +++static const char * const audio_rxbclk_groups[] = { +++ "gpio30", +++}; +++ +++static const char * const pwm13_groups[] = { +++ "gpio30", +++}; +++ +++static const char * const lpass_aud0_groups[] = { +++ "gpio30", +++}; +++ +++static const char * const rx_swrm_groups[] = { +++ "gpio30", +++}; +++ +++static const char * const qdss_cti_trig_out_a1_groups[] = { +++ "gpio30", +++}; +++ +++static const char * const audio_rxfsync_groups[] = { +++ "gpio31", +++}; +++ +++static const char * const pwm23_groups[] = { +++ "gpio31", +++}; +++ +++static const char * const lpass_aud1_groups[] = { +++ "gpio31", +++}; +++ +++static const char * const rx_swrm0_groups[] = { +++ "gpio31", +++}; +++ +++static const char * const qdss_cti_trig_in_a0_groups[] = { +++ "gpio31", +++}; +++ +++static const char * const pwm33_groups[] = { +++ "gpio32", +++}; +++ +++static const char * const lpass_aud2_groups[] = { +++ "gpio32", +++}; +++ +++static const char * const rx_swrm1_groups[] = { +++ "gpio32", +++}; +++ +++static const char * const qdss_cti_trig_out_a0_groups[] = { +++ "gpio32", +++}; +++ +++static const char * const lpass_pcm_groups[] = { +++ "gpio34", "gpio35", "gpio36", "gpio37", +++}; +++ +++static const char * const mac10_groups[] = { +++ "gpio34", "gpio35", +++}; +++ +++static const char * const mac00_groups[] = { +++ "gpio34", "gpio35", +++}; +++ +++static const char * const mac20_groups[] = { +++ "gpio36", "gpio37", +++}; +++ +++static const char * const blsp0_uart_groups[] = { +++ "gpio38", "gpio39", "gpio40", "gpio41", +++}; +++ +++static const char * const blsp0_i2c_groups[] = { +++ "gpio38", "gpio39", +++}; +++ +++static const char * const blsp0_spi_groups[] = { +++ "gpio38", "gpio39", "gpio40", "gpio41", +++}; +++ +++static const char * const blsp2_uart_groups[] = { +++ "gpio42", "gpio43", "gpio44", "gpio45", +++}; +++ +++static const char * const blsp2_i2c_groups[] = { +++ "gpio42", "gpio43", +++}; +++ +++static const char * const blsp2_spi_groups[] = { +++ "gpio42", "gpio43", "gpio44", "gpio45", +++}; +++ +++static const char * const blsp5_i2c_groups[] = { +++ "gpio46", "gpio47", +++}; +++ +++static const char * const blsp5_uart_groups[] = { +++ "gpio48", "gpio49", +++}; +++ +++static const char * const qdss_traceclk_a_groups[] = { +++ "gpio48", +++}; +++ +++static const char * const qdss_tracectl_a_groups[] = { +++ "gpio49", +++}; +++ +++static const char * const pwm01_groups[] = { +++ "gpio50", +++}; +++ +++static const char * const pta1_1_groups[] = { +++ "gpio51", +++}; +++ +++static const char * const pwm11_groups[] = { +++ "gpio51", +++}; +++ +++static const char * const rx1_groups[] = { +++ "gpio51", +++}; +++ +++static const char * const pta1_2_groups[] = { +++ "gpio52", +++}; +++ +++static const char * const pwm21_groups[] = { +++ "gpio52", +++}; +++ +++static const char * const pta1_0_groups[] = { +++ "gpio53", +++}; +++ +++static const char * const pwm31_groups[] = { +++ "gpio53", +++}; +++ +++static const char * const prng_rosc_groups[] = { +++ "gpio53", +++}; +++ +++static const char * const blsp4_uart_groups[] = { +++ "gpio55", "gpio56", "gpio57", "gpio58", +++}; +++ +++static const char * const blsp4_i2c_groups[] = { +++ "gpio55", "gpio56", +++}; +++ +++static const char * const blsp4_spi_groups[] = { +++ "gpio55", "gpio56", "gpio57", "gpio58", +++}; +++ +++static const char * const pcie0_clk_groups[] = { +++ "gpio59", +++}; +++ +++static const char * const cri_trng0_groups[] = { +++ "gpio59", +++}; +++ +++static const char * const pcie0_rst_groups[] = { +++ "gpio60", +++}; +++ +++static const char * const cri_trng1_groups[] = { +++ "gpio60", +++}; +++ +++static const char * const pcie0_wake_groups[] = { +++ "gpio61", +++}; +++ +++static const char * const cri_trng_groups[] = { +++ "gpio61", +++}; +++ +++static const char * const sd_card_groups[] = { +++ "gpio62", +++}; +++ +++static const char * const sd_write_groups[] = { +++ "gpio63", +++}; +++ +++static const char * const rx0_groups[] = { +++ "gpio63", +++}; +++ +++static const char * const tsens_max_groups[] = { +++ "gpio63", +++}; +++ +++static const char * const mdc_groups[] = { +++ "gpio64", +++}; +++ +++static const char * const qdss_tracedata_a_groups[] = { +++ "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70", +++ "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", +++ "gpio78", "gpio79", +++}; +++ +++static const char * const mdio_groups[] = { +++ "gpio65", +++}; +++ +++static const char * const pta2_0_groups[] = { +++ "gpio66", +++}; +++ +++static const char * const wci21_groups[] = { +++ "gpio66", "gpio68", +++}; +++ +++static const char * const cxc1_groups[] = { +++ "gpio66", "gpio68", +++}; +++ +++static const char * const pta2_1_groups[] = { +++ "gpio67", +++}; +++ +++static const char * const pta2_2_groups[] = { +++ "gpio68", +++}; +++ +++static const char * const blsp1_uart_groups[] = { +++ "gpio69", "gpio70", "gpio71", "gpio72", +++}; +++ +++static const char * const blsp1_i2c_groups[] = { +++ "gpio69", "gpio70", +++}; +++ +++static const char * const blsp1_spi_groups[] = { +++ "gpio69", "gpio70", "gpio71", "gpio72", +++}; +++ +++static const char * const gcc_plltest_groups[] = { +++ "gpio69", "gpio71", +++}; +++ +++static const char * const gcc_tlmm_groups[] = { +++ "gpio70", +++}; +++ +++static const char * const gpio_groups[] = { +++ "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", +++ "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", +++ "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", +++ "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", +++ "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", +++ "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", +++ "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49", +++ "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56", +++ "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63", +++ "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70", +++ "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", +++ "gpio78", "gpio79", +++}; +++ +++static const struct msm_function ipq6018_functions[] = { +++ FUNCTION(atest_char), +++ FUNCTION(atest_char0), +++ FUNCTION(atest_char1), +++ +++ FUNCTION(atest_char3), +++ FUNCTION(audio0), +++ FUNCTION(audio1), +++ FUNCTION(audio2), +++ FUNCTION(audio3), +++ FUNCTION(audio_rxbclk), +++ FUNCTION(audio_rxfsync), +++ FUNCTION(audio_rxmclk), +++ FUNCTION(audio_rxmclkin), +++ FUNCTION(audio_txbclk), +++ FUNCTION(audio_txfsync), +++ FUNCTION(audio_txmclk), +++ FUNCTION(audio_txmclkin), +++ FUNCTION(blsp0_i2c), +++ FUNCTION(blsp0_spi), +++ FUNCTION(blsp0_uart), +++ FUNCTION(blsp1_i2c), +++ FUNCTION(blsp1_spi), +++ FUNCTION(blsp1_uart), +++ FUNCTION(blsp2_i2c), +++ FUNCTION(blsp2_spi), +++ FUNCTION(blsp2_uart), +++ FUNCTION(blsp3_i2c), +++ FUNCTION(blsp3_spi), +++ FUNCTION(blsp3_uart), +++ FUNCTION(blsp4_i2c), +++ FUNCTION(blsp4_spi), +++ FUNCTION(blsp4_uart), +++ FUNCTION(blsp5_i2c), +++ FUNCTION(blsp5_uart), +++ FUNCTION(burn0), +++ FUNCTION(burn1), +++ FUNCTION(cri_trng), +++ FUNCTION(cri_trng0), +++ FUNCTION(cri_trng1), +++ FUNCTION(cxc0), +++ FUNCTION(cxc1), +++ FUNCTION(dbg_out), +++ FUNCTION(gcc_plltest), +++ FUNCTION(gcc_tlmm), +++ FUNCTION(gpio), +++ FUNCTION(lpass_aud), +++ FUNCTION(lpass_aud0), +++ FUNCTION(lpass_aud1), +++ FUNCTION(lpass_aud2), +++ FUNCTION(lpass_pcm), +++ FUNCTION(lpass_pdm), +++ FUNCTION(mac00), +++ FUNCTION(mac01), +++ FUNCTION(mac10), +++ FUNCTION(mac11), +++ FUNCTION(mac12), +++ FUNCTION(mac13), +++ FUNCTION(mac20), +++ FUNCTION(mac21), +++ FUNCTION(mdc), +++ FUNCTION(mdio), +++ FUNCTION(pcie0_clk), +++ FUNCTION(pcie0_rst), +++ FUNCTION(pcie0_wake), +++ FUNCTION(prng_rosc), +++ FUNCTION(pta1_0), +++ FUNCTION(pta1_1), +++ FUNCTION(pta1_2), +++ FUNCTION(pta2_0), +++ FUNCTION(pta2_1), +++ FUNCTION(pta2_2), +++ FUNCTION(pwm00), +++ FUNCTION(pwm01), +++ FUNCTION(pwm02), +++ FUNCTION(pwm03), +++ FUNCTION(pwm04), +++ FUNCTION(pwm10), +++ FUNCTION(pwm11), +++ FUNCTION(pwm12), +++ FUNCTION(pwm13), +++ FUNCTION(pwm14), +++ +++ FUNCTION(pwm21), +++ FUNCTION(pwm22), +++ FUNCTION(pwm23), +++ FUNCTION(pwm24), +++ FUNCTION(pwm30), +++ FUNCTION(pwm31), +++ FUNCTION(pwm32), +++ FUNCTION(pwm33), +++ FUNCTION(qdss_cti_trig_in_a0), +++ FUNCTION(qdss_cti_trig_in_a1), +++ FUNCTION(qdss_cti_trig_out_a0), +++ FUNCTION(qdss_cti_trig_out_a1), +++ FUNCTION(qdss_cti_trig_in_b0), +++ FUNCTION(qdss_cti_trig_in_b1), +++ FUNCTION(qdss_cti_trig_out_b0), +++ FUNCTION(qdss_cti_trig_out_b1), +++ FUNCTION(qdss_traceclk_a), +++ FUNCTION(qdss_tracectl_a), +++ FUNCTION(qdss_tracedata_a), +++ FUNCTION(qdss_traceclk_b), +++ FUNCTION(qdss_tracectl_b), +++ FUNCTION(qdss_tracedata_b), +++ FUNCTION(qpic_pad), +++ FUNCTION(rx0), +++ FUNCTION(rx1), +++ FUNCTION(rx_swrm), +++ FUNCTION(rx_swrm0), +++ FUNCTION(rx_swrm1), +++ FUNCTION(sd_card), +++ FUNCTION(sd_write), +++ FUNCTION(tsens_max), +++ FUNCTION(tx_swrm), +++ FUNCTION(tx_swrm0), +++ FUNCTION(tx_swrm1), +++ FUNCTION(tx_swrm2), +++ FUNCTION(wci20), +++ FUNCTION(wci21), +++ FUNCTION(wci22), +++ FUNCTION(wci23), +++ FUNCTION(wsa_swrm), +++}; +++ +++static const struct msm_pingroup ipq6018_groups[] = { +++ PINGROUP(0, qpic_pad, wci20, qdss_traceclk_b, _, burn0, _, _, _, _), +++ PINGROUP(1, qpic_pad, mac12, qdss_tracectl_b, _, burn1, _, _, _, _), +++ PINGROUP(2, qpic_pad, wci20, qdss_tracedata_b, _, _, _, _, _, _), +++ PINGROUP(3, qpic_pad, mac01, qdss_tracedata_b, _, _, _, _, _, _), +++ PINGROUP(4, qpic_pad, mac01, qdss_tracedata_b, _, _, _, _, _, _), +++ PINGROUP(5, qpic_pad, mac21, qdss_tracedata_b, _, _, _, _, _, _), +++ PINGROUP(6, qpic_pad, mac21, qdss_tracedata_b, _, _, _, _, _, _), +++ PINGROUP(7, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), +++ PINGROUP(8, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), +++ PINGROUP(9, qpic_pad, atest_char, cxc0, mac13, dbg_out, qdss_tracedata_b, _, _, _), +++ PINGROUP(10, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), +++ PINGROUP(11, qpic_pad, wci22, mac12, qdss_tracedata_b, _, _, _, _, _), +++ PINGROUP(12, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), +++ PINGROUP(13, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), +++ PINGROUP(14, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), +++ PINGROUP(15, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), +++ PINGROUP(16, qpic_pad, cxc0, mac13, qdss_tracedata_b, _, _, _, _, _), +++ PINGROUP(17, qpic_pad, qdss_tracedata_b, wci22, _, _, _, _, _, _), +++ PINGROUP(18, pwm00, atest_char0, wci23, mac11, _, _, _, _, _), +++ PINGROUP(19, pwm10, atest_char1, wci23, mac11, _, _, _, _, _), +++ +++ PINGROUP(21, pwm30, atest_char3, _, _, _, _, _, _, _), +++ PINGROUP(22, audio_txmclk, audio_txmclkin, pwm02, tx_swrm0, _, qdss_cti_trig_out_b0, _, _, _), +++ PINGROUP(23, audio_txbclk, pwm12, wsa_swrm, tx_swrm1, _, qdss_cti_trig_in_b0, _, _, _), +++ PINGROUP(24, audio_txfsync, pwm22, wsa_swrm, tx_swrm2, _, qdss_cti_trig_out_b1, _, _, _), +++ PINGROUP(25, audio0, pwm32, tx_swrm, _, qdss_cti_trig_in_b1, _, _, _, _), +++ PINGROUP(26, audio1, pwm04, _, _, _, _, _, _, _), +++ PINGROUP(27, audio2, pwm14, _, _, _, _, _, _, _), +++ PINGROUP(28, audio3, pwm24, _, _, _, _, _, _, _), +++ PINGROUP(29, audio_rxmclk, audio_rxmclkin, pwm03, lpass_pdm, lpass_aud, qdss_cti_trig_in_a1, _, _, _), +++ PINGROUP(30, audio_rxbclk, pwm13, lpass_pdm, lpass_aud0, rx_swrm, _, qdss_cti_trig_out_a1, _, _), +++ PINGROUP(31, audio_rxfsync, pwm23, lpass_pdm, lpass_aud1, rx_swrm0, _, qdss_cti_trig_in_a0, _, _), +++ PINGROUP(32, audio0, pwm33, lpass_pdm, lpass_aud2, rx_swrm1, _, qdss_cti_trig_out_a0, _, _), +++ PINGROUP(33, audio1, _, _, _, _, _, _, _, _), +++ PINGROUP(34, lpass_pcm, mac10, mac00, _, _, _, _, _, _), +++ PINGROUP(35, lpass_pcm, mac10, mac00, _, _, _, _, _, _), +++ PINGROUP(36, lpass_pcm, mac20, _, _, _, _, _, _, _), +++ PINGROUP(37, lpass_pcm, mac20, _, _, _, _, _, _, _), +++ PINGROUP(38, blsp0_uart, blsp0_i2c, blsp0_spi, _, _, _, _, _, _), +++ PINGROUP(39, blsp0_uart, blsp0_i2c, blsp0_spi, _, _, _, _, _, _), +++ PINGROUP(40, blsp0_uart, blsp0_spi, _, _, _, _, _, _, _), +++ PINGROUP(41, blsp0_uart, blsp0_spi, _, _, _, _, _, _, _), +++ PINGROUP(42, blsp2_uart, blsp2_i2c, blsp2_spi, _, _, _, _, _, _), +++ PINGROUP(43, blsp2_uart, blsp2_i2c, blsp2_spi, _, _, _, _, _, _), +++ PINGROUP(44, blsp2_uart, blsp2_spi, _, _, _, _, _, _, _), +++ PINGROUP(45, blsp2_uart, blsp2_spi, _, _, _, _, _, _, _), +++ PINGROUP(46, blsp5_i2c, _, _, _, _, _, _, _, _), +++ PINGROUP(47, blsp5_i2c, _, _, _, _, _, _, _, _), +++ PINGROUP(48, blsp5_uart, _, qdss_traceclk_a, _, _, _, _, _, _), +++ PINGROUP(49, blsp5_uart, _, qdss_tracectl_a, _, _, _, _, _, _), +++ PINGROUP(50, pwm01, _, _, _, _, _, _, _, _), +++ PINGROUP(51, pta1_1, pwm11, _, rx1, _, _, _, _, _), +++ PINGROUP(52, pta1_2, pwm21, _, _, _, _, _, _, _), +++ PINGROUP(53, pta1_0, pwm31, prng_rosc, _, _, _, _, _, _), +++ PINGROUP(54, _, _, _, _, _, _, _, _, _), +++ PINGROUP(55, blsp4_uart, blsp4_i2c, blsp4_spi, _, _, _, _, _, _), +++ PINGROUP(56, blsp4_uart, blsp4_i2c, blsp4_spi, _, _, _, _, _, _), +++ PINGROUP(57, blsp4_uart, blsp4_spi, _, _, _, _, _, _, _), +++ PINGROUP(58, blsp4_uart, blsp4_spi, _, _, _, _, _, _, _), +++ PINGROUP(59, pcie0_clk, _, _, cri_trng0, _, _, _, _, _), +++ PINGROUP(60, pcie0_rst, _, _, cri_trng1, _, _, _, _, _), +++ PINGROUP(61, pcie0_wake, _, _, cri_trng, _, _, _, _, _), +++ PINGROUP(62, sd_card, _, _, _, _, _, _, _, _), +++ PINGROUP(63, sd_write, rx0, _, tsens_max, _, _, _, _, _), +++ PINGROUP(64, mdc, _, qdss_tracedata_a, _, _, _, _, _, _), +++ PINGROUP(65, mdio, _, qdss_tracedata_a, _, _, _, _, _, _), +++ PINGROUP(66, pta2_0, wci21, cxc1, qdss_tracedata_a, _, _, _, _, _), +++ PINGROUP(67, pta2_1, qdss_tracedata_a, _, _, _, _, _, _, _), +++ PINGROUP(68, pta2_2, wci21, cxc1, qdss_tracedata_a, _, _, _, _, _), +++ PINGROUP(69, blsp1_uart, blsp1_i2c, blsp1_spi, gcc_plltest, qdss_tracedata_a, _, _, _, _), +++ PINGROUP(70, blsp1_uart, blsp1_i2c, blsp1_spi, gcc_tlmm, qdss_tracedata_a, _, _, _, _), +++ PINGROUP(71, blsp1_uart, blsp1_spi, gcc_plltest, qdss_tracedata_a, _, _, _, _, _), +++ PINGROUP(72, blsp1_uart, blsp1_spi, qdss_tracedata_a, _, _, _, _, _, _), +++ PINGROUP(73, blsp3_uart, blsp3_i2c, blsp3_spi, _, qdss_tracedata_a, _, _, _, _), +++ PINGROUP(74, blsp3_uart, blsp3_i2c, blsp3_spi, _, qdss_tracedata_a, _, _, _, _), +++ PINGROUP(75, blsp3_uart, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _), +++ PINGROUP(76, blsp3_uart, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _), +++ PINGROUP(77, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _, _), +++ PINGROUP(78, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _, _), +++ PINGROUP(79, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _, _), +++}; +++ +++static const struct msm_pinctrl_soc_data ipq6018_pinctrl = { +++ .pins = ipq6018_pins, +++ .npins = ARRAY_SIZE(ipq6018_pins), +++ .functions = ipq6018_functions, +++ .nfunctions = ARRAY_SIZE(ipq6018_functions), +++ .groups = ipq6018_groups, +++ .ngroups = ARRAY_SIZE(ipq6018_groups), +++ .ngpios = 79, +++}; +++ +++static int ipq6018_pinctrl_probe(struct platform_device *pdev) +++{ +++ return msm_pinctrl_probe(pdev, &ipq6018_pinctrl); +++} +++ +++static const struct of_device_id ipq6018_pinctrl_of_match[] = { +++ { .compatible = "qcom,ipq6000-pinctrl", }, +++ { }, +++}; +++ +++static struct platform_driver ipq6018_pinctrl_driver = { +++ .driver = { +++ .name = "ipq6000-pinctrl", +++ .of_match_table = ipq6018_pinctrl_of_match, +++ }, +++ .probe = ipq6018_pinctrl_probe, +++ .remove = msm_pinctrl_remove, +++}; +++ +++static int __init ipq6018_pinctrl_init(void) +++{ +++ return platform_driver_register(&ipq6018_pinctrl_driver); +++} +++arch_initcall(ipq6018_pinctrl_init); +++ +++static void __exit ipq6018_pinctrl_exit(void) +++{ +++ platform_driver_unregister(&ipq6018_pinctrl_driver); +++} +++module_exit(ipq6018_pinctrl_exit); +++ +++MODULE_DESCRIPTION("QTI ipq6000 pinctrl driver"); +++MODULE_LICENSE("GPL v2"); +++MODULE_DEVICE_TABLE(of, ipq6018_pinctrl_of_match); ++-- ++2.25.1 ++ diff --git a/devices/qualcommax_ipq807x/.config b/devices/qualcommax_ipq807x/.config new file mode 100644 index 000000000000..d2db5ceffdb3 --- /dev/null +++ b/devices/qualcommax_ipq807x/.config @@ -0,0 +1,15 @@ + +CONFIG_TARGET_qualcommax=y +CONFIG_TARGET_qualcommax_ipq807x=y +CONFIG_TARGET_MULTI_PROFILE=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_buffalo_wxr-5950ax12=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_cmcc_rm2-6=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_qnap_301w=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_redmi_ax6=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_xiaomi_ax3600=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_xiaomi_ax9000=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_zte_mf269=y +CONFIG_TARGET_DEVICE_qualcommax_ipq807x_DEVICE_zyxel_nbg7815=y + +CONFIG_PACKAGE_luci-ssl=y uhttpd服务 + diff --git a/devices/qualcommax_ipq807x/diy.sh b/devices/qualcommax_ipq807x/diy.sh new file mode 100644 index 000000000000..9df0f33b042a --- /dev/null +++ b/devices/qualcommax_ipq807x/diy.sh @@ -0,0 +1,10 @@ +#!/bin/bash +shopt -s extglob + +SHELL_FOLDER=$(dirname $(readlink -f "$0")) + +git_clone_path master https://github.com/coolsnowwolf/lede target/linux/generic/hack-6.1 + +rm -rf package/feeds/kiddin9/quectel_Gobinet devices/common/patches/kernel_version.patch devices/common/patches/rootfstargz.patch target/linux/generic/hack-6.1/{410-block-fit-partition-parser.patch,724-net-phy-aquantia*,720-net-phy-add-aqr-phys.patch} + +curl -sfL https://raw.githubusercontent.com/coolsnowwolf/lede/master/target/linux/generic/pending-6.1/613-netfilter_optional_tcp_window_check.patch -o target/linux/generic/pending-6.1/613-netfilter_optional_tcp_window_check.patch diff --git a/devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts b/devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts similarity index 94% rename from devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts rename to devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts index de7e6861660e..6ce59689c28e 100644 --- a/devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts +++ b/devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts @@ -86,13 +86,9 @@ &qpic_nand { /delete-node/ partitions; - /delete-node/ nand@0; nand@0 { - reg = <0>; - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - nand-bus-width = <8>; + /delete-node/ partitions; partitions { compatible = "qcom,smem-part"; diff --git a/devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts b/devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts similarity index 92% rename from devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts rename to devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts index 27f99d9c681d..6ae96b7e4219 100644 --- a/devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts +++ b/devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts @@ -59,13 +59,9 @@ &qpic_nand { /delete-node/ partitions; - /delete-node/ nand@0; nand@0 { - reg = <0>; - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - nand-bus-width = <8>; + /delete-node/ partitions; partitions { compatible = "qcom,smem-part"; diff --git a/devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts b/devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts similarity index 98% rename from devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts rename to devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts index 9fdcffdb8cdd..608e2fe98aef 100644 --- a/devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts +++ b/devices/qualcommax_ipq807x/diy/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts @@ -527,13 +527,9 @@ &qpic_nand { /delete-node/ partitions; - /delete-node/ nand@0; nand@0 { - reg = <0>; - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - nand-bus-width = <8>; + /delete-node/ partitions; partitions { compatible = "qcom,smem-part"; diff --git a/devices/ipq807x_generic/patches/04-stock.patch b/devices/qualcommax_ipq807x/patches/04-stock.patch similarity index 60% rename from devices/ipq807x_generic/patches/04-stock.patch rename to devices/qualcommax_ipq807x/patches/04-stock.patch index bd75174a0446..4ca081d8189a 100644 --- a/devices/ipq807x_generic/patches/04-stock.patch +++ b/devices/qualcommax_ipq807x/patches/04-stock.patch @@ -1,26 +1,25 @@ ---- a/target/linux/ipq807x/image/generic.mk -+++ b/target/linux/ipq807x/image/generic.mk -@@ -134,12 +134,7 @@ define Device/xiaomi_ax3600 +--- a/target/linux/qualcommax/image/ipq807x.mk ++++ b/target/linux/qualcommax/image/ipq807x.mk +@@ -256,12 +256,7 @@ define Device/xiaomi_ax3600 PAGESIZE := 2048 DEVICE_DTS_CONFIG := config@ac04 SOC := ipq8071 - KERNEL_SIZE := 36608k -- DEVICE_PACKAGES := ipq-wifi-xiaomi_ax3600 kmod-ath10k-ct-smallbuffers ath10k-firmware-qca9887-ct + DEVICE_PACKAGES := ipq-wifi-xiaomi_ax3600 kmod-ath10k-ct-smallbuffers ath10k-firmware-qca9887-ct -ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) - ARTIFACTS := initramfs-factory.ubi - ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-uImage.itb | ubinize-kernel -endif -+ DEVICE_PACKAGES := ipq-wifi-xiaomi_ax3600 kmod-ath10k-ct-smallbuffers ath10k-firmware-qca9887-ct -kmod-usb3 -kmod-usb-dwc3 -kmod-usb-dwc3-qcom endef TARGET_DEVICES += xiaomi_ax3600 -@@ -152,13 +147,8 @@ define Device/xiaomi_ax9000 +@@ -274,13 +269,8 @@ define Device/xiaomi_ax9000 PAGESIZE := 2048 DEVICE_DTS_CONFIG := config@hk14 SOC := ipq8072 - KERNEL_SIZE := 57344k DEVICE_PACKAGES := ipq-wifi-xiaomi_ax9000 kmod-ath11k-pci ath11k-firmware-qcn9074 \ - kmod-ath10k-ct ath10k-firmware-qca9887-ct + kmod-ath10k-ct ath10k-firmware-qca9887-ct -ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) - ARTIFACTS := initramfs-factory.ubi - ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-uImage.itb | ubinize-kernel @@ -29,8 +28,8 @@ TARGET_DEVICES += xiaomi_ax9000 ---- a/target/linux/ipq807x/base-files/etc/init.d/bootcount -+++ b/target/linux/ipq807x/base-files/etc/init.d/bootcount +--- a/target/linux/qualcommax/ipq807x/base-files/etc/init.d/bootcount ++++ b/target/linux/qualcommax/ipq807x/base-files/etc/init.d/bootcount @@ -9,5 +9,13 @@ boot() { # Unset changed flag after sysupgrade complete fw_setenv changed @@ -47,8 +46,8 @@ } ---- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh -+++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh +--- a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh ++++ b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh @@ -83,20 +83,29 @@ platform_do_upgrade() { redmi,ax6|\ xiaomi,ax3600|\ @@ -92,38 +91,3 @@ ;; *) ---- /dev/null -+++ b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata -@@ -0,0 +1,20 @@ -+#!/bin/sh -+ -+[ -e /lib/firmware/$FIRMWARE ] && exit 0 -+ -+. /lib/functions/caldata.sh -+ -+board=$(board_name) -+ -+case "$FIRMWARE" in -+"ath10k/cal-pci-0000:01:00.0.bin") -+ case "$board" in -+ xiaomi,ax3600) -+ caldata_extract "0:art" 0x33000 0x844 -+ ;; -+ esac -+ ;; -+*) -+ exit 1 -+ ;; -+esac - ---- a/target/linux/ipq807x/patches-5.15/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch -+++ b/target/linux/ipq807x/patches-5.15/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch -@@ -23,7 +23,7 @@ Signed-off-by: Robert Marko - #size-cells = <2>; - ranges; - --+ nss@40000000 { -++ nss_region: nss@40000000 { - + no-map; - + reg = <0x0 0x40000000 0x0 0x01000000>; - + }; diff --git a/devices/qualcommax_ipq807x/patches/kernel_version.patch b/devices/qualcommax_ipq807x/patches/kernel_version.patch new file mode 100644 index 000000000000..b44b86778e19 --- /dev/null +++ b/devices/qualcommax_ipq807x/patches/kernel_version.patch @@ -0,0 +1,30 @@ +--- a/scripts/json_overview_image_info.py ++++ b/scripts/json_overview_image_info.py +@@ -47,7 +47,7 @@ def get_initial_output(image_info): + + + if output: +- default_packages, output["arch_packages"] = run( ++ default_packages, output["arch_packages"], output["kernel_version"] = run( + [ + "make", + "--no-print-directory", +@@ -55,6 +55,7 @@ def get_initial_output(image_info): + "target/linux/", + "val.DEFAULT_PACKAGES", + "val.ARCH_PACKAGES", ++ "val.LINUX_VERSION", + "V=s", + ], + stdout=PIPE, + +--- a/scripts/json_add_image_info.py ++++ b/scripts/json_add_image_info.py +@@ -55,6 +55,7 @@ def get_titles(): + "profiles": { + device_id: { + "image_prefix": getenv("DEVICE_IMG_PREFIX"), ++ "image_initramfs": getenv("KERNEL_INITRAMFS_IMAGE"), + "images": [ + { + "type": getenv("FILE_TYPE"), diff --git a/devices/qualcommax_ipq807x/settings.ini b/devices/qualcommax_ipq807x/settings.ini new file mode 100644 index 000000000000..62141d1ba61b --- /dev/null +++ b/devices/qualcommax_ipq807x/settings.ini @@ -0,0 +1,2 @@ +REPO_URL="https://github.com/openwrt/openwrt" +REPO_BRANCH="main" diff --git a/devices/ramips_mt7621/patches/02-cr660x.patch b/devices/ramips_mt7621/patches/02-cr660x.patch index b4f48cfc31ba..2fc70c75a3c4 100644 --- a/devices/ramips_mt7621/patches/02-cr660x.patch +++ b/devices/ramips_mt7621/patches/02-cr660x.patch @@ -30,7 +30,7 @@ + IMAGE_SIZE := 15808k + DEVICE_VENDOR := JDCloud + DEVICE_MODEL := Luban 鲁班 -+ DEVICE_PACKAGES += kmod-mt7915e uboot-envtools kmod-mmc kmod-sdhci kmod-sdhci-mt7620 kmod-fs-ext4 wpad-mini -wpad-basic-mbedtls -coremark -htop -bash -openssh-sftp-server ++ DEVICE_PACKAGES += kmod-mt7915e kmod-mt7915-firmware uboot-envtools kmod-mmc kmod-sdhci kmod-sdhci-mt7620 kmod-fs-ext4 wpad-mini -wpad-basic-mbedtls -coremark -htop -bash -openssh-sftp-server +endef +TARGET_DEVICES += jdcloud_luban +