diff options
author | Takashi Iwai <tiwai@suse.de> | 2020-10-12 08:51:00 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2020-10-12 08:51:00 +0200 |
commit | 4dda3a19141b44102860b46e307153ed8b32ea7b (patch) | |
tree | f2326ed10e594f7a7979cb45c77e1b8a52e10090 /sound/pci/asihpi/hpioctl.c | |
parent | ALSA: hda/realtek - The front Mic on a HP machine doesn't work (diff) | |
parent | ALSA: hda/i915 - fix list corruption with concurrent probes (diff) | |
download | linux-4dda3a19141b44102860b46e307153ed8b32ea7b.tar.xz linux-4dda3a19141b44102860b46e307153ed8b32ea7b.zip |
Merge branch 'for-next' into for-linus
Diffstat (limited to 'sound/pci/asihpi/hpioctl.c')
-rw-r--r-- | sound/pci/asihpi/hpioctl.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/sound/pci/asihpi/hpioctl.c b/sound/pci/asihpi/hpioctl.c index 9790f5108a16..bb31b7fe867d 100644 --- a/sound/pci/asihpi/hpioctl.c +++ b/sound/pci/asihpi/hpioctl.c @@ -329,11 +329,20 @@ static irqreturn_t asihpi_isr(int irq, void *dev_id) asihpi_irq_count, a->adapter->type, a->adapter->index); */ if (a->interrupt_callback) - a->interrupt_callback(a); + return IRQ_WAKE_THREAD; return IRQ_HANDLED; } +static irqreturn_t asihpi_isr_thread(int irq, void *dev_id) +{ + struct hpi_adapter *a = dev_id; + + if (a->interrupt_callback) + a->interrupt_callback(a); + return IRQ_HANDLED; +} + int asihpi_adapter_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) { @@ -478,8 +487,9 @@ int asihpi_adapter_probe(struct pci_dev *pci_dev, } /* Note: request_irq calls asihpi_isr here */ - if (request_irq(pci_dev->irq, asihpi_isr, IRQF_SHARED, - "asihpi", &adapters[adapter_index])) { + if (request_threaded_irq(pci_dev->irq, asihpi_isr, + asihpi_isr_thread, IRQF_SHARED, + "asihpi", &adapters[adapter_index])) { dev_err(&pci_dev->dev, "request_irq(%d) failed\n", pci_dev->irq); goto err; |