diff options
author | Oswald Buddenhagen <oswald.buddenhagen@gmx.de> | 2023-07-10 09:59:55 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2023-07-10 17:56:59 +0300 |
commit | fbb64eedf5a3a98071ee75808cfc1367d1e75783 (patch) | |
tree | ce5b66828d053708c24daf9e13a4de80cc434a99 /sound/pci/emu10k1/irq.c | |
parent | 7d43f51e4046c49230dea0d4f991c4cd1759327f (diff) | |
download | linux-fbb64eedf5a3a98071ee75808cfc1367d1e75783.tar.xz |
ALSA: emu10k1: make E-MU dock monitoring interrupt-driven
... instead of using a one-second polling timer.
Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230710065956.1246364-1-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/emu10k1/irq.c')
-rw-r--r-- | sound/pci/emu10k1/irq.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/pci/emu10k1/irq.c b/sound/pci/emu10k1/irq.c index a813ef8c2f8d..8573248dd799 100644 --- a/sound/pci/emu10k1/irq.c +++ b/sound/pci/emu10k1/irq.c @@ -149,6 +149,13 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id) outl(0, emu->port + INTE2); status &= ~IPR_P16V; } + if (status & IPR_A_GPIO) { + if (emu->gpio_interrupt) + emu->gpio_interrupt(emu); + else + snd_emu10k1_intr_disable(emu, INTE_A_GPIOENABLE); + status &= ~IPR_A_GPIO; + } if (status) { dev_err(emu->card->dev, |