Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: oxygen: support for period wakeup disabling

Allow disabling period wakeup interrupts for all PCM streams.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Clemens Ladisch and committed by
Takashi Iwai
075140ea 7bb8fb70

+10 -4
+10 -4
sound/pci/oxygen/oxygen_pcm.c
··· 39 39 SNDRV_PCM_INFO_MMAP_VALID | 40 40 SNDRV_PCM_INFO_INTERLEAVED | 41 41 SNDRV_PCM_INFO_PAUSE | 42 - SNDRV_PCM_INFO_SYNC_START, 42 + SNDRV_PCM_INFO_SYNC_START | 43 + SNDRV_PCM_INFO_NO_PERIOD_WAKEUP, 43 44 .formats = SNDRV_PCM_FMTBIT_S16_LE | 44 45 SNDRV_PCM_FMTBIT_S32_LE, 45 46 .rates = SNDRV_PCM_RATE_32000 | ··· 66 65 SNDRV_PCM_INFO_MMAP_VALID | 67 66 SNDRV_PCM_INFO_INTERLEAVED | 68 67 SNDRV_PCM_INFO_PAUSE | 69 - SNDRV_PCM_INFO_SYNC_START, 68 + SNDRV_PCM_INFO_SYNC_START | 69 + SNDRV_PCM_INFO_NO_PERIOD_WAKEUP, 70 70 .formats = SNDRV_PCM_FMTBIT_S16_LE | 71 71 SNDRV_PCM_FMTBIT_S32_LE, 72 72 .rates = SNDRV_PCM_RATE_32000 | ··· 93 91 SNDRV_PCM_INFO_MMAP_VALID | 94 92 SNDRV_PCM_INFO_INTERLEAVED | 95 93 SNDRV_PCM_INFO_PAUSE | 96 - SNDRV_PCM_INFO_SYNC_START, 94 + SNDRV_PCM_INFO_SYNC_START | 95 + SNDRV_PCM_INFO_NO_PERIOD_WAKEUP, 97 96 .formats = SNDRV_PCM_FMTBIT_S16_LE, 98 97 .rates = SNDRV_PCM_RATE_48000, 99 98 .rate_min = 48000, ··· 533 530 oxygen_set_bits8(chip, OXYGEN_DMA_FLUSH, channel_mask); 534 531 oxygen_clear_bits8(chip, OXYGEN_DMA_FLUSH, channel_mask); 535 532 536 - chip->interrupt_mask |= channel_mask; 533 + if (substream->runtime->no_period_wakeup) 534 + chip->interrupt_mask &= ~channel_mask; 535 + else 536 + chip->interrupt_mask |= channel_mask; 537 537 oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, chip->interrupt_mask); 538 538 spin_unlock_irq(&chip->reg_lock); 539 539 return 0;