diff options
author | 2009-06-10 07:26:21 +0200 | |
---|---|---|
committer | 2009-06-10 07:26:21 +0200 | |
commit | 1d479f89ec9f29df220bfa1af297ab2f35be1e30 (patch) | |
tree | 97a3c94163e0e1b3f9239300782a86677b2fab62 /sound/pci | |
parent | Merge branch 'topic/asoc' into for-linus (diff) | |
parent | ALSA: au88x0: fix wrong period_elapsed() call (diff) | |
download | linux-1d479f89ec9f29df220bfa1af297ab2f35be1e30.tar.gz linux-1d479f89ec9f29df220bfa1af297ab2f35be1e30.tar.bz2 linux-1d479f89ec9f29df220bfa1af297ab2f35be1e30.zip |
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); |