ALSA: cmipci: Fix kctl->id initialization
commitf2f312ad88
upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c35034fd64
commit
3454490e03
|
@ -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