1
0
Fork 0

MLK-22284-2 dmaengine: fsl-edma-v3: check dma description before register touch

Check dma desscription firstly to ignore any unexpected interrupt
after channel terminate, otherwise, still have chance to touch channel
register whose power has been already off.

Signed-off-by: Robin Gong <yibin.gong@nxp.com>
Reviewed-by: S.j. Wang <shengjiu.wang@nxp.com>
(cherry picked from commit fd073e017e317006a4c254ca5ae3ea17b6f32502)
5.4-rM2-2.2.x-imx-squashed
Robin Gong 2019-05-08 00:13:40 +08:00 committed by Dong Aisheng
parent cfe6412faa
commit 7d7fb3da1c
1 changed files with 8 additions and 8 deletions

View File

@ -708,20 +708,20 @@ static irqreturn_t fsl_edma3_tx_handler(int irq, void *dev_id)
unsigned int intr;
void __iomem *base_addr;
base_addr = fsl_chan->membase;
intr = readl(base_addr + EDMA_CH_INT);
if (!intr)
return IRQ_NONE;
writel(1, base_addr + EDMA_CH_INT);
spin_lock(&fsl_chan->vchan.lock);
/* Ignore this interrupt since channel has been disabled already */
if (!fsl_chan->edesc)
goto irq_handled;
base_addr = fsl_chan->membase;
intr = readl(base_addr + EDMA_CH_INT);
if (!intr)
goto irq_handled;
writel(1, base_addr + EDMA_CH_INT);
if (!fsl_chan->edesc->iscyclic) {
fsl_edma3_get_realcnt(fsl_chan);
list_del(&fsl_chan->edesc->vdesc.node);