From d0ea8ffa542d863d81230f46bc9832a07b4554f8 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Tue, 26 Apr 2022 23:32:21 +0300 Subject: [PATCH 1/3] qcom: add firmware files for Adreno a220 Add firmware files for Adreno a220 (codenamed leia), used in MSM8x60/APQ8060 Qualcomm processors. Signed-off-by: Dmitry Baryshkov --- WHENCE | 2 ++ qcom/leia_pfp_470.fw | Bin 0 -> 1156 bytes qcom/leia_pm4_470.fw | Bin 0 -> 9220 bytes 3 files changed, 2 insertions(+) create mode 100644 qcom/leia_pfp_470.fw create mode 100644 qcom/leia_pm4_470.fw diff --git a/WHENCE b/WHENCE index 56f3cea4..d7d80b64 100644 --- a/WHENCE +++ b/WHENCE @@ -5779,6 +5779,8 @@ File: qcom/a650_sqe.fw File: qcom/sm8250/a650_zap.mbn File: qcom/a660_gmu.bin File: qcom/a660_sqe.fw +File: qcom/leia_pfp_470.fw +File: qcom/leia_pm4_470.fw Licence: Redistributable. See LICENSE.qcom and qcom/NOTICE.txt for details diff --git a/qcom/leia_pfp_470.fw b/qcom/leia_pfp_470.fw new file mode 100644 index 0000000000000000000000000000000000000000..cb2bdd3890162844a24b7f35c135f08f1194cc15 GIT binary patch literal 1156 zcmaizOK4M35Qe|pnKL zVx)=S1-P5_g?qSc1)km_r;=+>nBVbC(WZTp$B-z}Ae>|onu_>8#%M42w6l)u&0$>8 zkjE8nydB#AH&$`3Cktb$S}fLbCY}ruQ{MJam-!)a#}$*XxNKO1)>do$#UVPUN-VF; z(A%^|y*E!w{shtNGn(%CM7pBnB4uvL9BIEaIxdcN@jWNb-z&kykRMuy|v~0(h$S6-v=3E(M`rR1*%s5U#`owu# zc%98mYvX!o_1RqICw2BAJ zu#B+7d$63aBYQBrA83jmm6l5I=4sX&$oj-&zx1DQ603Scs~qt1^azWfIsfI{-qV-i zapHwMOY*Bf$4F>xF*|uG0p`|V4B0%O$J-2Q|5N`~*o&#q2iN}j^GT{q7^xKF=&Jwl4pyyOf|bvny=%3S0F!@T7(?-`|_h|gT3#C2YA MgOA)KE(L$H-=y&gWdHyG literal 0 HcmV?d00001 diff --git a/qcom/leia_pm4_470.fw b/qcom/leia_pm4_470.fw new file mode 100644 index 0000000000000000000000000000000000000000..cd0a3ffe9e5f31dfe1c7d995fe85216f24d448b0 GIT binary patch literal 9220 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 Date: Tue, 26 Apr 2022 23:32:21 +0300 Subject: [PATCH 2/3] qcom: add firmware files for Adreno a330 Add firmware files for Adreno a330, used in MSM8x74/APQ8074 Qualcomm processors. Signed-off-by: Dmitry Baryshkov --- WHENCE | 2 ++ qcom/a330_pfp.fw | Bin 0 -> 2212 bytes qcom/a330_pm4.fw | Bin 0 -> 9220 bytes 3 files changed, 2 insertions(+) create mode 100644 qcom/a330_pfp.fw create mode 100644 qcom/a330_pm4.fw diff --git a/WHENCE b/WHENCE index d7d80b64..e4cfa35d 100644 --- a/WHENCE +++ b/WHENCE @@ -5764,6 +5764,8 @@ File: qcom/a300_pfp.fw Link: a300_pfp.fw -> qcom/a300_pfp.fw File: qcom/a300_pm4.fw Link: a300_pm4.fw -> qcom/a300_pm4.fw +File: qcom/a330_pfp.fw +File: qcom/a330_pm4.fw File: qcom/a530_pfp.fw File: qcom/a530_pm4.fw File: qcom/a530v3_gpmu.fw2 diff --git a/qcom/a330_pfp.fw b/qcom/a330_pfp.fw new file mode 100644 index 0000000000000000000000000000000000000000..622f6c07a49ca2b2c437c4364a20db79e8e402a0 GIT binary patch literal 2212 zcmeH|%WD)t5XOHqvq@In;06~|kYvrv#TcLK8+9Rqfac^x#GGVnFbqIT*j{O=4J7@&{y~rh2NYtG@cWs|WPNhV8BA zv3sZ4L1!WZYf8NGiV!bBQj#hW_7vy{U(-ayCdL`jd}ml0lXy!Q6!;-q2Y-B~%_sNT z`I`@fE{|tgxr1EfYyp$(PrZa(e?@c4`8ofLFvcZ`VOqG!uQuUI4m0{C@8Wh2L^PTx zZ(aDn#hf;u)JSDs`D2Q2u>$!mHkM%vLW!-hwTh9J-b_SOTv&xCosbUu+_&?WulY4g z8&9^*^p>prjO*DtwkGwRd*tlv!-#Y)qJe&9>WZ}ZWx6E(sVpm=<>_8sz|W224@6v+ zy~b+P*kWB#e8XXRdNg;Z=Yh-9Bn)#L*E2yq6)aBAV%Q;m9ygcaV?>Rl(A5uLH{zvh zUA&p8_IbQR{=_^N8{}*G%x_zKgqfZ`rx)g&tJ89L<#uYhr!_id3-Vd6OO{j5g`xXS zSLe31X9KNOjsL>na)m{1Kh3kvyUC_7;-K~=)tjX$*~Y7K9xrNDZK_AOqp|CF>E-kM zEE7M=B@6d!g}xJ2wiY71Ox&HXfH4=#_Bsg4v}$hQS#FW7t;*IVTYHu5vTR$bY=+Ue zw3^qw%;NPXgry%}`loTBS{uq+X^8Kvs=36sp+43P+*Q5pOliE<#<7fQop3!vY8WpU zQ7bX7eD$|aiIw49I%MkE5dZ)H literal 0 HcmV?d00001 diff --git a/qcom/a330_pm4.fw b/qcom/a330_pm4.fw new file mode 100644 index 0000000000000000000000000000000000000000..433dd046a47ef21ec68901ac2c0ffd27bde37996 GIT binary patch literal 9220 zcmeHMZ-`u16+iQKc6KtIt}~lSx@_0x&YQ_PJG)KNf7=?H>9}sR%un# zs0a~}tVUxBiipKeZ8bzo5sHZTK?VCv^n+4Rq$>TO9hHFE577@&1nu+u?w|M0yZdGv zF#XoMJNKRUd*_^c?z!ild*6LTL`UfkqOyva)TKt>)Yl=`&0|W_6fixov_>K-^EF9` z+G{<-gL**EXE#ws(&*0YW=Ka^pDFS34kn;S)q1f7>2t>y9l4Fpyq?!NJ!_es@%F^? zt+a*F!c8eXqz$&M#P`h&m7-KP{`pUvXn8HOZDJ5*JQUC0%y*F8f0%ummeInVls5X! zt#G0Z81rtN zue8HxNbffU*O8_;Z+zCpDu->FqmnZ`UJDOL-$CGU*-=&c%GIWtHnGZdq-Iijj|xrR znB@n(kONAWGKFg&pl@3}jh3=Fk9$7OYae${W~2C%Oj{dbV?&u1rJmVLPuJ6P+Uc2( zVxE@U>zU8=1TI&z%+I@7Ozzm*bsFh!gGW-DtUn`0ihKyhprLRvrDft--^>~sIk!1K zq`TpKT_StMC7++a=$=%C9-CK*rYM{-HdjM`E-NQV6N8NQ{RXBP{)II&cGH?RI+15O z)0s~`RyX+>vE7+=V@>qls>$s?UL~IQ8BP?p5CR9ZPSmEnS&ZYkYh1Gs=l@{UavdR? zuZ-5w@3+|o$jDOAb5jd|+xS(8?_{5E-tt5FV>4-g5Wnk^(0qd;wjU?BM z$LS5JjI?yoKH+D~RpMV~dV`)#B}U7?PiZk{?L3t+rsL4Y65_|3gY^+(h#wD6<0o8E z{FDpgrxnqknbdRE;fiBsw;5~p+ga(Kiv#B$`n<&5It#U2bdX7#F~?Ql;vXz=3+kA~hVhzF?T4sJuA!$y)+Si@QV*bm@@EG%kbeZ{4eyvRYfo#Y2 z3y=J~af9W5igNqaa@XRpVTtLWK(S*YSA1syf{H>J?(C#;Q5XV_e!GZ5g%hv$oMO5o2!M**-pN2b?SkSuq!;PDGT( z@GH#)STsM3i}nmtCzQ2UUv5Hut?}$)5;C3-Yb&Y!n|N%>HQ6cqtCzs*VGo917x?Wc z+jb)(MLBKyoR5!rzb@QURe9a-MYgFeIr;6}Zjwx3pB!Jn1mtq6yg?5zj(N>{i5M7i z!s0@f6K-uPz`DH8^6MLEgFR1x{&2zM3Z3V}wq{Lu&#n z`6%3-$?o-JPeV|bA-R4v>dIoY8O~+03whc4N3CqBk>$FHxvcLMtH&R&(je8J?opx2 z`3-rdT`_uq_rg24HpTDzL#h3dW-xkAZRv}_Kat_~-DC^DeMc~O*6v^OIk|oo47v!v zW$!!N`t2)LR{CvH`YqE#lX;(4zQnQ+f5R=tKYCv=b1GeHrlcO*m+kyNX~#nPd^`Rr z%a18gG+w~B8?P+hBIdM3&V{aGG*I{UA0KK-^3xTH> zb^+-)qhowR#(xd!2xI}2s}TQYAu{O@ds#LJ>B-ha;hf}gYO6OQNVPoDmx zlQnIR=AJb?QomYSKd&DTVZ$+{X|6`@>{Q3k`Voy6?f;zsU-i3;xsUXPo1^BkO6mQF zv#}r%&)$Bi{s#z}vPGwXhqQ`G0a0WF8k+y95n3H4{dB(dBHz%nN)!=-N2MJBT|U zX0qYVn%K6hqQA0_)U;=7gNr;~HnySJ*{~t-+XQ|))2`j2;6c`PvQj5Lyf|Fyyi4FK zV|3mvcu2H$kHD(}f1|(;3Y~8fbXoAgEWZ;a%xo zH@-BCZT``?eypo_Ir|Q^sS$|C?>_aO(m1N6T#g#G*1%k%OYR&GbM3C%L$Ky>oN4#% zHzUkJXD4!Xzi;^EoQ3#_MKc#LAN%WFKwKi)chKNTa^{772hSUr=%>zxBzYzgI5iI_ z&4ad{T=9|E>Ua=ez`Qc0{8w}@POf0OYVF!KWF9H7bn+DkKDIlWHDZU zV!ye5p)I+`ZVVKlvEQonL#rQsZ&ys-lYK{yYFA7y!aGj8hS_IIbf>Wm{BGZFp2V{s z%zR?G`QrMr2|Y$9&LP|O-G>zKE%W={@~5DOht|U@8s|sO51<~|YsMXPXwR9A&8A;E z-`aL%f4B5;I_u+yZO(yCmnXIUyq)^nqVxmkuy#LvhV9p9t@gXErtR7UJ@QN}=oX*B z`tM&_j;o0={O9s}!ut85u@Lc@JEIflazP_|zmxmqvG$DNf6}w(QO_P;vkK1@v9plh zgNQbD*ERo1rD^!t02=bTgpvhccdikXnMLFX&A60;BKNiq6v$S{HP- zXpwF%;J-@umEL7H&%e_4I2*3=H^S#Ib?JAd-==yV3Qh%CTLIlxTGc!as!@agP!7>a r<{xVMMWzk~Z_`T0_scwifaLi?@YP_W^qAHU{0#qmo`An9R4x8LCknMa literal 0 HcmV?d00001 From dfa3c4c30996376dbc3adb530c0505b2efad583b Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Tue, 26 Apr 2022 23:32:21 +0300 Subject: [PATCH 3/3] qcom: add firmware files for Adreno a420 & related generations Add firmware files for Adreno a405/a420/a430, used in several generations of Qualcomm Snapdragon processors starting from APQ8084 up to MSM8994 (including MSM8939 and several other ones). Signed-off-by: Dmitry Baryshkov --- WHENCE | 2 ++ qcom/a420_pfp.fw | Bin 0 -> 4292 bytes qcom/a420_pm4.fw | Bin 0 -> 9556 bytes 3 files changed, 2 insertions(+) create mode 100644 qcom/a420_pfp.fw create mode 100644 qcom/a420_pm4.fw diff --git a/WHENCE b/WHENCE index e4cfa35d..ca04ed05 100644 --- a/WHENCE +++ b/WHENCE @@ -5766,6 +5766,8 @@ File: qcom/a300_pm4.fw Link: a300_pm4.fw -> qcom/a300_pm4.fw File: qcom/a330_pfp.fw File: qcom/a330_pm4.fw +File: qcom/a420_pfp.fw +File: qcom/a420_pm4.fw File: qcom/a530_pfp.fw File: qcom/a530_pm4.fw File: qcom/a530v3_gpmu.fw2 diff --git a/qcom/a420_pfp.fw b/qcom/a420_pfp.fw new file mode 100644 index 0000000000000000000000000000000000000000..1198af7131a89e9a064b25e3bec94492c2e1a934 GIT binary patch literal 4292 zcmb7HUu;v?8ULMo?bu1K9Va*p0p7t=6F>S5(N1}b` z!?kk*NR67bYPUqh%^s-KJyhC5D~iNJrCkRLQMe`+WSy#^t2{bbQYJ&Ue0l=lf@X!*>y(M3I{_XtBe1_15?C%D}^qj0CW%@ETR{S zNIM?71r{MJT7_jw=pjtS8Z{2AGVWiY4SgS zrYa4&D?EI-1|RvnL!PqNcdg1@!yAAvmO{YwI7|44c}mL^qn%>0qNXRbPnu|as+!%yEA#_RzP}drrdRgje`pEATX+5iDDq(X~M_F5FS05HIJut56^iq$VRuK`( z8t@YM`obKPFU2>i@E4syeMA?n2Xz(xBA@UyB7@j{NZw!;!_VcAF>GzO#;TpfMrq!; z#XAU9#c(lMUsK!Ev$(;WWb3Ls>y>8`+1weoRjjhw`l& z>%;O*7k=*Fqn;Q_;Le44tezf#Nj(H7<<6mpJ}7vCFa9(2p-nwzHJw1Y57Tej*x-0L zM;fmSZN8VWJEdWQA9m-lfi~}=J;k5y(hnPUCtw^*VARahkD%|YEpNf=r1c@`$bD@i zo~8SW_`;mmc+VK8kQ^xDJaJaTLlgNnlV+Il(8zBmlS3z0nd|u`zn-UTF26+vXAx^8 zMq2&!^^%q)1F^M7IVc-f@z)K!CwCsjpEz&BoS=S7>tVHLp`u%097&T-34c2|NB$*k zpTAJQX40y~P`w_XJ)(!m{b^Mfi@q;%OAN}Ic#xgq2kp5>L{yvh2pR4dv@dh0;;?w`6k4^J^qi+tNGt!NZ z%i>Q7fIfErW>VvOS9846w4xtA-vsC5BwkPsoVR)r%Xo;vgU|zGMbl)gi2tvOq@Y}} zO$q*$y@&hs0~Kl1Z*CC&XWxT+zG_U7Iqp{RigoAr7;iE(U*XNEtgZO{!i<)qqGOY` zXYEbIF3!~?zCJmF<BXCB$+D`G2i*dTL2 zC*STrWBz4c1*6faLA~eaEbW%l(QEmC#WKm$#F=(ZV@IpOd_>Onb|I4e@mSfrog! zfcUxvczkEMui?Do_$#@x<^yVgd6D?YEYb(~PF!Cjj`2;8z7t`brs*5TP#8h(71t|; zEcTD&;N!Q9{lomu*vyF~ofp%zX_~f8yH_zJ^^$mct&>A!4b$!|w7Zs#cUR;jKanpG zO~FUsTgS5qVe3RrX8{)Tt#_MoP)ASj#eOwC<=c4V+h6y+a<|H>*~n?0AniuXYP|yP z42$F0q8qx7|^^vxavhwi-B%>YWU82VA}jWA^TeSv(F8)0uJd zC}8@1<}=4b8~w<17>^65wH)oHqt`EJN0a@A&M(!vY;rYNcMRSWUpL6BMdFjaI@NoIKiz_tnXHL`62@OD&7c4I(&`hHKjRYBY}sdCR%vEtvJwJ~No7nvW&%8s!}OUT)?5MV?E|sPAEnJM62N<6D^H zebEriju2xg4K*b7iDH7RlHa02F$Bz`cQ$JB3a<~;UP&LVM2u*f^c zH;C~KVvIxS&tiNFSzGB#%V$Ga{xXE-ZR6N~)<)rvS=<_($HZG%T%p~pPqQ%WO{6u8 zAm6r@lhhD>&|QSdvmkv>>>xTGxIB(9B&TwoOTc%qA7h8d5wFU0pME5AWrl6Y-eK)_ zt9zWVkr}DL-IIiK-z2d$N;q|PR1RLK0<+o(8_vNgjKeEsHJ;VR9A6+zJq(j`IlI9g zKze!K%i9pznqxd}f*DV08;u>!AsjDi9a?&6AJ%~w^LC6mwc&sbhdt2pbqm8qTf-(U z@q5vtIbx&PpT(Xz8y45*LE4hJN^li<%bQ7U5&wxXHWmHNShCok z@J+oW?u^c&zV1tJDY%knqz_nFvT>97zMZ*AbU==gyvOK6HCfk@mSRqE$Y1i4Hd}cx<%$H4=oqtuhx^uSxqLv7dhlD9_6LH-f!g>(fnpKzxV6j zPx`!CFITUZVhwsoH`miLicQ20JIQ|+B+pJ_C)YUfMVBf57pdtbcux!73cSLO4jVcYFdK_`1pT-%aKW#^++CjQcp?&F694JW6WE_@4v+*Zd!VyEjAt literal 0 HcmV?d00001 diff --git a/qcom/a420_pm4.fw b/qcom/a420_pm4.fw new file mode 100644 index 0000000000000000000000000000000000000000..0cad62c2e062b3cb6a59c690f2b59d0b90d791fa GIT binary patch literal 9556 zcmeHNeTZF06+ip3yV+bfn|-@4$y(NA-p6jzQXY)73#1z-@^C%zQNi4dcrD4bdo`(3UH&<16^hU@haDYuV&_B`KTUnA01^ z4bktaxo&5E{O#YX?F_U0)N>PMbAx!PH1>(77w9G^ENywiCcdLfbmM!ceDQ6@uxr_5 zgDLQvlC{frWR)rtujjvu$Pw1(nNfWUJIk$9@c6>=gO04S-7%C$jZkN1+4f;e+pcU9 z@3(DvdZ&^+r?B_T?CKNBk11%3y6xl-o`r1-w%2W)>=PI-DvU9Z|Gam zGPp@=lq|n}$|^T7(d`FgyXBh7b&fr)aSq*ht}}Ez)1TvbRv$V%1BRwJV#p-T6c}R8 zjM%wb$8@c<4X|s=!?!R68)N)d#t_djevq-X1^D|JTUCG`Vys+%-_F=r4}81_Ug?2v zD8LUh7W$kYspMjBZ3+Hdp!WfkmePCpzNQC0)&n2pG4=T{&jh)mwU~)$qO;{)DSf~` z{9NakAD>YA*@F3nKHSb>tfQY){%*UBFkAgCjk(iYfzBej`@ME-C?Bz*an(M`u{3>K z`jpEjtA;E;QIlp4*mc3|RB`Kz$wf0_`YsigZ3BWD|St~WB>9LwkZcmr9I zXaIP$_P;DWM1OAWcNFNoLbu!FWDc~l#P`^JP#%X&=HX#W+jV4p^;F&ERU|iQS>@}F zk~lZ^LGx0(eW6_oVpVZjgD$_V;UNuY*9xZV>v9{X0)IBfwuk%L@FVVB4+j3{>83{+ zhkDajSe>yiPhVkW0Zr3rbx=9{OtW5CKk{js0n$6F(l>$HEMe$_Ew+M7R|KHX$AXf@>>{UIQD8B=dP85^%BqB%gl4p z92JaRv3t9Uq`}tc^ZtQSA%|uEGD2Tyx7%jk>bd%U?1L%g`A1l&7r*ot_2RWp;`E~R?-4od?uDz{YJm$NKjyF4jOdN5=6TKIbjaGtoH_ECj*)m zsE0m2N3GmvR0G^`BycUICfkBNv>xmWI5+KJ9BV4ZuNK>z)Cg-2lhU<}hx-L8-p1IR zyayqt`2@g&jz0<32=IQFukea+e#ebLx3qJ{<{3^`k#1b`i*9VsTE8DHmV>bmyAuwl z5S}9|2Seg{Y&kg(6Rgm-+<%M1u}0p@bcws-v2QINTZ+d*|9I?;#bbx#u|>J==HjtQ zJQi~uzxQ3mV+Z50g9T%iC-T*h;_53NO68$N+$1k4EkI#@8=|0grMR{{#5&ttt@)?3 zE`4BRKi$PVh)LZeFq<>ec}&hs=Q(^!*@!B*JTPp>dO(Q+J=?r-)~0VG)W%_5*XF{m zb3ff8QtY{@suKC0Rqhr4FS2fSpTc7!r~@AwwR--86K;LP@3SwJ-)X!YT{~P2`*XoY z?hWfbtn1?}Jlty_K;GH244c%FXn&$Md*7U&-UPS*wd|d&w$~GymnR7x2e=lCe^B z-Qj7Vl?vGLU6<%3j_nK`;`90Ig$J>^t>FA3os`lG&K7>|s(aB@o-@J-pdT-FVFqSwB7fsR}aW<9ZmEhFB5*yu|$VG zF7>D5KeF@@k3)au|Jc$eJdW5_{O+ZDJ&yTO{NqcX^!RH6{KHEh^*9a$%74$&QIBJv zQvCL%J3KxT;CC+F<#E~XcBb5GYaTOJl?T*9{H@Y`C!|Z(Cp`RQFxTYwwMF`p;+TuD z_K=zc$x7OCa&67dSIE<`mpRTbm&&@BpUKeGeIECDhI>=tK@8|`F5!1t%)72NCTVkY zhT4aLee^T^_64=)W?5lwn7gaqVCj%2T#w+}H)Gc+Vrh2X?tQRt>ov#GjrLQO-)=wF z-g?bv1%!>4n|lvHPifX(Aup1v-);HLW_N~S{&3CuZ~j(h;7=#B*WL}C)t_0l^P6F* zWvn>9jyt;7Z#14!30Hf-|Md|T%#F9Wj(SXeh21Lp9^QW^+bj5p-P1)*0>rj-hsi)e z|N2OdM|)^;IQKKyyPJMGX~yL9cqu128$2Zs$KwuSY4ymx~Gw(A)mbS=4w?o)f6U8tX73(iXass1d|=M$0d z>$?2BQ)J_*OV}9vZbAol7=DdymuurmmM`Z5S4Ro$_FR#qbIRwkTJX(eM`3-{qkbmHEYK|;tML$zJss)%Xpzo=o{^uE z$2@=d8@kUSzV_?2_IGn6>fX@~?CKlIaoDK#_L4(}zZG=)q5l`qjZ<)h4+_p*$ER$r zW|G^YT#Mv9(?gEnGHQA5*MT4K|1{8w