[PATCH] iio: adc: ti-adc128s052: Fix number of channels when device tree is used

From: Nishanth Menon
Date: Thu Jun 30 2022 - 19:02:01 EST


When device_match_data is called - with device tree, of_match list is
looked up to find the data, which by default is 0. So, no matter which
kind of device compatible we use, we match with config 0 which implies
we enable 8 channels even on devices that do not have 8 channels.

Solve it by providing the match data similar to what we do with the ACPI
lookup information.

Fixes: 9e611c9e5a20 ("iio: adc128s052: Add OF match table")
Cc: <stable@xxxxxxxxxxxxxxx> # 5.0+
Signed-off-by: Nishanth Menon <nm@xxxxxx>
---

Side note: commits 9e611c9e5a20c ("iio: adc128s052: Add OF match table"),
37cd3c8768edc ("iio: adc128s052: Add pin-compatible IDs"),
b41fa86b67bd3 ("iio:adc128s052: add support for adc124s021") introduce
code that is fixed by this patch, but it makes no real sense to go and
split this patch to apply to versions older than 5.0 - which seems to be
the earliest the patch would apply. I picked the "Add OF match table" as
the patch that set the precedence which follow on patches followed.

drivers/iio/adc/ti-adc128s052.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/iio/adc/ti-adc128s052.c b/drivers/iio/adc/ti-adc128s052.c
index 622fd384983c..21a7764cbb93 100644
--- a/drivers/iio/adc/ti-adc128s052.c
+++ b/drivers/iio/adc/ti-adc128s052.c
@@ -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 = 0},
+ { .compatible = "ti,adc122s021", .data = 1},
+ { .compatible = "ti,adc122s051", .data = 1},
+ { .compatible = "ti,adc122s101", .data = 1},
+ { .compatible = "ti,adc124s021", .data = 2},
+ { .compatible = "ti,adc124s051", .data = 2},
+ { .compatible = "ti,adc124s101", .data = 2},
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, adc128_of_match);
--
2.31.1