fairphone-fp6: new device

Add an initial port for The Fairphone (Gen. 6) smartphone. This includes
firmware and close-to-mainline kernel package.

Part-of: https://gitlab.postmarketos.org/postmarketos/pmaports/-/merge_requests/6715
[ci:skip-build]: already built successfully in CI
This commit is contained in:
Luca Weiss 2025-06-07 00:31:47 +02:00 committed by fossdd
parent ada7e1257e
commit 5029df171b
No known key found for this signature in database
GPG key ID: BB8C8A81C6452A88
7 changed files with 7999 additions and 0 deletions

View file

@ -0,0 +1,3 @@
# Mesa's LLVM JIT is crashing with SIGILL
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/13314
export GALLIUM_DRIVER=softpipe

View file

@ -0,0 +1,45 @@
# Reference: <https://postmarketos.org/devicepkg>
# Maintainer: Luca Weiss <luca@lucaweiss.eu>
pkgname=device-fairphone-fp6
pkgdesc="The Fairphone (Gen. 6)"
pkgver=1
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck"
depends="
firmware-fairphone-fp6-adreno
firmware-fairphone-fp6-adsp
firmware-fairphone-fp6-bluetooth
firmware-fairphone-fp6-cdsp
firmware-fairphone-fp6-ipa
firmware-fairphone-fp6-modem
firmware-fairphone-fp6-venus
firmware-fairphone-fp6-wpss
linux-postmarketos-qcom-sm7635
mkbootimg
postmarketos-base
"
makedepends="devicepkg-dev"
source="
00-mesa.sh
deviceinfo
modules-initfs
"
build() {
devicepkg_build $startdir $pkgname
}
package() {
devicepkg_package $startdir $pkgname
install -Dm644 "$srcdir"/00-mesa.sh \
"$pkgdir"/etc/profile.d/00-mesa.sh
}
sha512sums="
17533b261db6ead91b360e2d71355297fc3ad37f3fc68f6f03a8f7bb31e1ca82ecc403454aa360c7eace9164199086422f9e2d7507e24e4695caa8d3c117034f 00-mesa.sh
0d7de7bbf1aa84782320f290294cd1f8fb545b9ac12ad862eb3df4def7a221c11d316b52a34269d127d436a479fe58f0c56d0d2b9b65896592b0794daaff9742 deviceinfo
c535c211a6d594605e0e2af3536e457b4b6a4b833f26efda4dbd514597d080393a621338c274173f4633eadefc0c2ae830f7ceaa4cbe56a1e6715ff825af18f1 modules-initfs
"

View file

@ -0,0 +1,37 @@
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell
# scripts.
deviceinfo_format_version="0"
deviceinfo_name="Fairphone (Gen. 6)"
deviceinfo_manufacturer="Fairphone"
deviceinfo_codename="fairphone-fp6"
deviceinfo_year="2025"
deviceinfo_dtb="qcom/sm7635-fairphone-fp6"
deviceinfo_append_dtb="true"
deviceinfo_arch="aarch64"
# Device related
deviceinfo_gpu_accelerated="true"
deviceinfo_chassis="handset"
deviceinfo_keyboard="false"
deviceinfo_external_storage="true"
deviceinfo_screen_width="1116"
deviceinfo_screen_height="2484"
deviceinfo_getty="ttyMSM0;115200"
# Bootloader related
deviceinfo_flash_method="fastboot"
deviceinfo_kernel_cmdline="console=tty0"
deviceinfo_generate_bootimg="true"
deviceinfo_flash_pagesize="4096"
deviceinfo_flash_offset_base="0x00000000"
deviceinfo_flash_offset_dtb="0x01f00000"
deviceinfo_flash_offset_kernel="0x00008000"
deviceinfo_flash_offset_ramdisk="0x01000000"
deviceinfo_flash_offset_second="0x00000000"
deviceinfo_flash_offset_tags="0x00000100"
deviceinfo_header_version="2"
deviceinfo_bootimg_custom_args="--os_version 99.87.36 --os_patch_level 2099-12-31"
deviceinfo_rootfs_image_sector_size="4096"
deviceinfo_flash_sparse="true"

View file

@ -0,0 +1 @@
spi-geni-qcom

View file

@ -0,0 +1,109 @@
# Maintainer: Luca Weiss <luca@lucaweiss.eu>
pkgname=firmware-fairphone-fp6
pkgver=20250606
pkgrel=0
pkgdesc="Firmware for The Fairphone (Gen. 6)"
subpackages="
$pkgname-adreno
$pkgname-adsp
$pkgname-bluetooth
$pkgname-cdsp
$pkgname-ipa
$pkgname-modem
$pkgname-venus
$pkgname-wpss
"
url="https://github.com/FairBlobs/FP6-firmware"
arch="aarch64"
license="proprietary"
makedepends="pil-squasher"
options="!check !strip !archcheck !tracedeps pmb:cross-native"
_commit="cb1e77ced667a95ee637964124ff83bb0373838b"
source="https://github.com/FairBlobs/FP6-firmware/archive/$_commit/FP6-firmware-$_commit.tar.gz"
builddir="$srcdir/FP6-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="The Fairphone (Gen. 6) adreno firmware"
install -Dm644 "$builddir"/gen80300_zap.mbn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
}
adsp() {
pkgdesc="The Fairphone (Gen. 6) adsp firmware"
install -Dm644 "$builddir"/adsp*.mbn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
install -Dm644 "$builddir"/adsp*.jsn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
install -Dm644 "$builddir"/battmgr.jsn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
}
bluetooth() {
pkgdesc="The Fairphone (Gen. 6) bluetooth firmware"
install -Dm644 "$builddir"/msbtfw12.mbn -t \
"$subpkgdir/lib/firmware/qca/"
install -Dm644 "$builddir"/msnv12.bin -t \
"$subpkgdir/lib/firmware/qca/"
}
cdsp() {
pkgdesc="The Fairphone (Gen. 6) cdsp firmware"
install -Dm644 "$builddir"/cdsp*.mbn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
install -Dm644 "$builddir"/cdsp*.jsn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
}
ipa() {
pkgdesc="The Fairphone (Gen. 6) ipa firmware"
install -Dm644 "$builddir"/ipa_fws.mbn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
}
modem() {
pkgdesc="The Fairphone (Gen. 6) modem firmware"
install -Dm644 "$builddir"/modem.mbn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
install -Dm644 "$builddir"/modem*.jsn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
cp -r "$builddir"/modem_pr/ \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
find "$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/" \
-type f -exec chmod 0644 {} \;
}
venus() {
pkgdesc="The Fairphone (Gen. 6) venus firmware"
install -Dm644 "$builddir"/vpu20_2v.mbn \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/venus.mbn"
}
wpss() {
pkgdesc="The Fairphone (Gen. 6) wpss firmware"
install -Dm644 "$builddir"/wpss.mbn -t \
"$subpkgdir/lib/firmware/qcom/sm7635/fairphone/fp6/"
}
sha512sums="
c657a720e64d33bfa6aca93aae2528d506ef1fa5e900745ef1c187c57cab829a2440182831ab13454524decde77a081e730811969a8b9528394e924a8148393a FP6-firmware-cb1e77ced667a95ee637964124ff83bb0373838b.tar.gz
"

View file

@ -0,0 +1,59 @@
# Maintainer: Luca Weiss <luca@lucaweiss.eu>
_flavor="postmarketos-qcom-sm7635"
pkgname=linux-$_flavor
pkgver=6.16_rc1
pkgrel=0
pkgdesc="Mainline Kernel fork for SM7635 devices"
arch="aarch64"
_carch="arm64"
url="https://github.com/z3ntu/linux"
license="GPL-2.0-only"
options="!strip !check !tracedeps
pmb:cross-native
pmb:kconfigcheck-community
"
makedepends="bash bison findutils flex installkernel openssl-dev perl python3"
_repo="linux"
_config="config-$_flavor.$arch"
_tag="v$pkgver-sm7635"
# Source
source="
https://github.com/z3ntu/$_repo/archive/refs/tags/$_tag/$_repo-$_tag.tar.gz
$_config
"
builddir="$srcdir/$_repo-$pkgver-sm7635"
prepare() {
default_prepare
cp "$srcdir/config-$_flavor.$arch" .config
}
build() {
unset LDFLAGS
make ARCH="$_carch" CC="${CC:-gcc}" \
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor"
}
package() {
install -Dm644 "$builddir/arch/$_carch/boot/Image.gz" \
"$pkgdir/boot/vmlinuz"
make modules_install dtbs_install \
ARCH="$_carch" \
INSTALL_PATH="$pkgdir"/boot/ \
INSTALL_MOD_PATH="$pkgdir" \
INSTALL_MOD_STRIP=1 \
INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs
rm -f "$pkgdir"/lib/modules/*/build "$pkgdir"/lib/modules/*/source
install -D "$builddir"/include/config/kernel.release \
"$pkgdir"/usr/share/kernel/$_flavor/kernel.release
}
sha512sums="
66687852088a771992ee3662cf1fd5e2d1aaedfb1d265516f5ce8037b28b3c7064fed1a928582c5afd8a74b4b94795d7d16502429bdf4ff647cbafaef32a99e2 linux-v6.16_rc1-sm7635.tar.gz
9a9a694c78f33e9363d8ae50f5a17307c17501dc554caa24c5740cc47af2d83668b9a58076099af0adb46f8130081c1552f034ee496f33125d1d9d4d1f717ab0 config-postmarketos-qcom-sm7635.aarch64
"