[Sound-open-firmware] [PATCH] cnl: gp-dma: fix gp-dma dead loop issue

Rander Wang rander.wang at intel.com
Wed Feb 28 09:52:35 CET 2018


In irq function, two dma would be checked which one is
the interrupted one, so get it after check.

Signed-off-by: Rander Wang <rander.wang at intel.com>
---
 src/drivers/dw-dma.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/drivers/dw-dma.c b/src/drivers/dw-dma.c
index be19e12..6fd46e0 100644
--- a/src/drivers/dw-dma.c
+++ b/src/drivers/dw-dma.c
@@ -1034,7 +1034,7 @@ static int dw_dma_probe(struct dma *dma)
 static void dw_dma_irq_handler(void *data)
 {
 	struct dma *dma = (struct dma *)data;
-	struct dma_pdata *p = dma_get_drvdata(dma);
+	struct dma_pdata *p;
 	struct dma_sg_elem next;
 	uint32_t status_tfr = 0;
 	uint32_t status_block = 0;
@@ -1058,6 +1058,7 @@ static void dw_dma_irq_handler(void *data)
 	}
 
 	tracev_dma("DIr");
+	p = dma_get_drvdata(dma);
 
 	/* get the source of our IRQ. */
 	status_block = dw_read(dma, DW_STATUS_BLOCK);
-- 
2.14.1



More information about the Sound-open-firmware mailing list