Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/exynos/fimc: Use platform_get_irq() to get the interrupt

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypassed the hierarchical setup and messed up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>

authored by

Lad Prabhakar and committed by
Inki Dae
61f5fc8d 9df3f43a

+5 -8
+5 -8
drivers/gpu/drm/exynos/exynos_drm_fimc.c
··· 1267 1267 struct exynos_drm_ipp_formats *formats; 1268 1268 struct device *dev = &pdev->dev; 1269 1269 struct fimc_context *ctx; 1270 - struct resource *res; 1271 1270 int ret; 1272 1271 int i, j, num_limits, num_formats; 1273 1272 ··· 1329 1330 return PTR_ERR(ctx->regs); 1330 1331 1331 1332 /* resource irq */ 1332 - res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); 1333 - if (!res) { 1334 - dev_err(dev, "failed to request irq resource.\n"); 1335 - return -ENOENT; 1336 - } 1333 + ret = platform_get_irq(pdev, 0); 1334 + if (ret < 0) 1335 + return ret; 1337 1336 1338 - ret = devm_request_irq(dev, res->start, fimc_irq_handler, 1339 - 0, dev_name(dev), ctx); 1337 + ret = devm_request_irq(dev, ret, fimc_irq_handler, 1338 + 0, dev_name(dev), ctx); 1340 1339 if (ret < 0) { 1341 1340 dev_err(dev, "failed to request irq.\n"); 1342 1341 return ret;