staging:iio:adc:ad7291: fix channel mapping for event enables
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b576590dcd
commit
06420c2d61
@@ -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,
|
|||||||
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,
|
|||||||
|
|
||||||
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,
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user