|
@@ -121,6 +121,7 @@ static int tcs_invalidate(struct rsc_drv *drv, int type)
|
|
|
return -EAGAIN;
|
|
|
}
|
|
|
write_tcs_reg_sync(drv, RSC_DRV_CMD_ENABLE, m, 0);
|
|
|
+ write_tcs_reg_sync(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, m, 0);
|
|
|
}
|
|
|
bitmap_zero(tcs->slots, MAX_TCS_SLOTS);
|
|
|
spin_unlock(&tcs->lock);
|
|
@@ -239,6 +240,7 @@ static irqreturn_t tcs_tx_done(int irq, void *p)
|
|
|
skip:
|
|
|
/* Reclaim the TCS */
|
|
|
write_tcs_reg(drv, RSC_DRV_CMD_ENABLE, i, 0);
|
|
|
+ write_tcs_reg(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, i, 0);
|
|
|
write_tcs_reg(drv, RSC_DRV_IRQ_CLEAR, 0, BIT(i));
|
|
|
spin_lock(&drv->lock);
|
|
|
clear_bit(i, drv->tcs_in_use);
|