From a60ef9725da498e3273f9618cbc2093cd746e1cc Mon Sep 17 00:00:00 2001 From: Ultracoolguy Date: Wed, 30 Jun 2021 15:16:58 -0400 Subject: [PATCH] firmware-motorola-ocean: Initial modem support (MR 2295) On top of the firmware we already have, we also need device-specific modem firmware. Use script from firmware-motorola-potter(credit goes to Sireesh Kodali). Also imitate the logic in firmware-motorola-potter. --- .../testing/firmware-motorola-ocean/APKBUILD | 43 +++++++------- ...irmware-motorola-ocean-openrc.post-install | 2 + .../firmware-motorola-ocean/firmware.files | 58 +++++++++++++++++++ .../moto-modem-rfs-setup.initd | 40 +++++++++++++ 4 files changed, 123 insertions(+), 20 deletions(-) create mode 100644 device/testing/firmware-motorola-ocean/firmware-motorola-ocean-openrc.post-install create mode 100644 device/testing/firmware-motorola-ocean/firmware.files create mode 100644 device/testing/firmware-motorola-ocean/moto-modem-rfs-setup.initd diff --git a/device/testing/firmware-motorola-ocean/APKBUILD b/device/testing/firmware-motorola-ocean/APKBUILD index 3fe0022e9..84c9a9aad 100644 --- a/device/testing/firmware-motorola-ocean/APKBUILD +++ b/device/testing/firmware-motorola-ocean/APKBUILD @@ -1,5 +1,5 @@ pkgname=firmware-motorola-ocean -pkgver=2 +pkgver=3 pkgrel=0 pkgdesc="Firmware for Motorola Moto G7 Power" url="https://gitlab.com/Ultracoolguy/firmware-motorola-ocean" @@ -7,30 +7,33 @@ arch="aarch64" license="proprietary" options="!check !strip !archcheck" depends="linux-firmware-qcom" -_commit="2374787dcd3c6494b1e7bbdbc8807635aac3ddfc" -source="https://gitlab.com/Ultracoolguy/firmware-motorola-ocean/-/archive/$_commit/firmware-motorola-ocean-$_commit.tar.gz" +_commit="6552364e63e5a15224c6f0d79e63f69bd6a59fc5" +source="https://gitlab.com/Ultracoolguy/firmware-motorola-ocean/-/archive/$_commit/firmware-motorola-ocean-$_commit.tar.gz + moto-modem-rfs-setup.initd + firmware.files + $pkgname-openrc.post-install" +subpackages="$pkgname-openrc" builddir="$srcdir/$pkgname-$_commit" -_fwdir="/lib/firmware/postmarketos" - package() { - install -Dm644 "$builddir"/a506_zap.* -t \ - "$pkgdir/$_fwdir" - install -Dm644 "$builddir"/adsp.* -t \ - "$pkgdir/$_fwdir" - install -Dm644 "$builddir"/mba.mbn -t \ - "$pkgdir/$_fwdir" - install -Dm644 "$builddir"/modem.* -t \ - "$pkgdir/$_fwdir" - install -Dm644 "$builddir"/venus.* -t \ - "$pkgdir/$_fwdir" - install -Dm644 "$builddir"/wcnss.* -t \ - "$pkgdir/$_fwdir" - install -Dm644 "$builddir"/wlan/prima/WCNSS_* -t \ - "$pkgdir/$_fwdir"/wlan/prima + install -Dm755 $srcdir/moto-modem-rfs-setup.initd "$pkgdir"/etc/init.d/moto-modem-rfs-setup + + while IFS="" read -r _i || [ -n "$_i" ]; do + [ ! -d $(dirname $_i) ] && mkdir -p $(dirname $_i) + echo $_i + install -Dm644 $_i "$pkgdir/$_i" + done < "$srcdir/firmware.files" +} + +openrc() { + install="$subpkgname.post-install" + default_openrc } sha512sums=" -b8f6b7665f26855f7a454d7a03ef235be6cbbcd23d70ef1522aa983a7e2a1692093fb83e48f0df4191be9f363a6a9a2fdcd1171316c2625a20489d6c1376401d firmware-motorola-ocean-2374787dcd3c6494b1e7bbdbc8807635aac3ddfc.tar.gz +d3bad428a89fb449d1e976783748defc62178105973e5f82c63b6d0947604065f152f24ae5a43ec413738878eafea15351f59c4a0da3a62f4635096a290bd459 firmware-motorola-ocean-6552364e63e5a15224c6f0d79e63f69bd6a59fc5.tar.gz +d4fd0f3406c9f004e9cae7bc500c5713aab75f102f8e3ea1af820865f01eb03def01cd9ed3e8a184c7dfc22ab419628fad17957a3782885d96eb36e94461e842 moto-modem-rfs-setup.initd +495c0044f0d730247c164d3cf66f3a8d6773e533c804609b999ef3ef4dd63519ed5b96ddfc58e3fef7ef903beb072c73a2ab5baf1d4830561bc0a561db6aafe3 firmware.files +784ac120a2231cfbee153fb8b2634af4ab5091eaa8fe207e66b47641d7531591ee3849e610bb66c7177822c86556f78d51c17ba8e4f3da2f946c4b8c5eaaf310 firmware-motorola-ocean-openrc.post-install " diff --git a/device/testing/firmware-motorola-ocean/firmware-motorola-ocean-openrc.post-install b/device/testing/firmware-motorola-ocean/firmware-motorola-ocean-openrc.post-install new file mode 100644 index 000000000..ef69d2fc3 --- /dev/null +++ b/device/testing/firmware-motorola-ocean/firmware-motorola-ocean-openrc.post-install @@ -0,0 +1,2 @@ +#!/bin/sh +rc-update add moto-modem-rfs-setup boot diff --git a/device/testing/firmware-motorola-ocean/firmware.files b/device/testing/firmware-motorola-ocean/firmware.files new file mode 100644 index 000000000..616c30298 --- /dev/null +++ b/device/testing/firmware-motorola-ocean/firmware.files @@ -0,0 +1,58 @@ +./lib/firmware/postmarketos/a506_zap.b00 +./lib/firmware/postmarketos/a506_zap.b01 +./lib/firmware/postmarketos/a506_zap.b02 +./lib/firmware/postmarketos/a506_zap.mdt +./lib/firmware/postmarketos/adsp.b00 +./lib/firmware/postmarketos/adsp.b01 +./lib/firmware/postmarketos/adsp.b02 +./lib/firmware/postmarketos/adsp.b03 +./lib/firmware/postmarketos/adsp.b04 +./lib/firmware/postmarketos/adsp.b05 +./lib/firmware/postmarketos/adsp.b06 +./lib/firmware/postmarketos/adsp.b07 +./lib/firmware/postmarketos/adsp.b08 +./lib/firmware/postmarketos/adsp.b09 +./lib/firmware/postmarketos/adsp.b10 +./lib/firmware/postmarketos/adsp.b11 +./lib/firmware/postmarketos/adsp.b12 +./lib/firmware/postmarketos/adsp.b13 +./lib/firmware/postmarketos/adsp.b14 +./lib/firmware/postmarketos/adsp.mdt +./lib/firmware/postmarketos/mba.mbn +./lib/firmware/postmarketos/modem.b00 +./lib/firmware/postmarketos/modem.b01 +./lib/firmware/postmarketos/modem.b02 +./lib/firmware/postmarketos/modem.b04 +./lib/firmware/postmarketos/modem.b05 +./lib/firmware/postmarketos/modem.b06 +./lib/firmware/postmarketos/modem.b07 +./lib/firmware/postmarketos/modem.b08 +./lib/firmware/postmarketos/modem.b09 +./lib/firmware/postmarketos/modem.b10 +./lib/firmware/postmarketos/modem.b11 +./lib/firmware/postmarketos/modem.b12 +./lib/firmware/postmarketos/modem.b13 +./lib/firmware/postmarketos/modem.b16 +./lib/firmware/postmarketos/modem.b17 +./lib/firmware/postmarketos/modem.b18 +./lib/firmware/postmarketos/modem.b19 +./lib/firmware/postmarketos/modem.b20 +./lib/firmware/postmarketos/modem.mdt +./lib/firmware/postmarketos/wcnss.b00 +./lib/firmware/postmarketos/wcnss.b01 +./lib/firmware/postmarketos/wcnss.b02 +./lib/firmware/postmarketos/wcnss.b04 +./lib/firmware/postmarketos/wcnss.b06 +./lib/firmware/postmarketos/wcnss.b09 +./lib/firmware/postmarketos/wcnss.b10 +./lib/firmware/postmarketos/wcnss.b11 +./lib/firmware/postmarketos/wcnss.b12 +./lib/firmware/postmarketos/wcnss.mdt +./lib/firmware/postmarketos/wlan/prima/WCNSS_qcom_cfg.ini +./lib/firmware/postmarketos/wlan/prima/WCNSS_qcom_wlan_nv.bin +./lib/firmware/postmarketos/venus.b00 +./lib/firmware/postmarketos/venus.b01 +./lib/firmware/postmarketos/venus.b02 +./lib/firmware/postmarketos/venus.b03 +./lib/firmware/postmarketos/venus.b04 +./lib/firmware/postmarketos/venus.mdt diff --git a/device/testing/firmware-motorola-ocean/moto-modem-rfs-setup.initd b/device/testing/firmware-motorola-ocean/moto-modem-rfs-setup.initd new file mode 100644 index 000000000..9fcbeb544 --- /dev/null +++ b/device/testing/firmware-motorola-ocean/moto-modem-rfs-setup.initd @@ -0,0 +1,40 @@ +#!/sbin/openrc-run + +description="Setup modem firmware for tqftpserv" + +depend() { + before tqftpserv +} + +start() +{ + MODEM_FIRMWARE_DIR="/lib/firmware/postmarketos/persist" + # The firmware present here is unique to each device + # Using the firmware of one device on another can will simply fail + # This is needed because motorola devices derive IMEI and other unique + # IDs from these files + # See also: https://forum.xda-developers.com/g5-plus/how-to/fix-persist-resolve-imei0-explanation-t3825147 + + + if [ ! -d $MODEM_FIRMWARE_DIR ]; then + # Make a copy of the firmware if its not already made + # Use the copy instead of the original, because if due to some error + # somehow the firmware gets corrupted, the original firmware will + # still be available on the 'persist' partition + + PERSIST_PATH="/tmp/persist" + PERSIST_DEV="/dev/disk/by-partlabel/persist" + + mkdir -p $PERSIST_PATH + mount $PERSIST_DEV -o ro,noatime $PERSIST_PATH + + mkdir $MODEM_FIRMWARE_DIR + + cp -R "$PERSIST_PATH"/rfs/msm/mpss/ "$MODEM_FIRMWARE_DIR"/readwrite + + umount $PERSIST_DEV + rmdir $PERSIST_PATH + fi + + ln -s "$MODEM_FIRMWARE_DIR"/readwrite/ /tmp/tqftpserv +}