OSDN Git Service

memory: tegra: Make IRQ support opitonal
authorThierry Reding <treding@nvidia.com>
Wed, 2 Jun 2021 16:32:58 +0000 (18:32 +0200)
committerKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Thu, 3 Jun 2021 19:49:41 +0000 (21:49 +0200)
Make IRQ support optional to help unify the Tegra186 memory controller
driver with this one.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20210602163302.120041-9-thierry.reding@gmail.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
drivers/memory/tegra/mc.c

index e6c9286..68c6797 100644 (file)
@@ -750,20 +750,22 @@ static int tegra_mc_probe(struct platform_device *pdev)
                        return err;
        }
 
-       mc->irq = platform_get_irq(pdev, 0);
-       if (mc->irq < 0)
-               return mc->irq;
+       if (mc->soc->ops && mc->soc->ops->handle_irq) {
+               mc->irq = platform_get_irq(pdev, 0);
+               if (mc->irq < 0)
+                       return mc->irq;
 
-       WARN(!mc->soc->client_id_mask, "missing client ID mask for this SoC\n");
+               WARN(!mc->soc->client_id_mask, "missing client ID mask for this SoC\n");
 
-       mc_writel(mc, mc->soc->intmask, MC_INTMASK);
+               mc_writel(mc, mc->soc->intmask, MC_INTMASK);
 
-       err = devm_request_irq(&pdev->dev, mc->irq, mc->soc->ops->handle_irq, 0,
-                              dev_name(&pdev->dev), mc);
-       if (err < 0) {
-               dev_err(&pdev->dev, "failed to request IRQ#%u: %d\n", mc->irq,
-                       err);
-               return err;
+               err = devm_request_irq(&pdev->dev, mc->irq, mc->soc->ops->handle_irq, 0,
+                                      dev_name(&pdev->dev), mc);
+               if (err < 0) {
+                       dev_err(&pdev->dev, "failed to request IRQ#%u: %d\n", mc->irq,
+                               err);
+                       return err;
+               }
        }
 
        err = tegra_mc_reset_setup(mc);