# Maintainer: Caleb Connolly (kalube) <caleb@connolly.tech>
# Co-Maintainer: Joel Selvaraj <joelselvaraj.oss@gmail.com>
pkgname=soc-qcom-sdm845
pkgdesc="Common package for Qualcomm SDM845 devices"
pkgver=20
pkgrel=0
url="https://postmarketos.org"
license="BSD-3-Clause"
arch="aarch64"
options="!check !archcheck !tracedeps"
depends="
	swclock-offset
	kmod
"
replaces="upower"
subpackages="
	$pkgname-modem
	$pkgname-nonfree-firmware:nonfree_firmware
	$pkgname-pulseaudio
	$pkgname-qbootctl
	$pkgname-ucm
	$pkgname-vulkan
	$pkgname-wireplumber
"

_ucm_commit="34a4ee28abe70a5719e4a895333d0796c13ecd16"
source="
	10-initramfs-sdm845.files
	51-qcom-sdm845.lua
	90-feedbackd-pmi8998.rules
	UPower.conf
	alsa-ucm-conf-$_ucm_commit.tar.gz::https://gitlab.com/sdm845-mainline/alsa-ucm-conf/-/archive/$_ucm_commit/alsa-ucm-conf-$_ucm_commit.tar.gz
	call_audio_idle_suspend_workaround.confd
	call_audio_idle_suspend_workaround.initd
	call_audio_idle_suspend_workaround.sh
	modemmanager.conf
"

package() {
	mkdir -p "$pkgdir"
	install -Dm644 "$srcdir"/90-feedbackd-pmi8998.rules \
		"$pkgdir"/usr/lib/udev/rules.d/90-feedbackd-pmi8998.rules

	# Shutdown when battery is critical instead of sleep
	install -Dm644 "$srcdir"/UPower.conf \
		"$pkgdir"/etc/UPower/UPower.conf

	install -Dm644 "$srcdir"/10-initramfs-sdm845.files \
		-t "$pkgdir"/usr/share/mkinitfs/files/
}

modem() {
	pkgdesc="Modem services and configuration"
	depends="
		q6voiced
		q6voiced-openrc
		msm-modem-uim-selection
	"

	install="$subpkgname.post-install $subpkgname.post-upgrade"
	mkdir "$subpkgdir"

	install -Dm644 "$srcdir"/modemmanager.conf \
		"$subpkgdir"/etc/conf.d/modemmanager
}

nonfree_firmware() {
	pkgdesc="Modem, WiFi and GPU Firmware"
	depends="
		pd-mapper
		pd-mapper-openrc
		tqftpserv
		tqftpserv-openrc
		msm-modem
		bootmac
		alsa-utils
	"

	install="$subpkgname.post-install $subpkgname.post-upgrade"
	mkdir "$subpkgdir"
}

ucm() {
	provides="alsa-ucm-conf"
	provider_priority=1

	# install audio config files
	mkdir -p "$subpkgdir"/usr/share/alsa/ucm2
	cp -r "$srcdir/alsa-ucm-conf-$_ucm_commit"/ucm2 "$subpkgdir"/usr/share/alsa/
}

qbootctl() {
	pkgdesc="Enable qbootctl mark-boot-successful service"
	depends="qbootctl"
	install="$subpkgname.post-install $subpkgname.post-upgrade"
	mkdir "$subpkgdir"
}

vulkan() {
	pkgdesc="Vulkan support for freedreno"
	install_if="$pkgname vulkan-loader"
	depends="mesa-vulkan-freedreno"
	mkdir "$subpkgdir"
}

pulseaudio() {
	install_if="$pkgname=$pkgver-r$pkgrel pulseaudio"
	replaces="$pkgname" # To migrate from workaround being in main package
	install="$subpkgname.post-install $subpkgname.post-upgrade"

	# Call Audio idle suspend workaround code
	install -Dm755 "$srcdir"/call_audio_idle_suspend_workaround.sh \
		"$subpkgdir"/usr/sbin/call_audio_idle_suspend_workaround

	# Call Audio idle suspend workaround init script
	install -Dm755 "$srcdir"/call_audio_idle_suspend_workaround.initd \
		"$subpkgdir"/etc/init.d/call_audio_idle_suspend_workaround

	install -Dm644 "$srcdir"/call_audio_idle_suspend_workaround.confd \
		"$subpkgdir"/etc/conf.d/call_audio_idle_suspend_workaround
}

wireplumber() {
	install_if="$pkgname=$pkgver-r$pkgrel wireplumber"

	install -Dm644 "$srcdir"/51-qcom-sdm845.lua \
		-t "$subpkgdir"/usr/share/wireplumber/main.lua.d
}

sha512sums="
56845726c5e7b685953f96c381404181ad9b70ea7dbfe5a3d963fb6f15821addaead43a65c9b140cb938c2d45173cfb5421816bd36024fd7e1b8555e0b32622f  10-initramfs-sdm845.files
022852b33ba4dd76684cc7e6df5ce04830631f80382f293e96101663856bad746c17c2ca9cd0ceacf28e2c03d8ce367165b8bd2affc69db3dcbb3a5411bd1926  51-qcom-sdm845.lua
4f2c22a3a3fc7d380e200ad977578107d81f0e7ade7918e03bdb15b60a564e8db5f47e13cce22f636d38fd3722696bb46076b8872dae0ca2d8a3838522a1f025  90-feedbackd-pmi8998.rules
9d455b56558d453d501a1ad869ffa79f9952ed43485a9847d506db6a78bfcd9f9c9d855660ee1d368eb74f4429385ec166addc30d802261c75562e785fe84c52  UPower.conf
530571ef0afc7ba239f8dbb7b8cc4ca2a73dff0df958e67a76b2e9a5724a5d2a12f045e9679325f07e379ef798de8ada43d6ce4ce5018281c67670a301851409  alsa-ucm-conf-34a4ee28abe70a5719e4a895333d0796c13ecd16.tar.gz
6fb4c0bd8b7ed534d855a6732ccff783960e3cfa0e0cc7effcbb93afa00798dec15361a37a3200081bc114c8d266b7a0851cc4e819ad36eabdb47a50c72620d9  call_audio_idle_suspend_workaround.confd
5a58475b6e2ee1d655f3f23d8dc19e1cb2f32f1dfff3b9a9337d9c5baad1ec24bfaec0fb9cc03f00e5a291bee27c6b8bffbc65157e2bee5d65ef6d1adcb0910b  call_audio_idle_suspend_workaround.initd
aa5cdb138a3cdd0b15d2bbb60c7f67ae0280ddc7d0488cfe2fc44680095a43c1cdacc54d70a689f2117538e9bf1e42758d8c3ac542c9cb8e8dc6d6f3161b7577  call_audio_idle_suspend_workaround.sh
e33f41360ccc4900bb76a26cc7b46bde1fb90facdf45c4fbcebc80499386939948401cacd6df9f779eafab10f4ee77ee1fef3e7bd06f483f8c2a4a644c84f327  modemmanager.conf
"