pkgname=firmware-fairphone-fp5
pkgver=20240417
pkgrel=1
pkgdesc="Firmware for Fairphone 5"
subpackages="
	$pkgname-adreno
	$pkgname-adsp
	$pkgname-bluetooth
	$pkgname-cdsp
	$pkgname-hexagonfs
	$pkgname-ipa
	$pkgname-modem
	$pkgname-venus
	$pkgname-wpss
	"
url="https://github.com/FairBlobs/FP5-firmware"
arch="aarch64"
license="proprietary"
makedepends="pil-squasher"
options="!check !strip !archcheck !tracedeps pmb:cross-native"
_commit="798524050d9f4802450cd4f1bf46ddd105b6ae4f"
source="https://github.com/FairBlobs/FP5-firmware/archive/$_commit/FP5-firmware-$_commit.tar.gz"
builddir="$srcdir/FP5-firmware-$_commit"

build() {
	for i in *.mdt; do
		pil-squasher "$(basename "$i" .mdt)".mbn "$i"
	done
}

package() {
	# parent package is empty
	mkdir -p "$pkgdir"
}

adreno() {
	pkgdesc="Fairphone 5 adreno firmware"

	install -Dm644 "$builddir"/a660_zap.mbn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
	ln -s a660_zap.mbn "$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/a660_zap.mdt"
}

adsp() {
	pkgdesc="Fairphone 5 adsp firmware"

	install -Dm644 "$builddir"/adsp.mbn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
	ln -s adsp.mbn "$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/adsp.mdt"
	install -Dm644 "$builddir"/adsp*.jsn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
	install -Dm644 "$builddir"/battmgr.jsn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
}

bluetooth() {
	pkgdesc="Fairphone 5 bluetooth firmware"

	install -Dm644 "$builddir"/msbtfw11.mbn -t \
		"$subpkgdir/lib/firmware/qca/"
	install -Dm644 "$builddir"/msnv11.bin -t \
		"$subpkgdir/lib/firmware/qca/"
}

cdsp() {
	pkgdesc="Fairphone 5 cdsp firmware"

	install -Dm644 "$builddir"/cdsp.mbn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
	ln -s cdsp.mbn "$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/cdsp.mdt"
	install -Dm644 "$builddir"/cdsp*.jsn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
}

hexagonfs() {
	pkgdesc="Fairphone 5 hexagonfs files"

	mkdir -p "$subpkgdir"/usr/share/qcom/qcm6490/Fairphone/
	cp -r "$builddir"/hexagonfs/ \
		"$subpkgdir"/usr/share/qcom/qcm6490/Fairphone/fairphone5

	# Remove files that we don't need - for now
	rm -r "$subpkgdir"/usr/share/qcom/qcm6490/Fairphone/fairphone5/acdb/
	rm -r "$subpkgdir"/usr/share/qcom/qcm6490/Fairphone/fairphone5/dsp/

	find "$subpkgdir/usr/share/qcom/qcm6490/Fairphone/fairphone5/" \
		-type f -exec chmod 0644 {} \;
}

ipa() {
	pkgdesc="Fairphone 5 ipa firmware"

	install -Dm644 "$builddir"/yupik_ipa_fws.mbn \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/ipa_fws.mbn"
	ln -s ipa_fws.mbn "$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/ipa_fws.mdt"
}

modem() {
	pkgdesc="Fairphone 5 modem firmware"

	install -Dm644 "$builddir"/modem.mbn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
	ln -s modem.mbn "$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/modem.mdt"
	install -Dm644 "$builddir"/modem*.jsn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"

	cp -r "$builddir"/modem_pr/ \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
	find "$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/" \
		-type f -exec chmod 0644 {} \;
}

venus() {
	pkgdesc="Fairphone 5 venus firmware"

	install -Dm644 "$builddir"/vpu20_1v.mbn \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/venus.mbn"
}

wpss() {
	pkgdesc="Fairphone 5 wpss firmware"

	install -Dm644 "$builddir"/wpss.mbn -t \
		"$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/"
	ln -s wpss.mbn "$subpkgdir/lib/firmware/qcom/qcm6490/fairphone5/wpss.mdt"
}

sha512sums="
b952aeb6dc953a66514aea00a32cc766c2554e59c9dbbdab723dbf65d5e5e5deeefdc80e88ec59214fdf89d2ffdd6e632e42304ef510431fb4ecc0374f81ba06  FP5-firmware-798524050d9f4802450cd4f1bf46ddd105b6ae4f.tar.gz
"
