Skip to content

Commit 3750528

Browse files
ossilatortiwai
authored andcommitted
ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP
- Use correct address limit for Audigy - Use the right constant to actually make a step on Audigy - Don't store *_DBG_STEP and the address in emu->fx8010.dbg, as otherwise unrelated operations would make steps, too This is untested. as10k1 was never ported to Audigy anyway. Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Link: https://lore.kernel.org/r/20230422161021.1144004-1-oswald.buddenhagen@gmx.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent 65243c7 commit 3750528

1 file changed

Lines changed: 13 additions & 11 deletions

File tree

sound/pci/emu10k1/emufx.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2650,17 +2650,19 @@ static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, un
26502650
return -EPERM;
26512651
if (get_user(addr, (unsigned int __user *)argp))
26522652
return -EFAULT;
2653-
if (addr > 0x1ff)
2654-
return -EINVAL;
2655-
if (emu->audigy)
2656-
snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP | addr);
2657-
else
2658-
snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP | addr);
2659-
udelay(10);
2660-
if (emu->audigy)
2661-
snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP | A_DBG_STEP_ADDR | addr);
2662-
else
2663-
snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP | EMU10K1_DBG_STEP | addr);
2653+
if (emu->audigy) {
2654+
if (addr > A_DBG_STEP_ADDR)
2655+
return -EINVAL;
2656+
snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP);
2657+
udelay(10);
2658+
snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg | A_DBG_STEP | addr);
2659+
} else {
2660+
if (addr > EMU10K1_DBG_SINGLE_STEP_ADDR)
2661+
return -EINVAL;
2662+
snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP);
2663+
udelay(10);
2664+
snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg | EMU10K1_DBG_STEP | addr);
2665+
}
26642666
return 0;
26652667
case SNDRV_EMU10K1_IOCTL_DBG_READ:
26662668
if (emu->audigy)

0 commit comments

Comments
 (0)