All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio/kern: consider the case where channel number > number of channels
@ 2013-06-10 15:42 Sebastian Andrzej Siewior
  2013-06-11 19:55 ` Jonathan Cameron
  0 siblings, 1 reply; 5+ messages in thread
From: Sebastian Andrzej Siewior @ 2013-06-10 15:42 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio, Sebastian Andrzej Siewior

On the am335x I export ADC channels indexed by their number as specified
in the datasheet. The channels are shared between the TSC & ADC and be
used either by TSC or the ADC. So it is possible that the TSC uses
chanels 0 & 1 and the ADC is using channels 2 & 3. The total number of
channles of the ADC is 2 but the individual numbers are 2 and 3.
This patch changes the check for the the requesting channel by walking
over the list and comparing the channel number.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/iio/inkern.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
index dca4eed..1a40077 100644
--- a/drivers/iio/inkern.c
+++ b/drivers/iio/inkern.c
@@ -107,6 +107,7 @@ static int __of_iio_channel_get(struct iio_channel *channel,
 	struct iio_dev *indio_dev;
 	int err;
 	struct of_phandle_args iiospec;
+	int i;
 
 	err = of_parse_phandle_with_args(np, "io-channels",
 					 "#io-channel-cells",
@@ -123,15 +124,13 @@ static int __of_iio_channel_get(struct iio_channel *channel,
 	indio_dev = dev_to_iio_dev(idev);
 	channel->indio_dev = indio_dev;
 	index = iiospec.args_count ? iiospec.args[0] : 0;
-	if (index >= indio_dev->num_channels) {
-		err = -EINVAL;
-		goto err_put;
+	for (i = 0; i < indio_dev->num_channels; i++) {
+		if (indio_dev->channels[i].channel == index) {
+			channel->channel = &indio_dev->channels[i];
+			return 0;
+		}
 	}
-	channel->channel = &indio_dev->channels[index];
-
-	return 0;
 
-err_put:
 	iio_device_put(indio_dev);
 	return err;
 }
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-06-12  8:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-10 15:42 [PATCH] iio/kern: consider the case where channel number > number of channels Sebastian Andrzej Siewior
2013-06-11 19:55 ` Jonathan Cameron
2013-06-11 20:44   ` Guenter Roeck
2013-06-11 21:08     ` Lars-Peter Clausen
2013-06-12  8:53       ` Sebastian Andrzej Siewior

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.