ALSA: oxygen: Support PCM sync_stop
authorTakashi Iwai <tiwai@suse.de>
Tue, 10 Dec 2019 06:34:28 +0000 (07:34 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 11 Dec 2019 06:25:50 +0000 (07:25 +0100)
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler.  Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.

Link: https://lore.kernel.org/r/20191210063454.31603-30-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/oxygen_lib.c

index ed65d9fd49384d47f4332c3428fbc137cef48c68..afc6dd329c09f5f73a111f1ccef7fabf36546a8e 100644 (file)
@@ -661,6 +661,7 @@ int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
                goto err_card;
        }
        chip->irq = pci->irq;
+       card->sync_irq = chip->irq;
 
        strcpy(card->driver, chip->model.chip);
        strcpy(card->shortname, chip->model.shortname);
@@ -743,7 +744,6 @@ static int oxygen_pci_suspend(struct device *dev)
        oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, 0);
        spin_unlock_irq(&chip->reg_lock);
 
-       synchronize_irq(chip->irq);
        flush_work(&chip->spdif_input_bits_work);
        flush_work(&chip->gpio_work);
        chip->interrupt_mask = saved_interrupt_mask;