Commit 06420c2d authored by Michael Hennerich's avatar Michael Hennerich Committed by Greg Kroah-Hartman

staging:iio:adc:ad7291: fix channel mapping for event enables

Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarJonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent b576590d
...@@ -101,7 +101,7 @@ struct ad7291_chip_info { ...@@ -101,7 +101,7 @@ struct ad7291_chip_info {
struct regulator *reg; struct regulator *reg;
u16 int_vref_mv; u16 int_vref_mv;
u16 command; u16 command;
u8 c_mask; /* Active voltage channels for events */ u16 c_mask; /* Active voltage channels for events */
struct mutex state_lock; struct mutex state_lock;
}; };
...@@ -381,7 +381,7 @@ static int ad7291_read_event_config(struct iio_dev *indio_dev, ...@@ -381,7 +381,7 @@ static int ad7291_read_event_config(struct iio_dev *indio_dev,
switch (IIO_EVENT_CODE_EXTRACT_CHAN_TYPE(event_code)) { switch (IIO_EVENT_CODE_EXTRACT_CHAN_TYPE(event_code)) {
case IIO_VOLTAGE: case IIO_VOLTAGE:
if (chip->c_mask & if (chip->c_mask &
(1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code))) (1 << (15 - IIO_EVENT_CODE_EXTRACT_NUM(event_code))))
return 1; return 1;
else else
return 0; return 0;
...@@ -412,19 +412,19 @@ static int ad7291_write_event_config(struct iio_dev *indio_dev, ...@@ -412,19 +412,19 @@ static int ad7291_write_event_config(struct iio_dev *indio_dev,
switch (IIO_EVENT_CODE_EXTRACT_TYPE(event_code)) { switch (IIO_EVENT_CODE_EXTRACT_TYPE(event_code)) {
case IIO_VOLTAGE: case IIO_VOLTAGE:
if ((!state) && (chip->c_mask & if ((!state) && (chip->c_mask & (1 << (15 -
(1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code)))) IIO_EVENT_CODE_EXTRACT_NUM(event_code)))))
chip->c_mask &= chip->c_mask &= ~(1 << (15 - IIO_EVENT_CODE_EXTRACT_NUM
~(1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code)); (event_code)));
else if (state && (!(chip->c_mask & else if (state && (!(chip->c_mask & (1 << (15 -
(1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code))))) IIO_EVENT_CODE_EXTRACT_NUM(event_code))))))
chip->c_mask |= chip->c_mask |= (1 << (15 - IIO_EVENT_CODE_EXTRACT_NUM
(1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code)); (event_code)));
else else
break; break;
regval &= ~AD7291_AUTOCYCLE; regval &= ~AD7291_AUTOCYCLE;
regval |= ((u16)chip->c_mask << 8); regval |= chip->c_mask;
if (chip->c_mask) /* Enable autocycle? */ if (chip->c_mask) /* Enable autocycle? */
regval |= AD7291_AUTOCYCLE; regval |= AD7291_AUTOCYCLE;
...@@ -461,7 +461,7 @@ static int ad7291_read_raw(struct iio_dev *indio_dev, ...@@ -461,7 +461,7 @@ static int ad7291_read_raw(struct iio_dev *indio_dev,
case IIO_VOLTAGE: case IIO_VOLTAGE:
mutex_lock(&chip->state_lock); mutex_lock(&chip->state_lock);
/* If in autocycle mode drop through */ /* If in autocycle mode drop through */
if (chip->command & 0x1) { if (chip->command & AD7291_AUTOCYCLE) {
mutex_unlock(&chip->state_lock); mutex_unlock(&chip->state_lock);
return -EBUSY; return -EBUSY;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment