diff options
Diffstat (limited to 'drivers/dma/k3dma.c')
-rw-r--r-- | drivers/dma/k3dma.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/dma/k3dma.c b/drivers/dma/k3dma.c index 84ddea449ef4..9d3d4b94b84a 100644 --- a/drivers/dma/k3dma.c +++ b/drivers/dma/k3dma.c @@ -62,7 +62,7 @@ struct k3_desc_hw { u32 config; } __aligned(32); -#define DMA_MAX_SIZE 0x1fff +#define DMA_MAX_SIZE 0x1ffc #define LLI_SIZE 0x2000 #define LLI_MAX_NUM (LLI_SIZE / sizeof(struct k3_desc_hw)) @@ -178,7 +178,7 @@ static irqreturn_t k3_dma_int_handler(int irq, void *dev_id) u32 tc1 = readl_relaxed(d->base + INT_TC1); u32 err1 = readl_relaxed(d->base + INT_ERR1); u32 err2 = readl_relaxed(d->base + INT_ERR2); - u32 i, irq_num = 0; + u32 i, irq_chan = 0; while (stat) { i = __ffs(stat); @@ -187,17 +187,17 @@ static irqreturn_t k3_dma_int_handler(int irq, void *dev_id) p = &d->phy[i]; p->ds_done = p->ds_run; vchan_cookie_complete(&p->ds_run->vd); - irq_num++; + irq_chan |= BIT(i); } if (unlikely((err1 & BIT(i)) || (err2 & BIT(i)))) dev_warn(d->slave.dev, "DMA ERR\n"); } - writel_relaxed(tc1, d->base + INT_TC1_RAW); + writel_relaxed(irq_chan, d->base + INT_TC1_RAW); writel_relaxed(err1, d->base + INT_ERR1_RAW); writel_relaxed(err2, d->base + INT_ERR2_RAW); - if (irq_num) { + if (irq_chan) { tasklet_schedule(&d->task); return IRQ_HANDLED; } else |