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>
This commit is contained in:
parent
17e0521750
commit
596a65d152
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue