From e62a879fd23ec154e5ba19102bd16825307724c1 Mon Sep 17 00:00:00 2001 From: Yassine Oudjana Date: Thu, 8 Jul 2021 20:47:33 +0400 Subject: [PATCH] firmware-oneplus-oneplus3: Use pil-squasher to combine segments (MR 2339) Combine firmware segments using pil-squasher, then install them in the paths specified in the device trees of oneplus3/3t. --- .../20-adreno-gpu-firmware.files | 1 - .../firmware-oneplus-oneplus3/APKBUILD | 57 ++++++++++++------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/device/testing/firmware-oneplus-oneplus3/20-adreno-gpu-firmware.files b/device/testing/firmware-oneplus-oneplus3/20-adreno-gpu-firmware.files index d2f046939..f8653ea43 100644 --- a/device/testing/firmware-oneplus-oneplus3/20-adreno-gpu-firmware.files +++ b/device/testing/firmware-oneplus-oneplus3/20-adreno-gpu-firmware.files @@ -1,4 +1,3 @@ /lib/firmware/qcom/a530_pfp.fw /lib/firmware/qcom/a530_pm4.fw /lib/firmware/qcom/a530v3_gpmu.fw2 -/lib/firmware/qcom/a530_zap.mdt diff --git a/device/testing/firmware-oneplus-oneplus3/APKBUILD b/device/testing/firmware-oneplus-oneplus3/APKBUILD index 622af8b50..1476eb534 100644 --- a/device/testing/firmware-oneplus-oneplus3/APKBUILD +++ b/device/testing/firmware-oneplus-oneplus3/APKBUILD @@ -1,11 +1,11 @@ pkgname=firmware-oneplus-oneplus3 -pkgver=1 +pkgver=2 pkgrel=1 pkgdesc="Firmware for OnePlus 3/3T (metapackage)" url="https://gitlab.com/DrGitX/firmware-oneplus3" arch="aarch64" license="proprietary" -depends="mtools" +makedepends="mtools pil-squasher" options="!check !strip !archcheck" subpackages="$pkgname-op3 $pkgname-op3t" _gpufw="https://github.com/TheMuppets/proprietary_vendor_oneplus/raw/lineage-17.1/oneplus3/proprietary/vendor/firmware" @@ -66,49 +66,63 @@ _files="adsp.b00 " source="modem_op3.bin::$url/-/raw/master/oneplus3/NON-HLOS.bin modem_op3t.bin::$url/-/raw/master/oneplus3t/NON-HLOS.bin - $_gpufw/a530_pfp.fw - $_gpufw/a530_pm4.fw - $_gpufw/a530v3_gpmu.fw2 $_gpufw/a530_zap.elf $_gpufw/a530_zap-pro.elf 20-adreno-gpu-firmware.files " +_mdtnames="adsp modem slpi venus" +_mbns="a530_zap.mbn adsp.mbn mba.mbn modem.mbn slpi.mbn venus.mbn" + unpack() { mkdir -p $srcdir/oneplus3 $srcdir/oneplus3t + # Extract oneplus3 blobs for _i in $_files; do mcopy -v -b -p -n -i $srcdir/modem_op3.bin ::image/$_i $srcdir/oneplus3/$_i done + # Extract oneplus3t blobs for _i in $_files; do mcopy -v -b -p -n -i $srcdir/modem_op3t.bin ::image/$_i $srcdir/oneplus3t/$_i done } package() { - cd "$srcdir" - for _i in a530_pfp.fw a530_pm4.fw a530v3_gpmu.fw2; do - install -Dm644 $_i "$pkgdir/lib/firmware/postmarketos/qcom/$_i" + cd "$srcdir/oneplus3" + + # Squash oneplus3 firmware segments into mbns + for _i in $_mdtnames; do + pil-squasher "$_i.mbn" "$_i.mdt" + done + + cd "$srcdir/oneplus3t" + + # Squash oneplus3t firmware segments into mbns + for _i in $_mdtnames; do + pil-squasher "$_i.mbn" "$_i.mdt" done } _install_fw() { - mkdir -p "$subpkgdir/lib/firmware/postmarketos/qcom" + cd "$srcdir" + + # Move zap shader to the same directory as the other mbns + mv "a530_zap$2.elf" "$srcdir/$1/a530_zap.mbn" cd "$srcdir/$1" - for _i in adsp.* modem.* mba.* slpi.*; do - install -Dm644 $_i "$subpkgdir/lib/firmware/postmarketos/$_i" + # Install mbns + for _i in $_mbns; do + install -Dm644 $_i "$subpkgdir/lib/firmware/qcom/msm8996/$1/$_i" done - for _i in venus.*; do - install -Dm644 $_i "$subpkgdir/lib/firmware/postmarketos/qcom/venus-4.2/$_i" - done + # Append zap shader path to 20-adreno-gpu-firmware.files + cp "$srcdir/20-adreno-gpu-firmware.files" "$srcdir/20-adreno-gpu-firmware.files-$1" + echo "/lib/firmware/qcom/msm8996/$1/a530_zap.mbn" >> "$srcdir/20-adreno-gpu-firmware.files-$1" - install -Dm644 "$srcdir/a530_zap$2.elf" "$subpkgdir/lib/firmware/postmarketos/qcom/a530_zap.mdt" - - install -Dm644 "$srcdir/20-adreno-gpu-firmware.files" \ + # Install 20-adreno-gpu-firmware.files + install -Dm644 "$srcdir/20-adreno-gpu-firmware.files-$1" \ "$pkgdir/etc/postmarketos-mkinitfs/files/20-adreno-gpu-firmware.files" } @@ -126,11 +140,10 @@ op3t() { _install_fw oneplus3t -pro } -sha512sums="c0f3f908e237202003d9b2fe4071e2800bdcdae180e8311fbc0671478fcd63aba5a3fe5ab5d297010c12c232501f05f31141fc39a44c5b86ac2b56016f553a7f modem_op3.bin +sha512sums=" +c0f3f908e237202003d9b2fe4071e2800bdcdae180e8311fbc0671478fcd63aba5a3fe5ab5d297010c12c232501f05f31141fc39a44c5b86ac2b56016f553a7f modem_op3.bin 3da90f51fc39c3db4f0f39c07eda318b0b1fc85f7fbb8f21bd31a3ae5c73a4b39ba630a9521a7c5ee844e14c24d084f5d42e4c2ffd2bdee541e50ec7b1629b14 modem_op3t.bin -6b3ec037646c5738854137003c35ea0ea4e116f0c8b2483b312400de67609b9525ade5e7d5ce6d06e94b348dec0444165a24cdb21a45d703f55c5e657656e7cd a530_pfp.fw -a9439c0f05a96f28a092f86fd08ff63dd637a43ff764f1eb1b133e78c6876464572b3cf1b90860165dca125c35c359df937fc4318246374269f69bd00c09eb9f a530_pm4.fw -140a288889c49f2e9222f8c1679e394786f7638a0dc8e350d28e0b630ad7ccb9abd1f79a8990208144285eaf95e4bec21be5af0f6e1d07a3624de1010cd89392 a530v3_gpmu.fw2 374ed1606a8c12bd8fb8adb3e0d91603aa53ff9aed175921c9e6b579104407b01274e5f3cf158007b83ecb5aa2c7343c526e360aebc8bca557cd4b9c4c711f98 a530_zap.elf 237c82252f1ff44a454bed5f84a8dcf74e0f6ea6e5674e7d5aa32436fcf20d8c9df5c6edc4b4bc151e5fdce4694c1d14edc8ba0804ceb738f3fb67eff950aeff a530_zap-pro.elf -c7a4e408b29ac245bb6f19e2e5c0b0798ab8e745a79cfb21c85fde1b035dfc969a755fdecba34b32d54b6fca6d3eed0cd14d6f68f10e2235bcbebb476d96d4cd 20-adreno-gpu-firmware.files" +e41812751afa4c05829e40033e8355232f9f775633594f42b82a40156d3c518e53ab4b5086e421576b6f9de17f4cb540a6f85f2da69a66d445b43e0d8f2d4ce7 20-adreno-gpu-firmware.files +"