From 50088003d803f04e536eb09ac2635df35b5c8ae4 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 12 Mar 2019 09:08:10 -0700 Subject: [PATCH] drm/v3d: Update to upstream IRQ code. --- drivers/gpu/drm/v3d/v3d_irq.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) --- a/drivers/gpu/drm/v3d/v3d_irq.c +++ b/drivers/gpu/drm/v3d/v3d_irq.c @@ -168,7 +168,7 @@ v3d_hub_irq(int irq, void *arg) int v3d_irq_init(struct v3d_dev *v3d) { - int ret, core; + int irq1, ret, core; INIT_WORK(&v3d->overflow_mem_work, v3d_overflow_mem_work); @@ -179,24 +179,29 @@ v3d_irq_init(struct v3d_dev *v3d) V3D_CORE_WRITE(core, V3D_CTL_INT_CLR, V3D_CORE_IRQS); V3D_WRITE(V3D_HUB_INT_CLR, V3D_HUB_IRQS); - if (platform_get_irq(v3d->pdev, 1) < 0) { - ret = devm_request_irq(v3d->dev, platform_get_irq(v3d->pdev, 0), + irq1 = platform_get_irq(v3d->pdev, 1); + if (irq1 == -EPROBE_DEFER) + return irq1; + if (irq1 > 0) { + ret = devm_request_irq(v3d->dev, irq1, v3d_irq, IRQF_SHARED, - "v3d", v3d); - v3d->single_irq_line = true; - } else { + "v3d_core0", v3d); + if (ret) + goto fail; ret = devm_request_irq(v3d->dev, platform_get_irq(v3d->pdev, 0), v3d_hub_irq, IRQF_SHARED, "v3d_hub", v3d); if (ret) goto fail; + } else { + v3d->single_irq_line = true; - ret = devm_request_irq(v3d->dev, platform_get_irq(v3d->pdev, 1), + ret = devm_request_irq(v3d->dev, platform_get_irq(v3d->pdev, 0), v3d_irq, IRQF_SHARED, - "v3d_core0", v3d); + "v3d", v3d); + if (ret) + goto fail; } - if (ret) - goto fail; v3d_irq_enable(v3d); return 0;