Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2018-10-30 12:15:55 +0100
committerTakashi Iwai <tiwai@suse.de>2018-10-30 12:16:13 +0100
commit711c5168a3a78c360ed9edb6cf8c9d7fa14a5e45 (patch)
tree261dfe61445489ffe26050a809061f61bfbd9685
parent2f04cfed57fe99e31f0a00ae661560db1466a67b (diff)
iio: adc: at91: fix wrong channel number in triggered buffer
mode (bsc#1051510).
-rw-r--r--patches.drivers/iio-adc-at91-fix-wrong-channel-number-in-triggered-b.patch53
-rw-r--r--series.conf1
2 files changed, 54 insertions, 0 deletions
diff --git a/patches.drivers/iio-adc-at91-fix-wrong-channel-number-in-triggered-b.patch b/patches.drivers/iio-adc-at91-fix-wrong-channel-number-in-triggered-b.patch
new file mode 100644
index 0000000000..090581119c
--- /dev/null
+++ b/patches.drivers/iio-adc-at91-fix-wrong-channel-number-in-triggered-b.patch
@@ -0,0 +1,53 @@
+From aea835f2dc8a682942b859179c49ad1841a6c8b9 Mon Sep 17 00:00:00 2001
+From: Eugen Hristev <eugen.hristev@microchip.com>
+Date: Mon, 24 Sep 2018 10:51:44 +0300
+Subject: [PATCH] iio: adc: at91: fix wrong channel number in triggered buffer mode
+Git-commit: aea835f2dc8a682942b859179c49ad1841a6c8b9
+Patch-mainline: v4.20-rc1
+References: bsc#1051510
+
+When channels are registered, the hardware channel number is not the
+actual iio channel number.
+This is because the driver is probed with a certain number of accessible
+channels. Some pins are routed and some not, depending on the description of
+the board in the DT.
+Because of that, channels 0,1,2,3 can correspond to hardware channels
+2,3,4,5 for example.
+In the buffered triggered case, we need to do the translation accordingly.
+Fixed the channel number to stop reading the wrong channel.
+
+Fixes: 0e589d5fb ("ARM: AT91: IIO: Add AT91 ADC driver.")
+Cc: Maxime Ripard <maxime.ripard@bootlin.com>
+Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
+Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/iio/adc/at91_adc.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
+index e3be88e7192c..75d2f73582a3 100644
+--- a/drivers/iio/adc/at91_adc.c
++++ b/drivers/iio/adc/at91_adc.c
+@@ -248,12 +248,14 @@ static irqreturn_t at91_adc_trigger_handler(int irq, void *p)
+ struct iio_poll_func *pf = p;
+ struct iio_dev *idev = pf->indio_dev;
+ struct at91_adc_state *st = iio_priv(idev);
++ struct iio_chan_spec const *chan;
+ int i, j = 0;
+
+ for (i = 0; i < idev->masklength; i++) {
+ if (!test_bit(i, idev->active_scan_mask))
+ continue;
+- st->buffer[j] = at91_adc_readl(st, AT91_ADC_CHAN(st, i));
++ chan = idev->channels + i;
++ st->buffer[j] = at91_adc_readl(st, AT91_ADC_CHAN(st, chan->channel));
+ j++;
+ }
+
+--
+2.19.1
+
diff --git a/series.conf b/series.conf
index f7e3e0ddd9..0ddc185536 100644
--- a/series.conf
+++ b/series.conf
@@ -18295,6 +18295,7 @@
patches.drivers/drm-i915-dp-Link-train-Fallback-on-eDP-only-if-fallb.patch
patches.drivers/iio-adc-imx25-gcq-Fix-leak-of-device_node-in-mx25_gc.patch
patches.drivers/iio-adc-at91-fix-acking-DRDY-irq-on-simple-conversio.patch
+ patches.drivers/iio-adc-at91-fix-wrong-channel-number-in-triggered-b.patch
patches.drivers/media-uvcvideo-Fix-uvc_alloc_entity-allocation-align.patch
patches.drivers/media-dvb-fix-compat-ioctl-translation.patch
patches.drivers/media-tvp5150-avoid-going-past-array-on-v4l2_queryme.patch