tas2783-sdw: firmware shipped for some boards cannot be requested by the driver
Ville Saarinen <[email protected]>
| Newsgroups | org.kernel.vger.linux-sound |
|---|---|
| Message-ID | <[email protected]> |
On the HP OmniBook X Flip 14-kc0xxx (subsystem 103c:8ea1, two TAS2783 on
SoundWire link 0, unique IDs 0x9 and 0xC) the calibration firmware never
loads: the name the driver requests does not exist, and the name that
exists cannot be generated by the driver.
tas_generate_fw_name() builds
"%04X-%1X-%s%1X.bin" subsystem_device, link_id, "0x" or "", unique_id
so it asks for 8EA1-0-0x9.bin, then 8EA1-0-9.bin via the fallback.
linux-firmware (20260622) ships neither. For this board it ships
ti/audio/tas2783/8EA1-0-0-0x9.bin.zst
ti/audio/tas2783/8EA1-1-0-0x9.bin.zst (and the 0xC pair)
four fields where the driver emits three. The request fails, no
calibration is downloaded, and the speakers stay silent.
The extra field is not the link id: the two 8EA1 variants differ in DDC
name, HP_Kento_14_SDW_alpha10_Stereo_AAC_20251014 against
..._Stereo_FG_..., and both amps of this board are on link 0 regardless.
It is not confined to one board. Of the 144 files in ti/audio/tas2783,
72 use the four-field form across roughly fifteen subsystem ids (1954,
1964, 1994, 1AC4, 1AD4, 1B04, 1B94, 8EA1, 8EA2, 8EA4 through 8EA8), 66
use the three-field form the driver generates, and 6 carry literal X
placeholders (8EXX-X-9.bin.zst, 8EF6-X-9.bin.zst) that no
request_firmware() call matches verbatim. Both middle fields vary
independently within the four-field set - 1954-{0,1}-{0,1},
1AD4-{0..3}-2. The container header is the same on three- and
four-field files alike.
As it stands every board whose firmware carries the four-field name is
unreachable from mainline. Locally I get sound by symlinking the
requested name onto one of the two files, which picks a tuning by hand
and is not a fix.
For context, the ACP machine support for this board was merged for 7.3
(8393e0bf59, b48466e4be), so it now enumerates and this is what remains
between that and working speakers.
Measured on the hardware named above with linux-firmware 20260622;
written with AI assistance (Claude, claude-opus-5).
Ville