ALSA: cmipci: Fix kctl->id initialization
commit f2f312ad88c68a7f4a7789b9269ae33af3c7c7e9 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: c27e1efb61c5 ("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…
x
Reference in New Issue
Block a user