// if entry has been processed...\r
if (cnt == 0) {\r
// remove entry from FIFO\r
- if (vf->fifo_ql)\r
+ if (vf->fifo_ql) {\r
+ vf->fifo_queue[vf->fifo_qx] = 0;\r
vf->fifo_qx = (vf->fifo_qx+1) & 7, vf->fifo_ql --;\r
+ }\r
// start processing for next entry if there is one\r
if (vf->fifo_ql) {\r
b = vf->fifo_queue[vf->fifo_qx] & FQ_BYTE;\r
if (count && vf->fifo_ql < 8) {\r
// determine queue position for entry\r
int x = (vf->fifo_qx + vf->fifo_ql - 1) & 7;\r
- if (unlikely(vf->fifo_ql && (vf->fifo_queue[x] & FQ_BGDMA))) {\r
+ if (unlikely(vf->fifo_queue[x] & FQ_BGDMA)) {\r
// CPU FIFO writes have priority over a background DMA Fill/Copy\r
// XXX if interrupting a DMA fill, fill data changes\r
if (x == vf->fifo_qx) { // overtaking to queue head?\r