Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ALSA: hda/tas2781: properly initialize speaker_id for TAS2563

After speaker id retrieval was refactored to happen in tas2781_read_acpi,
devices that do not use a speaker id need a negative speaker_id value
instead of NULL, but no initialization was added to the TAS2563 code path.
This causes the driver to attempt to load a non-existent firmware file name
with a speaker id of 0 ("TAS2XXX38700.bin") instead of the correct file
name without a speaker id ("TAS2XXX3870.bin"), resulting in low volume and
these dmesg errors:

tas2781-hda i2c-INT8866:00: Direct firmware load for TAS2XXX38700.bin failed with error -2
tas2781-hda i2c-INT8866:00: tasdevice_dsp_parser: load TAS2XXX38700.bin error
tas2781-hda i2c-INT8866:00: dspfw load TAS2XXX38700.bin error
[...]
tas2781-hda i2c-INT8866:00: tasdevice_prmg_load: Firmware is NULL

Fix this by setting speaker_id to -1 as is done for other models.

Fixes: 945865a0ddf3 ("ALSA: hda/tas2781: fix speaker id retrieval for multiple probes")
Cc: stable@vger.kernel.org
Signed-off-by: August Wikerfors <git@augustwikerfors.se>
Link: https://patch.msgid.link/20251222194704.87232-1-git@augustwikerfors.se
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

August Wikerfors and committed by
Takashi Iwai
e340663b 830988b6

+3 -1
+3 -1
sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
··· 111 111 sub = acpi_get_subsystem_id(ACPI_HANDLE(physdev)); 112 112 if (IS_ERR(sub)) { 113 113 /* No subsys id in older tas2563 projects. */ 114 - if (!strncmp(hid, "INT8866", sizeof("INT8866"))) 114 + if (!strncmp(hid, "INT8866", sizeof("INT8866"))) { 115 + p->speaker_id = -1; 115 116 goto end_2563; 117 + } 116 118 dev_err(p->dev, "Failed to get SUBSYS ID.\n"); 117 119 ret = PTR_ERR(sub); 118 120 goto err;