diff options
| -rw-r--r-- | drivers/soc/fsl/qbman/qman.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c index 52c153cd795a..636f83f781f5 100644 --- a/drivers/soc/fsl/qbman/qman.c +++ b/drivers/soc/fsl/qbman/qman.c | |||
| @@ -1143,18 +1143,19 @@ static void qm_mr_process_task(struct work_struct *work); | |||
| 1143 | static irqreturn_t portal_isr(int irq, void *ptr) | 1143 | static irqreturn_t portal_isr(int irq, void *ptr) |
| 1144 | { | 1144 | { |
| 1145 | struct qman_portal *p = ptr; | 1145 | struct qman_portal *p = ptr; |
| 1146 | |||
| 1147 | u32 clear = QM_DQAVAIL_MASK | p->irq_sources; | ||
| 1148 | u32 is = qm_in(&p->p, QM_REG_ISR) & p->irq_sources; | 1146 | u32 is = qm_in(&p->p, QM_REG_ISR) & p->irq_sources; |
| 1147 | u32 clear = 0; | ||
| 1149 | 1148 | ||
| 1150 | if (unlikely(!is)) | 1149 | if (unlikely(!is)) |
| 1151 | return IRQ_NONE; | 1150 | return IRQ_NONE; |
| 1152 | 1151 | ||
| 1153 | /* DQRR-handling if it's interrupt-driven */ | 1152 | /* DQRR-handling if it's interrupt-driven */ |
| 1154 | if (is & QM_PIRQ_DQRI) | 1153 | if (is & QM_PIRQ_DQRI) { |
| 1155 | __poll_portal_fast(p, QMAN_POLL_LIMIT); | 1154 | __poll_portal_fast(p, QMAN_POLL_LIMIT); |
| 1155 | clear = QM_DQAVAIL_MASK | QM_PIRQ_DQRI; | ||
| 1156 | } | ||
| 1156 | /* Handling of anything else that's interrupt-driven */ | 1157 | /* Handling of anything else that's interrupt-driven */ |
| 1157 | clear |= __poll_portal_slow(p, is); | 1158 | clear |= __poll_portal_slow(p, is) & QM_PIRQ_SLOW; |
| 1158 | qm_out(&p->p, QM_REG_ISR, clear); | 1159 | qm_out(&p->p, QM_REG_ISR, clear); |
| 1159 | return IRQ_HANDLED; | 1160 | return IRQ_HANDLED; |
| 1160 | } | 1161 | } |
