All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Eugen Hristev <eugen.hristev@microchip.com>,
	Maxime Ripard <maxime.ripard@bootlin.com>,
	Stable@vger.kernel.org,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 3.18 07/13] iio: adc: at91: fix wrong channel number in triggered buffer mode
Date: Sun,  4 Nov 2018 08:54:27 -0500	[thread overview]
Message-ID: <20181104135433.88734-7-sashal@kernel.org> (raw)
In-Reply-To: <20181104135433.88734-1-sashal@kernel.org>

From: Eugen Hristev <eugen.hristev@microchip.com>

[ Upstream commit aea835f2dc8a682942b859179c49ad1841a6c8b9 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 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 0047db49ee5e..8dc9f442c796 100644
--- a/drivers/iio/adc/at91_adc.c
+++ b/drivers/iio/adc/at91_adc.c
@@ -245,12 +245,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.17.1


  parent reply	other threads:[~2018-11-04 13:55 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-04 13:54 [PATCH AUTOSEL 3.18 01/13] mm/vmstat.c: assert that vmstat_text is in sync with stat_items_size Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 02/13] mm: don't warn about large allocations for slab Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 03/13] tty: check name length in tty_find_polling_driver() Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 04/13] powerpc/nohash: fix undefined behaviour when testing page size support Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 05/13] watchdog: lantiq: update register names to better match spec Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 06/13] drm/omap: fix memory barrier bug in DMM driver Sasha Levin
2018-11-04 13:54 ` Sasha Levin [this message]
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 08/13] iio: adc: at91: fix acking DRDY irq on simple conversions Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 09/13] media: pci: cx23885: handle adding to list failure Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 10/13] MIPS: kexec: Mark CPU offline before disabling local IRQ Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 11/13] powerpc/boot: Ensure _zimage_start is a weak symbol Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 12/13] media: tvp5150: fix width alignment during set_selection() Sasha Levin
2018-11-04 13:54 ` [PATCH AUTOSEL 3.18 13/13] 9p: clear dangling pointers in p9stat_free Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181104135433.88734-7-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=eugen.hristev@microchip.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maxime.ripard@bootlin.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.