From: Michael Hennerich Date: Fri, 2 Sep 2011 16:25:43 +0000 (+0100) Subject: staging:iio:adc:ad7291: fix channel mapping for event enables X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=06420c2d61f3ec838f15933b8c03ae2e658d0d56;p=GitHub%2Fmt8127%2Fandroid_kernel_alcatel_ttab.git staging:iio:adc:ad7291: fix channel mapping for event enables Signed-off-by: Michael Hennerich Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/iio/adc/ad7291.c b/drivers/staging/iio/adc/ad7291.c index 840353624a76..687509fcc978 100644 --- a/drivers/staging/iio/adc/ad7291.c +++ b/drivers/staging/iio/adc/ad7291.c @@ -101,7 +101,7 @@ struct ad7291_chip_info { struct regulator *reg; u16 int_vref_mv; u16 command; - u8 c_mask; /* Active voltage channels for events */ + u16 c_mask; /* Active voltage channels for events */ 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)) { case IIO_VOLTAGE: if (chip->c_mask & - (1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code))) + (1 << (15 - IIO_EVENT_CODE_EXTRACT_NUM(event_code)))) return 1; else 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)) { case IIO_VOLTAGE: - if ((!state) && (chip->c_mask & - (1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code)))) - chip->c_mask &= - ~(1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code)); - else if (state && (!(chip->c_mask & - (1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code))))) - chip->c_mask |= - (1 << IIO_EVENT_CODE_EXTRACT_NUM(event_code)); + if ((!state) && (chip->c_mask & (1 << (15 - + IIO_EVENT_CODE_EXTRACT_NUM(event_code))))) + chip->c_mask &= ~(1 << (15 - IIO_EVENT_CODE_EXTRACT_NUM + (event_code))); + else if (state && (!(chip->c_mask & (1 << (15 - + IIO_EVENT_CODE_EXTRACT_NUM(event_code)))))) + chip->c_mask |= (1 << (15 - IIO_EVENT_CODE_EXTRACT_NUM + (event_code))); else break; regval &= ~AD7291_AUTOCYCLE; - regval |= ((u16)chip->c_mask << 8); + regval |= chip->c_mask; if (chip->c_mask) /* Enable autocycle? */ regval |= AD7291_AUTOCYCLE; @@ -461,7 +461,7 @@ static int ad7291_read_raw(struct iio_dev *indio_dev, case IIO_VOLTAGE: mutex_lock(&chip->state_lock); /* If in autocycle mode drop through */ - if (chip->command & 0x1) { + if (chip->command & AD7291_AUTOCYCLE) { mutex_unlock(&chip->state_lock); return -EBUSY; }