Browse Source

gpu: ipu-v3: Reset IPU before activating IRQ

If we don't come out of a clean reset, make sure no IRQ is fired before
everything is setup by resetting the IPU before activating the interrupt
handlers.

Signed-off-by: David Jander <david@protonic.nl>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
David Jander 10 năm trước cách đây
mục cha
commit
596a65d152
1 tập tin đã thay đổi với 5 bổ sung5 xóa
  1. 5 5
      drivers/gpu/ipu-v3/ipu-common.c

+ 5 - 5
drivers/gpu/ipu-v3/ipu-common.c

@@ -1292,10 +1292,6 @@ static int ipu_probe(struct platform_device *pdev)
 	ipu->irq_sync = irq_sync;
 	ipu->irq_sync = irq_sync;
 	ipu->irq_err = irq_err;
 	ipu->irq_err = irq_err;
 
 
-	ret = ipu_irq_init(ipu);
-	if (ret)
-		goto out_failed_irq;
-
 	ret = device_reset(&pdev->dev);
 	ret = device_reset(&pdev->dev);
 	if (ret) {
 	if (ret) {
 		dev_err(&pdev->dev, "failed to reset: %d\n", ret);
 		dev_err(&pdev->dev, "failed to reset: %d\n", ret);
@@ -1305,6 +1301,10 @@ static int ipu_probe(struct platform_device *pdev)
 	if (ret)
 	if (ret)
 		goto out_failed_reset;
 		goto out_failed_reset;
 
 
+	ret = ipu_irq_init(ipu);
+	if (ret)
+		goto out_failed_irq;
+
 	/* Set MCU_T to divide MCU access window into 2 */
 	/* Set MCU_T to divide MCU access window into 2 */
 	ipu_cm_write(ipu, 0x00400000L | (IPU_MCU_T_DEFAULT << 18),
 	ipu_cm_write(ipu, 0x00400000L | (IPU_MCU_T_DEFAULT << 18),
 			IPU_DISP_GEN);
 			IPU_DISP_GEN);
@@ -1327,9 +1327,9 @@ static int ipu_probe(struct platform_device *pdev)
 failed_add_clients:
 failed_add_clients:
 	ipu_submodules_exit(ipu);
 	ipu_submodules_exit(ipu);
 failed_submodules_init:
 failed_submodules_init:
-out_failed_reset:
 	ipu_irq_exit(ipu);
 	ipu_irq_exit(ipu);
 out_failed_irq:
 out_failed_irq:
+out_failed_reset:
 	clk_disable_unprepare(ipu->clk);
 	clk_disable_unprepare(ipu->clk);
 	return ret;
 	return ret;
 }
 }