Merge branch 'topic/usb-audio' into for-linus
[pandora-kernel.git] / sound / pci / au88x0 / au88x0_core.c
index 3906f5a..23f49f3 100644 (file)
@@ -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);