summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.ninka.net>2003-04-20 10:04:40 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2003-04-20 10:04:40 -0700
commitd466e157356d5229ac86cf8d14cd5992570a04ec (patch)
tree778222a5bc3fe262b35b9abb5c175393ec0be4e2
parentdcd887b60defec939f06c27da452bc90ab122325 (diff)
[SOUND PCI]: Update several drivers for irqreturn_t.
-rw-r--r--include/sound/emu10k1.h3
-rw-r--r--sound/pci/ali5451/ali5451.c9
-rw-r--r--sound/pci/cmipci.c6
-rw-r--r--sound/pci/cs4281.c10
-rw-r--r--sound/pci/cs46xx/cs46xx_lib.c6
-rw-r--r--sound/pci/emu10k1/irq.c4
-rw-r--r--sound/pci/es1938.c6
-rw-r--r--sound/pci/es1968.c8
-rw-r--r--sound/pci/fm801.c6
-rw-r--r--sound/pci/ice1712/ice1712.c4
-rw-r--r--sound/pci/korg1212/korg1212.c8
-rw-r--r--sound/pci/maestro3.c8
-rw-r--r--sound/pci/sonicvibes.c8
-rw-r--r--sound/pci/ymfpci/ymfpci_main.c4
14 files changed, 58 insertions, 32 deletions
diff --git a/include/sound/emu10k1.h b/include/sound/emu10k1.h
index 4161dfd1f2b3..73b0b3935275 100644
--- a/include/sound/emu10k1.h
+++ b/include/sound/emu10k1.h
@@ -30,6 +30,7 @@
#include <sound/hwdep.h>
#include <sound/ac97_codec.h>
#include <sound/util_mem.h>
+#include <linux/interrupt.h>
#include <asm/io.h>
#ifndef PCI_VENDOR_ID_CREATIVE
@@ -1014,7 +1015,7 @@ int snd_emu10k1_fx8010_pcm(emu10k1_t * emu, int device, snd_pcm_t ** rpcm);
int snd_emu10k1_mixer(emu10k1_t * emu);
int snd_emu10k1_fx8010_new(emu10k1_t *emu, int device, snd_hwdep_t ** rhwdep);
-void snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs);
/* initialization */
void snd_emu10k1_voice_init(emu10k1_t * emu, int voice);
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c
index b9c340b45c29..4fd0f86b73c0 100644
--- a/sound/pci/ali5451/ali5451.c
+++ b/sound/pci/ali5451/ali5451.c
@@ -1032,15 +1032,16 @@ static void snd_ali_interrupt(ali_t * codec)
}
-static void snd_ali_card_interrupt(int irq,
- void *dev_id,
- struct pt_regs *regs)
+static irqreturn_t snd_ali_card_interrupt(int irq,
+ void *dev_id,
+ struct pt_regs *regs)
{
ali_t *codec = snd_magic_cast(ali_t, dev_id, return);
if (codec == NULL)
- return;
+ return IRQ_NONE;
snd_ali_interrupt(codec);
+ return IRQ_HANDLED;
}
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index bbf17e0a3f71..88da26435398 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -1640,7 +1640,7 @@ static int snd_cmipci_capture_spdif_hw_free(snd_pcm_substream_t *subs)
/*
* interrupt handler
*/
-static void snd_cmipci_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_cmipci_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
cmipci_t *cm = snd_magic_cast(cmipci_t, dev_id, return);
unsigned int status, mask = 0;
@@ -1648,7 +1648,7 @@ static void snd_cmipci_interrupt(int irq, void *dev_id, struct pt_regs *regs)
/* fastpath out, to ease interrupt sharing */
status = snd_cmipci_read(cm, CM_REG_INT_STATUS);
if (!(status & CM_INTR))
- return;
+ return IRQ_NONE;
/* acknowledge interrupt */
spin_lock(&cm->reg_lock);
@@ -1669,6 +1669,8 @@ static void snd_cmipci_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if ((status & CM_CHINT1) && cm->channel[1].running)
snd_pcm_period_elapsed(cm->channel[1].substream);
}
+
+ return IRQ_HANDLED;
}
/*
diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c
index 6b3be4891d57..8e8993982e17 100644
--- a/sound/pci/cs4281.c
+++ b/sound/pci/cs4281.c
@@ -511,7 +511,7 @@ struct snd_cs4281 {
};
-static void snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs);
static struct pci_device_id snd_cs4281_ids[] __devinitdata = {
{ 0x1013, 0x6005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4281 */
@@ -1883,18 +1883,18 @@ static int __devinit snd_cs4281_midi(cs4281_t * chip, int device, snd_rawmidi_t
* Interrupt handler
*/
-static void snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
cs4281_t *chip = snd_magic_cast(cs4281_t, dev_id, return);
unsigned int status, dma, val;
cs4281_dma_t *cdma;
if (chip == NULL)
- return;
+ return IRQ_NONE;
status = snd_cs4281_peekBA0(chip, BA0_HISR);
if ((status & 0x7fffffff) == 0) {
snd_cs4281_pokeBA0(chip, BA0_HICR, BA0_HICR_EOI);
- return;
+ return IRQ_NONE;
}
if (status & (BA0_HISR_DMA(0)|BA0_HISR_DMA(1)|BA0_HISR_DMA(2)|BA0_HISR_DMA(3))) {
@@ -1949,6 +1949,8 @@ static void snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs)
/* EOI to the PCI part... reenables interrupts */
snd_cs4281_pokeBA0(chip, BA0_HICR, BA0_HICR_EOI);
+
+ return IRQ_HANDLED;
}
diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
index 6f1a5618bc9b..9a14be15cfa1 100644
--- a/sound/pci/cs46xx/cs46xx_lib.c
+++ b/sound/pci/cs46xx/cs46xx_lib.c
@@ -1217,7 +1217,7 @@ static int snd_cs46xx_capture_prepare(snd_pcm_substream_t * substream)
return 0;
}
-static void snd_cs46xx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_cs46xx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
cs46xx_t *chip = snd_magic_cast(cs46xx_t, dev_id, return);
u32 status1;
@@ -1234,7 +1234,7 @@ static void snd_cs46xx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
status1 = snd_cs46xx_peekBA0(chip, BA0_HISR);
if ((status1 & 0x7fffffff) == 0) {
snd_cs46xx_pokeBA0(chip, BA0_HICR, HICR_CHGM | HICR_IEV);
- return;
+ return IRQ_NONE;
}
#ifdef CONFIG_SND_CS46XX_NEW_DSP
@@ -1305,6 +1305,8 @@ static void snd_cs46xx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
* EOI to the PCI part....reenables interrupts
*/
snd_cs46xx_pokeBA0(chip, BA0_HICR, HICR_CHGM | HICR_IEV);
+
+ return IRQ_HANDLED;
}
static snd_pcm_hardware_t snd_cs46xx_playback =
diff --git a/sound/pci/emu10k1/irq.c b/sound/pci/emu10k1/irq.c
index 00c5b0798041..d880f8c415c1 100644
--- a/sound/pci/emu10k1/irq.c
+++ b/sound/pci/emu10k1/irq.c
@@ -30,7 +30,7 @@
#include <sound/core.h>
#include <sound/emu10k1.h>
-void snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
emu10k1_t *emu = snd_magic_cast(emu10k1_t, dev_id, return);
unsigned int status;
@@ -145,4 +145,6 @@ void snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs)
outl(IPR_FXDSP, emu->port + IPR);
}
}
+
+ return IRQ_HANDLED;
}
diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c
index 5cf49ce8db43..071e7c002b25 100644
--- a/sound/pci/es1938.c
+++ b/sound/pci/es1938.c
@@ -249,7 +249,7 @@ struct _snd_es1938 {
#endif
};
-static void snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs);
static struct pci_device_id snd_es1938_ids[] __devinitdata = {
{ 0x125d, 0x1969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Solo-1 */
@@ -1490,7 +1490,7 @@ static int __devinit snd_es1938_create(snd_card_t * card,
/* --------------------------------------------------------------------
* Interrupt handler
* -------------------------------------------------------------------- */
-static void snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
es1938_t *chip = snd_magic_cast(es1938_t, dev_id, return);
unsigned char status, audiostatus;
@@ -1549,6 +1549,8 @@ static void snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (chip->rmidi)
snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs);
}
+
+ return IRQ_HANDLED;
}
#define ES1938_DMA_SIZE 64
diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c
index 885e1cc21d5a..7b8a617381ca 100644
--- a/sound/pci/es1968.c
+++ b/sound/pci/es1968.c
@@ -600,7 +600,7 @@ struct snd_es1968 {
#endif
};
-static void snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs);
static struct pci_device_id snd_es1968_ids[] __devinitdata = {
/* Maestro 1 */
@@ -2009,13 +2009,13 @@ static void es1968_update_hw_volume(unsigned long private_data)
/*
* interrupt handler
*/
-static void snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
es1968_t *chip = snd_magic_cast(es1968_t, dev_id, return);
u32 event;
if (!(event = inb(chip->io_port + 0x1A)))
- return;
+ return IRQ_NONE;
outw(inw(chip->io_port + 4) & 1, chip->io_port + 4);
@@ -2041,6 +2041,8 @@ static void snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs)
}
spin_unlock(&chip->substream_lock);
}
+
+ return IRQ_HANDLED;
}
/*
diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c
index 948aa8793be8..5109777f0056 100644
--- a/sound/pci/fm801.c
+++ b/sound/pci/fm801.c
@@ -481,7 +481,7 @@ static snd_pcm_uframes_t snd_fm801_capture_pointer(snd_pcm_substream_t * substre
return bytes_to_frames(substream->runtime, ptr);
}
-static void snd_fm801_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_fm801_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
fm801_t *chip = snd_magic_cast(fm801_t, dev_id, return);
unsigned short status;
@@ -490,7 +490,7 @@ static void snd_fm801_interrupt(int irq, void *dev_id, struct pt_regs *regs)
status = inw(FM801_REG(chip, IRQ_STATUS));
status &= FM801_IRQ_PLAYBACK|FM801_IRQ_CAPTURE|FM801_IRQ_MPU|FM801_IRQ_VOLUME;
if (! status)
- return;
+ return IRQ_NONE;
/* ack first */
outw(status, FM801_REG(chip, IRQ_STATUS));
if (chip->pcm && (status & FM801_IRQ_PLAYBACK) && chip->playback_substream) {
@@ -525,6 +525,8 @@ static void snd_fm801_interrupt(int irq, void *dev_id, struct pt_regs *regs)
snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs);
if (status & FM801_IRQ_VOLUME)
;/* TODO */
+
+ return IRQ_HANDLED;
}
static snd_pcm_hardware_t snd_fm801_playback =
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
index 2f1a5951eb15..ed246ed5a8ed 100644
--- a/sound/pci/ice1712/ice1712.c
+++ b/sound/pci/ice1712/ice1712.c
@@ -398,7 +398,7 @@ int __devinit snd_ice1712_init_cs8427(ice1712_t *ice, int addr)
* Interrupt handler
*/
-static void snd_ice1712_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_ice1712_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
ice1712_t *ice = snd_magic_cast(ice1712_t, dev_id, return);
unsigned char status;
@@ -462,6 +462,8 @@ static void snd_ice1712_interrupt(int irq, void *dev_id, struct pt_regs *regs)
outb(ICE1712_IRQ_CONPBK, ICEREG(ice, IRQSTAT));
}
}
+
+ return IRQ_HANDLED;
}
diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c
index c00f21644969..dc8e50cb36ca 100644
--- a/sound/pci/korg1212/korg1212.c
+++ b/sound/pci/korg1212/korg1212.c
@@ -1133,18 +1133,18 @@ static void snd_korg1212_OnDSPDownloadComplete(korg1212_t *korg1212)
snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE);
}
-static void snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
u32 doorbellValue;
korg1212_t *korg1212 = snd_magic_cast(korg1212_t, dev_id, return);
if(irq != korg1212->irq)
- return;
+ return IRQ_NONE;
doorbellValue = readl(korg1212->inDoorbellPtr);
if (!doorbellValue)
- return;
+ return IRQ_NONE;
spin_lock(&korg1212->lock);
@@ -1218,6 +1218,8 @@ static void snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs)
korg1212->inIRQ--;
spin_unlock(&korg1212->lock);
+
+ return IRQ_HANDLED;
}
static int snd_korg1212_downloadDSPCode(korg1212_t *korg1212)
diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c
index 670151d213f2..8ee250caa5a9 100644
--- a/sound/pci/maestro3.c
+++ b/sound/pci/maestro3.c
@@ -1549,7 +1549,7 @@ static void snd_m3_update_ptr(m3_t *chip, m3_dma_t *s)
}
}
-static void
+static irqreturn_t
snd_m3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
m3_t *chip = snd_magic_cast(m3_t, dev_id, );
@@ -1559,13 +1559,13 @@ snd_m3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
status = inb(chip->iobase + 0x1A);
if (status == 0xff)
- return;
+ return IRQ_NONE;
/* presumably acking the ints? */
outw(status, chip->iobase + 0x1A);
/*if (in_suspend)
- return;*/
+ return IRQ_NONE;*/
/*
* ack an assp int if its running
@@ -1592,6 +1592,8 @@ snd_m3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
/* XXX is this needed? */
if (status & 0x40)
outb(0x40, chip->iobase+0x1A);
+
+ return IRQ_HANDLED;
}
diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c
index 2dfff68d791e..c507b8e1d011 100644
--- a/sound/pci/sonicvibes.c
+++ b/sound/pci/sonicvibes.c
@@ -596,18 +596,18 @@ static int snd_sonicvibes_trigger(sonicvibes_t * sonic, int what, int cmd)
return result;
}
-static void snd_sonicvibes_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_sonicvibes_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
sonicvibes_t *sonic = snd_magic_cast(sonicvibes_t, dev_id, return);
unsigned char status;
status = inb(SV_REG(sonic, STATUS));
if (!(status & (SV_DMAA_IRQ | SV_DMAC_IRQ | SV_MIDI_IRQ)))
- return;
+ return IRQ_NONE;
if (status == 0xff) { /* failure */
outb(sonic->irqmask = ~0, SV_REG(sonic, IRQMASK));
snd_printk("IRQ failure - interrupts disabled!!\n");
- return;
+ return IRQ_HANDLED;
}
if (sonic->pcm) {
if (status & SV_DMAA_IRQ)
@@ -654,6 +654,8 @@ static void snd_sonicvibes_interrupt(int irq, void *dev_id, struct pt_regs *regs
snd_ctl_notify(sonic->card, SNDRV_CTL_EVENT_MASK_VALUE, &sonic->master_mute->id);
snd_ctl_notify(sonic->card, SNDRV_CTL_EVENT_MASK_VALUE, &sonic->master_volume->id);
}
+
+ return IRQ_HANDLED;
}
/*
diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
index 42dd52b2f081..0aac9e2b219b 100644
--- a/sound/pci/ymfpci/ymfpci_main.c
+++ b/sound/pci/ymfpci/ymfpci_main.c
@@ -741,7 +741,7 @@ static void snd_ymfpci_irq_wait(ymfpci_t *chip)
}
}
-static void snd_ymfpci_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
ymfpci_t *chip = snd_magic_cast(ymfpci_t, dev_id, return);
u32 status, nvoice, mode;
@@ -787,6 +787,8 @@ static void snd_ymfpci_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (chip->rawmidi)
snd_mpu401_uart_interrupt(irq, chip->rawmidi->private_data, regs);
+
+ return IRQ_HANDLED;
}
static snd_pcm_hardware_t snd_ymfpci_playback =