diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-06-10 09:26:21 +0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-06-10 09:26:21 +0400 |
commit | 1d479f89ec9f29df220bfa1af297ab2f35be1e30 (patch) | |
tree | 97a3c94163e0e1b3f9239300782a86677b2fab62 /sound/pci | |
parent | ba252af8d60f543a2a2c03f5574f64007ae9c2f3 (diff) | |
parent | e9ab33d03eb721a632214c0bbaa18652de88aa2d (diff) | |
download | linux-1d479f89ec9f29df220bfa1af297ab2f35be1e30.tar.xz |
Merge branch 'topic/au88x0' into for-linus
* topic/au88x0:
ALSA: au88x0: fix wrong period_elapsed() call
ALSA: au88x0: fix .pointer callback
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/au88x0/au88x0_core.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c index 3906f5afe27a..23f49f356e0f 100644 --- a/sound/pci/au88x0/au88x0_core.c +++ b/sound/pci/au88x0/au88x0_core.c @@ -1255,8 +1255,8 @@ static int inline vortex_adbdma_getlinearpos(vortex_t * vortex, int adbdma) int temp; temp = hwread(vortex->mmio, VORTEX_ADBDMA_STAT + (adbdma << 2)); - temp = (dma->period_virt * dma->period_bytes) + (temp & POS_MASK); - return (temp); + temp = (dma->period_virt * dma->period_bytes) + (temp & (dma->period_bytes - 1)); + return temp; } static void vortex_adbdma_startfifo(vortex_t * vortex, int adbdma) @@ -1504,8 +1504,7 @@ static int inline vortex_wtdma_getlinearpos(vortex_t * vortex, int wtdma) int temp; temp = hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)); - //temp = (temp & POS_MASK) + (((temp>>WT_SUBBUF_SHIFT) & WT_SUBBUF_MASK)*(dma->cfg0&POS_MASK)); - temp = (temp & POS_MASK) + ((dma->period_virt) * (dma->period_bytes)); + temp = (dma->period_virt * dma->period_bytes) + (temp & (dma->period_bytes - 1)); return temp; } @@ -2441,7 +2440,8 @@ static irqreturn_t vortex_interrupt(int irq, void *dev_id) spin_lock(&vortex->lock); for (i = 0; i < NR_ADB; i++) { if (vortex->dma_adb[i].fifo_status == FIFO_START) { - if (vortex_adbdma_bufshift(vortex, i)) ; + if (!vortex_adbdma_bufshift(vortex, i)) + continue; spin_unlock(&vortex->lock); snd_pcm_period_elapsed(vortex->dma_adb[i]. substream); |