|
@@ -410,13 +410,14 @@ static void tsi721_db_dpc(struct work_struct *work)
|
|
|
*/
|
|
|
mport = priv->mport;
|
|
|
|
|
|
- wr_ptr = ioread32(priv->regs + TSI721_IDQ_WP(IDB_QUEUE));
|
|
|
- rd_ptr = ioread32(priv->regs + TSI721_IDQ_RP(IDB_QUEUE));
|
|
|
+ wr_ptr = ioread32(priv->regs + TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE;
|
|
|
+ rd_ptr = ioread32(priv->regs + TSI721_IDQ_RP(IDB_QUEUE)) % IDB_QSIZE;
|
|
|
|
|
|
while (wr_ptr != rd_ptr) {
|
|
|
idb_entry = (u64 *)(priv->idb_base +
|
|
|
(TSI721_IDB_ENTRY_SIZE * rd_ptr));
|
|
|
rd_ptr++;
|
|
|
+ rd_ptr %= IDB_QSIZE;
|
|
|
idb.msg = *idb_entry;
|
|
|
*idb_entry = 0;
|
|
|
|