Add XPS 13 Panther Lake speaker firmware aliases (#823)

Give the DX13260 aliases their own ownership paths so a stable refresh can retain them while Arch continues updating the stock firmware. Include every speaker ID and target in the boot image. Retain the package identity across channel transitions so pacman can restore the overlay on downgrades. Keep the existing shim for the staged consumer migration.

Co-authored-by: Codex GPT-6.1-Sol XHigh <noreply@openai.com>
This commit is contained in:
Spencer BullandCodex GPT-6.1-Sol XHigh authored and GitHub committed 2026-10-06 16:36:55 -05:00
1 parent e3dfdd376c
commit 71154a8fdc
5 files changed
+129

No files matched your search

@@ -0,0 +1,5 @@
{
"source": "local",
"release_ring": "fast",
"sync": false
}
@@ -0,0 +1,45 @@
# Maintainer: Spencer Bull <spencerbull2554@gmail.com>
pkgname=linux-firmware-cirrus-dx13260
pkgver=20260810
pkgrel=1
pkgdesc="Cirrus speaker firmware aliases for Dell XPS 13 DX13260 Panther Lake"
arch=('x86_64')
url="https://gitlab.com/kernel-firmware/linux-firmware"
license=('LicenseRef-cirrus')
depends=('linux-firmware-cirrus>=20260810-2')
options=('!strip' '!debug')
_cirrus=linux-firmware-cirrus-20260910-2-any.pkg.tar.zst
source=(
"https://archive.archlinux.org/packages/l/linux-firmware-cirrus/${_cirrus}"
"https://archive.archlinux.org/packages/l/linux-firmware-cirrus/${_cirrus}.sig"
"dell-xps13-ptl-firmware.conf"
)
noextract=("${_cirrus}")
sha256sums=('70100c551b079bd8abec3d9c96a16defd04766b2a4afc6d7be9128d37e9840f7'
'SKIP'
'760385ad796818f9d60af3bc62c9670882c32050063f1d6086fb12f8817ed3fc')
validpgpkeys=('83BC8889351B5DEBBB68416EB8AC08600F108CDF')
package() {
local firmware_dir="${pkgdir}/usr/lib/firmware/updates/cirrus"
install -d "$firmware_dir"
# The updates directory avoids ownership conflicts with native Arch aliases.
local speaker
for speaker in 1 2 3; do
ln -s ../../cirrus/cs35l56/CS35L56_Rev4.5.9.wmfw.zst \
"$firmware_dir/cs35l56-b2-dsp1-misc-10280e54-spkid${speaker}.wmfw.zst"
ln -s "../../cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid${speaker}-ampl.bin.zst" \
"$firmware_dir/cs35l56-b2-dsp1-misc-10280e54-spkid${speaker}-ampl.bin.zst"
ln -s "../../cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid${speaker}-ampr.bin.zst" \
"$firmware_dir/cs35l56-b2-dsp1-misc-10280e54-spkid${speaker}-ampr.bin.zst"
done
install -Dm644 dell-xps13-ptl-firmware.conf \
"${pkgdir}/etc/mkinitcpio.conf.d/dell-xps13-ptl-firmware.conf"
install -d "${pkgdir}/usr/share/licenses/${pkgname}"
bsdtar -xOf "${srcdir}/${_cirrus}" usr/share/licenses/linux-firmware-cirrus/LICENSE.cirrus \
>"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.cirrus"
}
@@ -0,0 +1,7 @@
This package supplies the nine Dell XPS 13 DX13260 Panther Lake `10280e54` firmware aliases, under `/usr/lib/firmware/updates/cirrus`. The kernel and mkinitcpio search this directory before the stock firmware directory. A package-owned mkinitcpio drop-in explicitly includes all nine links and their targets in the boot image, because module firmware globs alone do not include every speaker ID. Each link targets the exact existing Wildcat Lake tuning or Rev4.5.9 firmware target used by Arch’s native aliases. Stock `linux-firmware-cirrus` continues to own and update every firmware binary; this package neither provides nor conflicts with it.
Omarchy integration should install this package on every matching XPS 13 DX13260 Panther Lake machine, including machines currently using native firmware. Keeping its package identity installed lets a channel downgrade restore the overlay through pacman alone, even after migrations have completed. The initial links exactly match the current native aliases; a later native-firmware channel transition removes the overlay payload. Listing it in `omarchy-other.packages` makes it available offline without installing it on other hardware. It can coexist with both the old same-name Omarchy shim and native Arch firmware; a stable refresh may remove the old shim’s aliases without removing these separately owned links.
When a channel’s core snapshot supplies native aliases, publish a higher-version empty transitional package depending on `linux-firmware-cirrus>=20260910-2`, with no firmware links or mkinitcpio drop-in. The existing Omarchy firmware path hook rebuilds the UKIs when the links are removed; no new hook is needed. That transaction removes the overlay while upgrading stock firmware, so the native aliases take over. Publish the transition only after the channel supplies the required stock version, and retain it for late updaters. Keep the earlier overlay package in older channels: a downgrade from the native transition back to an older snapshot must downgrade both packages together and restore the links. Do not publish the higher native dependency to an older channel. Removing this recipe or its repository entry alone leaves installed overlays in place and could mask future native PTL tuning.
This package does not replace the separate Panther Lake display workaround.
@@ -0,0 +1,12 @@
# Include every speaker ID and amplifier alias before the encrypted root is available.
FILES+=(
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid1-ampl.bin.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid1-ampr.bin.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid1.wmfw.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid2-ampl.bin.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid2-ampr.bin.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid2.wmfw.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid3-ampl.bin.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid3-ampr.bin.zst
/usr/lib/firmware/updates/cirrus/cs35l56-b2-dsp1-misc-10280e54-spkid3.wmfw.zst
)
@@ -0,0 +1,60 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=OXp6
-----END PGP PUBLIC KEY BLOCK-----