{
unsigned int i;
if (descriptor.arg1 > PEXOR_MEMWRITE_SIZE) {
- pexor_msg(KERN_ERR "ERROR> REG_WRITE_MEM: invalid size%x\n", command);
+ pexor_msg(KERN_ERR "ERROR> REG_WRITE_MEM: invalid size: %d shoud be < %d\n",
+ descriptor.arg1, PEXOR_MEMWRITE_SIZE);
status = -EFAULT;
goto OUT_IOCTL;
}
/* wait for dma complete */
for (loops = 0; loops < PEXOR_DMA_MAXPOLLS * 100; loops++) {
dmastat = ioread32(priv->pexor.dma_control_stat);
+ //pexor_msg(KERN_ERR "DMA: Status: is: 0x%08x %d\n", dmastat, loops);
mb();
if ((dmastat & PEXOR_TRB_BIT_DMA_FINISHED) != 0) {
/* DMA is completed */
dmaSize = dmastat >> 8;
+ if (dmaSize == 0) {
+ pexor_msg(KERN_ERR "DMA: Zero Length Error, Status: 0x%08x\n", dmastat);
+ }
break;
}
if ((dmastat & PEXOR_TRB_BIT_DMA_MORE) != 0) {
/* Card needs more DMA-Buffers */
+ //pexor_msg(KERN_ERR "DMA: More Status: 0x%08x\n", dmastat);
break;
}
if ((dmastat & PEXOR_TRB_BIT_DMA_TIMEOUT) != 0) {
/* TRBNet Timeout */
+ //pexor_msg(KERN_ERR "DMA: Timeout Status: 0x%08x\n", dmastat);
pexor_msg(KERN_ERR
"ERROR> wait_dma_complete: TRBNet Timeout Bit set "
"Status: 0x%08x\n",
}
status = dmaSize;
- pexor_msg(KERN_ERR "DMA: dmaSize: %d\n", dmaSize);
- //#ifdef PEXOR_TRB_DEBUG
-#if 1
+
+#ifdef PEXOR_TRB_DEBUG
{
int i;
pexor_msg(KERN_ERR "DMA: dmaSize: %d\n", dmaSize);
}
}
#endif
- OUT_DMA:
- /* reset DMA */
- iowrite32(PEXOR_TRB_DMA_RESET, priv->pexor.dma_control_stat);
-
+
} else {
/* do FIFO transfer to DMA Buffer */
pexor_dbg(KERN_ERR "Start FIFO copy to DMA buffer\n");
}
}
+OUT_DMA:
+
OUT_IOCTL:
spin_unlock((&(priv->dma_lock)));
return status;