iio: adc128s052: add proper .data members in adc128_of_match table
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Tue, 15 Nov 2022 13:23:23 +0000 (14:23 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:33:10 +0000 (13:33 +0100)
commit e2af60f5900c6ade53477b494ffb54690eee11f5 upstream.

Prior to commit bd5d54e4d49d ("iio: adc128s052: add ACPI _HID
AANT1280"), the driver unconditionally used spi_get_device_id() to get
the index into the adc128_config array.

However, with that commit, OF-based boards now incorrectly treat all
supported sensors as if they are an adc128s052, because all the .data
members of the adc128_of_match table are implicitly 0. Our board,
which has an adc122s021, thus exposes 8 channels whereas it really
only has two.

Fixes: bd5d54e4d49d ("iio: adc128s052: add ACPI _HID AANT1280")
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20221115132324.1078169-1-linux@rasmusvillemoes.dk
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iio/adc/ti-adc128s052.c

index 622fd38..b3d5b9b 100644 (file)
@@ -181,13 +181,13 @@ static int adc128_probe(struct spi_device *spi)
 }
 
 static const struct of_device_id adc128_of_match[] = {
-       { .compatible = "ti,adc128s052", },
-       { .compatible = "ti,adc122s021", },
-       { .compatible = "ti,adc122s051", },
-       { .compatible = "ti,adc122s101", },
-       { .compatible = "ti,adc124s021", },
-       { .compatible = "ti,adc124s051", },
-       { .compatible = "ti,adc124s101", },
+       { .compatible = "ti,adc128s052", .data = (void*)0L, },
+       { .compatible = "ti,adc122s021", .data = (void*)1L, },
+       { .compatible = "ti,adc122s051", .data = (void*)1L, },
+       { .compatible = "ti,adc122s101", .data = (void*)1L, },
+       { .compatible = "ti,adc124s021", .data = (void*)2L, },
+       { .compatible = "ti,adc124s051", .data = (void*)2L, },
+       { .compatible = "ti,adc124s101", .data = (void*)2L, },
        { /* sentinel */ },
 };
 MODULE_DEVICE_TABLE(of, adc128_of_match);