diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-06-10 07:26:39 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-06-10 07:26:39 +0200 |
commit | 9dea75c70965c240012251dc5845fe0c1a061180 (patch) | |
tree | d4779c1392bb8aa800f0e3cb12af9161e8f217db /sound/pci/oxygen/oxygen_pcm.c | |
parent | 8c3ff3a7fb9730564554bb65d54455e6ce8ad340 (diff) | |
parent | 04f9890df1bad2115665b7027e664aaffa44088d (diff) |
Merge branch 'topic/oxygen' into for-linus
* topic/oxygen:
sound: virtuoso: add Xonar Essence ST support
sound: virtuoso: enable HDAV S/PDIF input
sound: virtuoso: add another DX PCI ID
sound: oxygen: reset DMA when stream is closed
Diffstat (limited to 'sound/pci/oxygen/oxygen_pcm.c')
-rw-r--r-- | sound/pci/oxygen/oxygen_pcm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/pci/oxygen/oxygen_pcm.c b/sound/pci/oxygen/oxygen_pcm.c index c262049961e..3b5ca70c9d4 100644 --- a/sound/pci/oxygen/oxygen_pcm.c +++ b/sound/pci/oxygen/oxygen_pcm.c @@ -487,10 +487,14 @@ static int oxygen_hw_free(struct snd_pcm_substream *substream) { struct oxygen *chip = snd_pcm_substream_chip(substream); unsigned int channel = oxygen_substream_channel(substream); + unsigned int channel_mask = 1 << channel; spin_lock_irq(&chip->reg_lock); - chip->interrupt_mask &= ~(1 << channel); + chip->interrupt_mask &= ~channel_mask; oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, chip->interrupt_mask); + + oxygen_set_bits8(chip, OXYGEN_DMA_FLUSH, channel_mask); + oxygen_clear_bits8(chip, OXYGEN_DMA_FLUSH, channel_mask); spin_unlock_irq(&chip->reg_lock); return snd_pcm_lib_free_pages(substream); |