pine64-pinebookpro: add service for setting low power state on boot (MR 2306)

This adds a very basic openrc runscript that sets the power state on
/dev/nvme0 to level 2, which seems(?) to be the lowest operational power
state based on some cursory internet searching (and querying the nvme
drives I have, Samsung EVO and Pro)

The drive path is hard coded, but could be made configurable later on. I
basically wanted to get something in pmaports quickly, since this power
stuff is a major source of instability for me and probably others too
who add nvme drives to this device.
This commit is contained in:
Clayton Craft 2021-07-03 17:38:55 -07:00
parent e0010926f2
commit 55dc5819e4
No known key found for this signature in database
GPG key ID: 7A3461CA187CEA54
4 changed files with 48 additions and 6 deletions

View file

@ -1,21 +1,29 @@
# Reference: <https://postmarketos.org/devicepkg>
pkgname=device-pine64-pinebookpro
pkgdesc="PINE64 Pinebook Pro"
pkgver=1
pkgrel=1
pkgver=2
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck"
depends="postmarketos-base linux-postmarketos-rockchip u-boot-pinebookpro mesa-dri-gallium alsa-ucm-conf"
depends="
alsa-ucm-conf
linux-postmarketos-rockchip
mesa-dri-gallium
nvme-cli
postmarketos-base
u-boot-pinebookpro
"
makedepends="devicepkg-dev"
subpackages="$pkgname-nonfree-firmware:nonfree_firmware"
install="$pkgname.post-install"
install="$pkgname.post-install $pkgname.post-upgrade"
source="
deviceinfo
extlinux.conf
10-pinebookpro.hwdb
mem_sleep.conf
nvme-powersave.initd
ucm/rockchip,es8316-codec.conf
ucm/HiFi
"
@ -43,6 +51,9 @@ package() {
install -D -m644 "$srcdir"/HiFi \
"$pkgdir"/usr/share/alsa/ucm2/rockchip_es8316/HiFi
install -D -m755 "$srcdir"/nvme-powersave.initd \
"$pkgdir"/etc/init.d/nvme-powersave
}
nonfree_firmware() {
@ -51,9 +62,12 @@ nonfree_firmware() {
mkdir "$subpkgdir"
}
sha512sums="68a5ba3b3115fa3c0d202566326052118ade7e8e2f8b6804d09a15ed63ec33fa5098354fd79ad24ee166f901f1349f3f0e4af5efc3924c6424d63e6b31de7542 deviceinfo
sha512sums="
68a5ba3b3115fa3c0d202566326052118ade7e8e2f8b6804d09a15ed63ec33fa5098354fd79ad24ee166f901f1349f3f0e4af5efc3924c6424d63e6b31de7542 deviceinfo
cdcb1d36440c29d411691990c1170d9665b13b1c551b35825720d23b6ae40311ce91c3b2b7a089deaacd7a33c6febe4f81dc75d71dd4bed887291221d56dc1d2 extlinux.conf
d3988fe83c54228d743f4a8c190e9530404a436a7fbc0b004bf20d3986b502d864717d8cc9c76812e599266bf84cb08f9a86e1bfd220875799c5a022aea588ec 10-pinebookpro.hwdb
bcae155e24a151d3c098833680b83b6004a329962f115480d560ebe19257eab87286b8a4c194e456c067ca54fb53e59a5a16b022cea13c11135b0855145db563 mem_sleep.conf
2abfa31fa56028339efc6d2b6cb838f310990d7110ac4dd996bc4cfcf90f0a8770e70f28f77f7b6929d110e494bc33731302f16b9717729f991c2732be0731d5 nvme-powersave.initd
846384cab3e9581a03007cf4f39f8538315e804d1573903dd223d22d5ca0b6f260e348467aead5124689288fb7d2ec22c1e9aba8e89683efdbd33ddfe10de852 rockchip,es8316-codec.conf
558f08b56425e0ceeea8d4815eeb862a2b801ba1b26b4dc28f4d0ec991ed9dfef14113172a224191eb2de5d0b57a741e4c48f1307bda2a69595944bd58731be1 HiFi"
558f08b56425e0ceeea8d4815eeb862a2b801ba1b26b4dc28f4d0ec991ed9dfef14113172a224191eb2de5d0b57a741e4c48f1307bda2a69595944bd58731be1 HiFi
"

View file

@ -4,4 +4,5 @@
echo "UPDATING HWDB..."
udevadm hwdb --update
rc-update add nvme-powersave boot
rc-update add sysfsconf default

View file

@ -0,0 +1 @@
device-pine64-pinebookpro.post-install

View file

@ -0,0 +1,26 @@
#!/sbin/openrc-run
name="NVMe power state config"
description="Set NVMe power state to lowest operational level"
nvme_command="/usr/sbin/nvme"
nvme_opts="-f 2 -v 2"
depend() {
need localmount
}
start() {
ebegin "Setting low power state for NVMe drive"
if [ ! -e /dev/nvme0 ]; then
einfo "No NVMe drive found at /dev/nvme0"
eend 0
return 0
fi
if ! ${nvme_command} set-feature /dev/nvme0 ${nvme_opts}; then
eerror "Error setting PM state."
eend 1
return 1
fi
eend 0
}