ALSA: cmipci: Fix kctl->id initialization
cmipci driver replaces the kctl->id.device after assigning the kctl
via snd_ctl_add(). This doesn't work any longer with the new Xarray
lookup change. It has to be set before snd_ctl_add() call instead.
Fixes: c27e1efb61
("ALSA: control: Use xarray for faster lookups")
Cc: <stable@vger.kernel.org>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20230606093855.14685-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
c9b83ae4a1
commit
f2f312ad88
|
@ -2688,20 +2688,20 @@ static int snd_cmipci_mixer_new(struct cmipci *cm, int pcm_spdif_device)
|
|||
}
|
||||
if (cm->can_ac3_hw) {
|
||||
kctl = snd_ctl_new1(&snd_cmipci_spdif_default, cm);
|
||||
kctl->id.device = pcm_spdif_device;
|
||||
err = snd_ctl_add(card, kctl);
|
||||
if (err < 0)
|
||||
return err;
|
||||
kctl->id.device = pcm_spdif_device;
|
||||
kctl = snd_ctl_new1(&snd_cmipci_spdif_mask, cm);
|
||||
kctl->id.device = pcm_spdif_device;
|
||||
err = snd_ctl_add(card, kctl);
|
||||
if (err < 0)
|
||||
return err;
|
||||
kctl->id.device = pcm_spdif_device;
|
||||
kctl = snd_ctl_new1(&snd_cmipci_spdif_stream, cm);
|
||||
kctl->id.device = pcm_spdif_device;
|
||||
err = snd_ctl_add(card, kctl);
|
||||
if (err < 0)
|
||||
return err;
|
||||
kctl->id.device = pcm_spdif_device;
|
||||
}
|
||||
if (cm->chip_version <= 37) {
|
||||
sw = snd_cmipci_old_mixer_switches;
|
||||
|
|
Loading…
Reference in New Issue