diff options
Diffstat (limited to 'drivers/rapidio/devices/tsi721.c')
-rw-r--r-- | drivers/rapidio/devices/tsi721.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/rapidio/devices/tsi721.c b/drivers/rapidio/devices/tsi721.c index 722246cf20ab..c0d6a049cbd6 100644 --- a/drivers/rapidio/devices/tsi721.c +++ b/drivers/rapidio/devices/tsi721.c | |||
@@ -435,6 +435,9 @@ static void tsi721_db_dpc(struct work_struct *work) | |||
435 | " info %4.4x\n", DBELL_SID(idb.bytes), | 435 | " info %4.4x\n", DBELL_SID(idb.bytes), |
436 | DBELL_TID(idb.bytes), DBELL_INF(idb.bytes)); | 436 | DBELL_TID(idb.bytes), DBELL_INF(idb.bytes)); |
437 | } | 437 | } |
438 | |||
439 | wr_ptr = ioread32(priv->regs + | ||
440 | TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE; | ||
438 | } | 441 | } |
439 | 442 | ||
440 | iowrite32(rd_ptr & (IDB_QSIZE - 1), | 443 | iowrite32(rd_ptr & (IDB_QSIZE - 1), |
@@ -445,6 +448,10 @@ static void tsi721_db_dpc(struct work_struct *work) | |||
445 | regval |= TSI721_SR_CHINT_IDBQRCV; | 448 | regval |= TSI721_SR_CHINT_IDBQRCV; |
446 | iowrite32(regval, | 449 | iowrite32(regval, |
447 | priv->regs + TSI721_SR_CHINTE(IDB_QUEUE)); | 450 | priv->regs + TSI721_SR_CHINTE(IDB_QUEUE)); |
451 | |||
452 | wr_ptr = ioread32(priv->regs + TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE; | ||
453 | if (wr_ptr != rd_ptr) | ||
454 | schedule_work(&priv->idb_work); | ||
448 | } | 455 | } |
449 | 456 | ||
450 | /** | 457 | /** |