linux-stable/sound/pci
Jaroslav Kysela f716ca292a ALSA: hda: Fix the control element identification for multiple codecs
[ Upstream commit d045bceff5 ]

Some motherboards have multiple HDA codecs connected to the serial bus.
The current code may create multiple mixer controls with the almost
identical identification.

The current code use id.device field from the control element structure
to store the codec address to avoid such clashes for multiple codecs.
Unfortunately, the user space do not handle this correctly. For mixer
controls, only name and index are used for the identifiers.

This patch fixes this problem to compose the index using the codec
address as an offset in case, when the control already exists. It is
really unlikely that one codec will create 10 similar controls.

This patch adds new kernel module parameter 'ctl_dev_id' to allow
select the old behaviour, too. The CONFIG_SND_HDA_CTL_DEV_ID Kconfig
option sets the default value.

BugLink: https://github.com/alsa-project/alsa-lib/issues/294
BugLink: https://github.com/alsa-project/alsa-lib/issues/205
Fixes: 54d1740315 ("[ALSA] hda-codec - Fix connection list parsing")
Fixes: 1afe206ab6 ("ALSA: hda - Try to find an empty control index when it's occupied")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20230202092013.4066998-1-perex@perex.cz
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-03-10 09:33:20 +01:00
..
ac97 ALSA: ac97: Use snd_ctl_rename() to rename a control 2022-10-21 08:17:11 +02:00
ali5451 ALSA: ali5451: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:19 +02:00
asihpi ALSA: asihpi: fix missing pci_disable_device() 2022-12-31 13:32:18 +01:00
au88x0 ALSA: au88x0: use explicitly signed char 2022-10-25 15:14:29 +02:00
aw2 ALSA: aw2: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:38 +02:00
ca0106 ALSA: ca0106: Use snd_ctl_rename() to rename a control 2022-10-21 08:17:11 +02:00
cs46xx ALSA: cs46xx: Fix missing snd_card_free() call at probe error 2022-07-05 17:24:05 +02:00
cs5535audio ALSA: cs5535audio: fix typo in comment 2022-05-23 09:47:45 +02:00
ctxfi ALSA: ctxfi: fix typo in comment 2022-05-23 09:48:29 +02:00
echoaudio Merge branch 'for-linus' into for-next 2022-04-13 10:49:49 +02:00
emu10k1 ALSA: emu10k1: Use snd_ctl_rename() to rename a control 2022-10-21 08:17:10 +02:00
hda ALSA: hda: Fix the control element identification for multiple codecs 2023-03-10 09:33:20 +01:00
ice1712 ALSA: ice1712: remove redundant assignment to new 2022-08-05 15:06:36 +02:00
korg1212 ALSA: korg1212: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:30 +02:00
lola ALSA: lola: Bounds check loop iterator against streams array size 2022-05-21 08:48:57 +02:00
lx6464es ALSA: pci: lx6464es: fix a debug loop 2023-02-14 19:11:49 +01:00
mixart ALSA: mixart: Add sanity check for timer notify streams 2021-12-07 16:35:58 +01:00
nm256 ALSA: nm256: Don't call card private_free at probe error path 2022-04-12 17:58:44 +02:00
oxygen ALSA: oxygen: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:40 +02:00
pcxhr ALSA: pcxhr: "fix" PCXHR_REG_TO_PORT definition 2021-09-16 11:09:04 +02:00
riptide ALSA: riptide: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:31 +02:00
rme9652 ALSA: rme9652: use explicitly signed char 2022-10-25 15:15:15 +02:00
trident ALSA: trident: Allocate resources with device-managed APIs 2021-07-19 16:17:08 +02:00
vx222 ALSA: vx222: fix null-ptr-deref 2021-09-07 07:13:19 +02:00
ymfpci ALSA: ymfpci: Allocate resources with device-managed APIs 2021-07-19 16:17:11 +02:00
ad1889.c ALSA: ad1889: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:18 +02:00
ad1889.h
ak4531_codec.c ALSA: ak4531: Fix assignment in if condition 2021-06-09 17:29:49 +02:00
als300.c ALSA: als300: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:38 +02:00
als4000.c ALSA: als4000: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:19 +02:00
atiixp.c ALSA: atiixp: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:20 +02:00
atiixp_modem.c ALSA: atiixp: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:20 +02:00
azt3328.c ALSA: azt3328: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:22 +02:00
azt3328.h
bt87x.c ALSA: bt87x: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:36 +02:00
cmipci.c ALSA: cmipci: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:39 +02:00
cs4281.c ALSA: cs4281: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:23 +02:00
cs5530.c ALSA: cs5530: Allocate resources with device-managed APIs 2021-07-19 16:16:43 +02:00
ens1370.c ASoC: doc: Update dead links 2022-06-30 10:56:27 +01:00
ens1371.c
es1938.c ALSA: es1938: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:26 +02:00
es1968.c ALSA: es1968: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:27 +02:00
fm801.c ALSA: fm801: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:27 +02:00
intel8x0.c ALSA: intel8x0: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:29 +02:00
intel8x0m.c ALSA: intel8x0: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:29 +02:00
Kconfig media: Kconfig: cleanup VIDEO_DEV dependencies 2022-03-18 05:58:35 +01:00
maestro3.c ALSA: maestro3: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:30 +02:00
Makefile
rme32.c ALSA: rme32: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:32 +02:00
rme96.c ALSA: rme96: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:32 +02:00
sis7019.c ALSA: sis7019: Fix the missing error handling 2022-04-12 17:58:35 +02:00
sis7019.h
sonicvibes.c ALSA: sonicvibes: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:33 +02:00
via82xx.c ALSA: via82xx: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:34 +02:00
via82xx_modem.c ALSA: via82xx: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:34 +02:00