diff options
author | Takashi Iwai <tiwai@suse.de> | 2019-12-10 07:34:16 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2019-12-11 07:25:45 +0100 |
commit | 83720eef264bbfb6fa94b3eeb2671ffd0bd2dde7 (patch) | |
tree | 1c0df0aafc43ee36fece6df72bc73996113e4242 /sound/pci/ens1370.c | |
parent | 66471aa715f0d4207c61e27e6333d6f453df554b (diff) | |
download | lwn-83720eef264bbfb6fa94b3eeb2671ffd0bd2dde7.tar.gz lwn-83720eef264bbfb6fa94b3eeb2671ffd0bd2dde7.zip |
ALSA: ens137x: Support PCM sync_stop
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-18-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/ens1370.c')
-rw-r--r-- | sound/pci/ens1370.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c index f69555c95263..378141aa7c7d 100644 --- a/sound/pci/ens1370.c +++ b/sound/pci/ens1370.c @@ -1888,8 +1888,6 @@ static int snd_ensoniq_free(struct ensoniq *ensoniq) outl(0, ES_REG(ensoniq, CONTROL)); /* switch everything off */ outl(0, ES_REG(ensoniq, SERIAL)); /* clear serial interface */ #endif - if (ensoniq->irq >= 0) - synchronize_irq(ensoniq->irq); pci_set_power_state(ensoniq->pci, PCI_D3hot); __hw_end: #ifdef CHIP1370 @@ -1990,7 +1988,6 @@ static void snd_ensoniq_chip_init(struct ensoniq *ensoniq) outb(ensoniq->uartc = 0x00, ES_REG(ensoniq, UART_CONTROL)); outb(0x00, ES_REG(ensoniq, UART_RES)); outl(ensoniq->cssr, ES_REG(ensoniq, STATUS)); - synchronize_irq(ensoniq->irq); } #ifdef CONFIG_PM_SLEEP @@ -2074,6 +2071,7 @@ static int snd_ensoniq_create(struct snd_card *card, return -EBUSY; } ensoniq->irq = pci->irq; + card->sync_irq = ensoniq->irq; #ifdef CHIP1370 if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, &pci->dev, 16, &ensoniq->dma_bug) < 0) { |