diff mbox series

iio: exynos-adc: request second interupt only when touchscreen mode is used

Message ID 20231009101412.916922-1-m.szyprowski@samsung.com
State New
Headers show
Series iio: exynos-adc: request second interupt only when touchscreen mode is used | expand

Commit Message

Marek Szyprowski Oct. 9, 2023, 10:14 a.m. UTC
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>
---
 drivers/iio/adc/exynos_adc.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

Comments

Jonathan Cameron Oct. 10, 2023, 1:48 p.m. UTC | #1
On Mon,  9 Oct 2023 12:14:12 +0200
Marek Szyprowski <m.szyprowski@samsung.com> wrote:

> 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>
Seems reasonable to me but I'll leave on list a few days for other people
to take a look.

Thanks,

Jonathan

> ---
>  drivers/iio/adc/exynos_adc.c | 24 ++++++++++++++----------
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
> index eb7a2dd59517..614de9644800 100644
> --- a/drivers/iio/adc/exynos_adc.c
> +++ b/drivers/iio/adc/exynos_adc.c
> @@ -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
Jonathan Cameron Oct. 14, 2023, 4:48 p.m. UTC | #2
On Mon,  9 Oct 2023 12:14:12 +0200
Marek Szyprowski <m.szyprowski@samsung.com> wrote:

> 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>
Applied to the fixes-togreg branch of iio.git and marked for stable.

Timing wise, this might just end up going in during the merge window now.

Thanks,

Jonathan
> ---
>  drivers/iio/adc/exynos_adc.c | 24 ++++++++++++++----------
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
> index eb7a2dd59517..614de9644800 100644
> --- a/drivers/iio/adc/exynos_adc.c
> +++ b/drivers/iio/adc/exynos_adc.c
> @@ -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
diff mbox series

Patch

diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
index eb7a2dd59517..614de9644800 100644
--- a/drivers/iio/adc/exynos_adc.c
+++ b/drivers/iio/adc/exynos_adc.c
@@ -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