[RESEND] ALSA: hda/tas2781: TP3407SA evidence for the January custom calibration address patch
From: linux-kernel . supreme403
Date: Mon Oct 05 2026 - 14:17:04 EST
Hi Antheas and sound/TI maintainers,
Resending as plain text because LKML rejected the previous message for containing an HTML part.
Your January 7 patch fixes barely audible speakers on my ASUS Vivobook 14 Flip TP3407SA_TP3407SA. Could it be revived with the hardware evidence below, and considered for stable backports after upstream acceptance?
Hardware: TP3407SA_TP3407SA, BIOS TP3407SA.308 (March 5, 2026). Tested kernel: Linux 6.18.46, with your original patch built and booted. DSP: TAS2XXX10A4.bin, identical to TAS2XXX10A40.bin; PPC 0x19500, classified by the driver as TASDEV_BETA.
The CRC-valid, 88-byte CALI_DATA UEFI payload contains two speaker nodes and custom address node 0x80. Its address slots, all in book 0, are 0ce4, 0cfc, 0cf4, 0ae0 and 0d70. The firmware metadata instead orders the first three destinations as 0ce4 0cf4 0cfc. tas2781_apply_calib() reads the custom node but only installs its addresses for TASDEV_BASIC. On this BETA firmware, two factory coefficients therefore go to the wrong destinations.
Primary speaker factory words, in order: 3db90308 3076f45a 10971fdc 00a17a0f 2a800000
Actual primary-amplifier register reads, book 0:
Address Before After Expected from factory node
0ce4 3db90308 3db90308 3db90308
0cf4 3076f45a 10971fdc 10971fdc
0cfc 10971fdc 3076f45a 3076f45a
0ae0 00a17a0f 00a17a0f 00a17a0f
0d70 2a800000 2a800000 2a800000
Before the patch, the speakers were barely audible even at 100% system volume. After booting the patched kernel, speaker sound was normal. The firmware was unchanged. Protected Speaker Profile Id 1 was active, with Program Id 0, Config Id 0 and Force Firmware Load off.
As checked on October 5, mainline 67f0943b394d and sound for-next 8acd6469f427 still have the BASIC-only assignment; the patch applies to both. A local userspace C test using the kernel's calibration routines and mocked register writes reproduces the misplacement and verifies the patched mapping for both captured speaker fixtures. No-custom-node, BASIC, already-matching-layout and invalid-CRC cases retain their behavior. The test and captured data are available on request.
Limits: only the primary amplifier was read on hardware, and the final register snapshot was taken idle. The listening result is subjective; there is no calibrated SPL measurement or controlled same-volume A/B. Current mainline and for-next were not built and booted as full kernels.
Unlike the January Ally X test, this machine's OEM and firmware layouts differ. This report does not claim to fix the Ally X's separate symptom. Commit 4fe238513407 introduced the custom-node parser with the BASIC-only assignment and appears to be the appropriate Fixes target.
DSP SHA256:
a29f522c22cdb203eb1af84846838b5ef76c3a2c721760c7a898dd35f9ce1430
Public firmware:
https://gitlab.com/kernel-firmware/linux-firmware/-/raw/20260410/ti/audio/tas2781/TAS2XXX10A40.bin
Original patch:
https://lore.kernel.org/all/20260107093134.583873-1-lkml@xxxxxxxxxxx/
OpenAI Codex (LLM) assisted with diagnosing the quiet speakers, validating the existing patch, preparing a local reproducer and drafting this hardware report. The kernel change is your January proposal.
Assisted-by: LLM
Thanks,
assembledev