ath10k: Use platform_get_irq() to get the interrupt
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Fri, 24 Dec 2021 19:26:25 +0000 (19:26 +0000)
committerKalle Valo <quic_kvalo@quicinc.com>
Mon, 17 Jan 2022 12:41:06 +0000 (14:41 +0200)
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 bypasses the hierarchical setup and messes 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: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20211224192626.15843-8-prabhakar.mahadev-lad.rj@bp.renesas.com
drivers/net/wireless/ath/ath10k/snoc.c

index 9513ab696fff13faff421d17f7c7d1f39904da1b..681e1abe74400afda575449d5003051294e5abae 100644 (file)
@@ -1306,13 +1306,10 @@ static int ath10k_snoc_resource_init(struct ath10k *ar)
        }
 
        for (i = 0; i < CE_COUNT; i++) {
-               res = platform_get_resource(ar_snoc->dev, IORESOURCE_IRQ, i);
-               if (!res) {
-                       ath10k_err(ar, "failed to get IRQ%d\n", i);
-                       ret = -ENODEV;
-                       goto out;
-               }
-               ar_snoc->ce_irqs[i].irq_line = res->start;
+               ret = platform_get_irq(ar_snoc->dev, i);
+               if (ret < 0)
+                       return ret;
+               ar_snoc->ce_irqs[i].irq_line = ret;
        }
 
        ret = device_property_read_u32(&pdev->dev, "qcom,xo-cal-data",
@@ -1323,10 +1320,8 @@ static int ath10k_snoc_resource_init(struct ath10k *ar)
                ath10k_dbg(ar, ATH10K_DBG_SNOC, "xo cal data %x\n",
                           ar_snoc->xo_cal_data);
        }
-       ret = 0;
 
-out:
-       return ret;
+       return 0;
 }
 
 static void ath10k_snoc_quirks_init(struct ath10k *ar)