[ALSA] emu10k1x - Minor clean up

Modules: EMU10K1/EMU10K2 driver

Minor clean up of the emu10k1x interrupt handler code.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2005-11-17 10:43:53 +01:00 committed by Jaroslav Kysela
parent b9b4bdd9f1
commit 89173bd414

View File

@ -795,44 +795,43 @@ static irqreturn_t snd_emu10k1x_interrupt(int irq, void *dev_id,
status = inl(chip->port + IPR);
if(status) {
// capture interrupt
if(status & (IPR_CAP_0_LOOP | IPR_CAP_0_HALF_LOOP)) {
emu10k1x_voice_t *pvoice = &chip->capture_voice;
if(pvoice->use)
snd_emu10k1x_pcm_interrupt(chip, pvoice);
else
snd_emu10k1x_intr_disable(chip,
INTE_CAP_0_LOOP |
INTE_CAP_0_HALF_LOOP);
}
mask = IPR_CH_0_LOOP|IPR_CH_0_HALF_LOOP;
for(i = 0; i < 3; i++) {
if(status & mask) {
if(pvoice->use)
snd_emu10k1x_pcm_interrupt(chip, pvoice);
else
snd_emu10k1x_intr_disable(chip, mask);
}
pvoice++;
mask <<= 1;
}
if (status & (IPR_MIDITRANSBUFEMPTY|IPR_MIDIRECVBUFEMPTY)) {
if (chip->midi.interrupt)
chip->midi.interrupt(chip, status);
else
snd_emu10k1x_intr_disable(chip, INTE_MIDITXENABLE|INTE_MIDIRXENABLE);
}
// acknowledge the interrupt if necessary
if(status)
outl(status, chip->port+IPR);
if (! status)
return IRQ_NONE;
// snd_printk(KERN_INFO "interrupt %08x\n", status);
// capture interrupt
if (status & (IPR_CAP_0_LOOP | IPR_CAP_0_HALF_LOOP)) {
emu10k1x_voice_t *pvoice = &chip->capture_voice;
if(pvoice->use)
snd_emu10k1x_pcm_interrupt(chip, pvoice);
else
snd_emu10k1x_intr_disable(chip,
INTE_CAP_0_LOOP |
INTE_CAP_0_HALF_LOOP);
}
mask = IPR_CH_0_LOOP|IPR_CH_0_HALF_LOOP;
for (i = 0; i < 3; i++) {
if (status & mask) {
if (pvoice->use)
snd_emu10k1x_pcm_interrupt(chip, pvoice);
else
snd_emu10k1x_intr_disable(chip, mask);
}
pvoice++;
mask <<= 1;
}
if (status & (IPR_MIDITRANSBUFEMPTY|IPR_MIDIRECVBUFEMPTY)) {
if (chip->midi.interrupt)
chip->midi.interrupt(chip, status);
else
snd_emu10k1x_intr_disable(chip, INTE_MIDITXENABLE|INTE_MIDIRXENABLE);
}
// acknowledge the interrupt if necessary
outl(status, chip->port + IPR);
// snd_printk(KERN_INFO "interrupt %08x\n", status);
return IRQ_HANDLED;
}