浏览代码

gpu: ipu-v3: initially clear all interrupts

If we want to stop resetting the IPU in the future, masking all
interrupts before registering the irq handlers will not be enough to
avoid spurious interrupts. We also have to clear them.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Acked-by: Liu Ying <gnuiyl@gmail.com>
Philipp Zabel 9 年之前
父节点
当前提交
a92d81456c
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      drivers/gpu/ipu-v3/ipu-common.c

+ 4 - 1
drivers/gpu/ipu-v3/ipu-common.c

@@ -1286,8 +1286,11 @@ static int ipu_irq_init(struct ipu_soc *ipu)
 		return ret;
 		return ret;
 	}
 	}
 
 
-	for (i = 0; i < IPU_NUM_IRQS; i += 32)
+	/* Mask and clear all interrupts */
+	for (i = 0; i < IPU_NUM_IRQS; i += 32) {
 		ipu_cm_write(ipu, 0, IPU_INT_CTRL(i / 32));
 		ipu_cm_write(ipu, 0, IPU_INT_CTRL(i / 32));
+		ipu_cm_write(ipu, ~unused[i / 32], IPU_INT_STAT(i / 32));
+	}
 
 
 	for (i = 0; i < IPU_NUM_IRQS; i += 32) {
 	for (i = 0; i < IPU_NUM_IRQS; i += 32) {
 		gc = irq_get_domain_generic_chip(ipu->domain, i);
 		gc = irq_get_domain_generic_chip(ipu->domain, i);