for (sg_ctr = 0; sg_ctr < priv->dma.nr_sglist; sg_ctr++) {
unsigned int loops = 0;
- mb();
/* sync current sg-entry to Device */
dma_sync_single_for_device(priv->class_dev,
sg_dma_address(&priv->dma.sglist[sg_ctr]),
sg_dma_len(&priv->dma.sglist[sg_ctr]),
DMA_FROM_DEVICE);
-
+ mb();
+
iowrite32(sg_dma_address(&priv->dma.sglist[sg_ctr]),
priv->pexor.dma_dest);
iowrite32(sg_dma_len(&priv->dma.sglist[sg_ctr]) / 4,
goto OUT_IOCTL;
}
}
+
+ /* sync current sg-entry to CPU */
+ dma_sync_single_for_cpu(priv->class_dev,
+ sg_dma_address(&priv->dma.sglist[sg_ctr]),
+ sg_dma_len(&priv->dma.sglist[sg_ctr]),
+ DMA_FROM_DEVICE);
+ mb();
+
/* Check for kernel timeout */
if (loops == PEXOR_DMA_MAXPOLLS) {
pexor_msg(KERN_ERR
goto OUT_IOCTL;
}
- /* sync current sg-entry to CPU */
- dma_sync_single_for_cpu(priv->class_dev,
- sg_dma_address(&priv->dma.sglist[sg_ctr]),
- sg_dma_len(&priv->dma.sglist[sg_ctr]),
- DMA_FROM_DEVICE);
- mb();
/* Check status: do we need another dma for data */
if (dmaSize > 0) {