]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
remoteproc: qcom: wcnss: Fix handling of IRQs
authorSireesh Kodali <sireeshkodali1@gmail.com>
Thu, 26 May 2022 14:17:39 +0000 (19:47 +0530)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 7 Jul 2022 03:24:37 +0000 (22:24 -0500)
The wcnss_get_irq function is expected to return a value > 0 in the
event that an IRQ is succssfully obtained, but it instead returns 0.
This causes the stop and ready IRQs to never actually be used despite
being defined in the device-tree. This patch fixes that.

Fixes: aed361adca9f ("remoteproc: qcom: Introduce WCNSS peripheral image loader")
Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220526141740.15834-2-sireeshkodali1@gmail.com
drivers/remoteproc/qcom_wcnss.c

index 9a223d394087fd71bf3d81a73a7538d1083e3d14..68f37296b1516c0b0ea89e1586575f55bd78c731 100644 (file)
@@ -467,6 +467,7 @@ static int wcnss_request_irq(struct qcom_wcnss *wcnss,
                             irq_handler_t thread_fn)
 {
        int ret;
+       int irq_number;
 
        ret = platform_get_irq_byname(pdev, name);
        if (ret < 0 && optional) {
@@ -477,14 +478,19 @@ static int wcnss_request_irq(struct qcom_wcnss *wcnss,
                return ret;
        }
 
+       irq_number = ret;
+
        ret = devm_request_threaded_irq(&pdev->dev, ret,
                                        NULL, thread_fn,
                                        IRQF_TRIGGER_RISING | IRQF_ONESHOT,
                                        "wcnss", wcnss);
-       if (ret)
+       if (ret) {
                dev_err(&pdev->dev, "request %s IRQ failed\n", name);
+               return ret;
+       }
 
-       return ret;
+       /* Return the IRQ number if the IRQ was successfully acquired */
+       return irq_number;
 }
 
 static int wcnss_alloc_memory_region(struct qcom_wcnss *wcnss)