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

ALSA: emu10k1: don't create old pass-through playback device on Audigy

It could have never worked, as snd_emu10k1_fx8010_playback_prepare() and
snd_emu10k1_fx8010_playback_hw_free() assume the emu10k1 offset for the
ETRAM, and the default DSP code includes no handler for it. It also
wouldn't make a lot of sense to make it work, as Audigy has an own, much
simpler, pass-through mechanism. So just skip creation of the device.

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20230405201220.2197938-1-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Oswald Buddenhagen and committed by
Takashi Iwai
8dd13214 b09c551c

+7 -3
+7 -3
sound/pci/emu10k1/emupcm.c
··· 1781 1781 struct snd_kcontrol *kctl; 1782 1782 int err; 1783 1783 1784 - err = snd_pcm_new(emu->card, "emu10k1 efx", device, 8, 1, &pcm); 1784 + err = snd_pcm_new(emu->card, "emu10k1 efx", device, emu->audigy ? 0 : 8, 1, &pcm); 1785 1785 if (err < 0) 1786 1786 return err; 1787 1787 1788 1788 pcm->private_data = emu; 1789 1789 1790 - snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_emu10k1_fx8010_playback_ops); 1790 + if (!emu->audigy) 1791 + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_emu10k1_fx8010_playback_ops); 1791 1792 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_emu10k1_capture_efx_ops); 1792 1793 1793 1794 pcm->info_flags = 0; 1794 - strcpy(pcm->name, "Multichannel Capture/PT Playback"); 1795 + if (emu->audigy) 1796 + strcpy(pcm->name, "Multichannel Capture"); 1797 + else 1798 + strcpy(pcm->name, "Multichannel Capture/PT Playback"); 1795 1799 emu->pcm_efx = pcm; 1796 1800 1797 1801 /* EFX capture - record the "FXBUS2" channels, by default we connect the EXTINs