iio: exynos-adc: request second interupt only when touchscreen mode is used
authorMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 9 Oct 2023 10:14:12 +0000 (12:14 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 14 Oct 2023 16:47:20 +0000 (17:47 +0100)
Second interrupt is needed only when touchscreen mode is used, so don't
request it unconditionally. This removes the following annoying warning
during boot:

exynos-adc 14d10000.adc: error -ENXIO: IRQ index 1 not found

Fixes: 2bb8ad9b44c5 ("iio: exynos-adc: add experimental touchscreen support")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20231009101412.916922-1-m.szyprowski@samsung.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/exynos_adc.c

index cff1ba5..43c8af4 100644 (file)
@@ -826,16 +826,26 @@ static int exynos_adc_probe(struct platform_device *pdev)
                }
        }
 
+       /* leave out any TS related code if unreachable */
+       if (IS_REACHABLE(CONFIG_INPUT)) {
+               has_ts = of_property_read_bool(pdev->dev.of_node,
+                                              "has-touchscreen") || pdata;
+       }
+
        irq = platform_get_irq(pdev, 0);
        if (irq < 0)
                return irq;
        info->irq = irq;
 
-       irq = platform_get_irq(pdev, 1);
-       if (irq == -EPROBE_DEFER)
-               return irq;
+       if (has_ts) {
+               irq = platform_get_irq(pdev, 1);
+               if (irq == -EPROBE_DEFER)
+                       return irq;
 
-       info->tsirq = irq;
+               info->tsirq = irq;
+       } else {
+               info->tsirq = -1;
+       }
 
        info->dev = &pdev->dev;
 
@@ -900,12 +910,6 @@ static int exynos_adc_probe(struct platform_device *pdev)
        if (info->data->init_hw)
                info->data->init_hw(info);
 
-       /* leave out any TS related code if unreachable */
-       if (IS_REACHABLE(CONFIG_INPUT)) {
-               has_ts = of_property_read_bool(pdev->dev.of_node,
-                                              "has-touchscreen") || pdata;
-       }
-
        if (pdata)
                info->delay = pdata->delay;
        else