From e19b331f3d10b08660a4ea370636f40783f962ad Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Wed, 16 Jan 2013 12:48:00 +0000 Subject: [PATCH] --- yaml --- r: 354191 b: refs/heads/master c: bdb20bdb8c1ea55c9a2f744cc5b2c7f66148a41b h: refs/heads/master i: 354189: eb2a57079637ac31ed6fec98a8544bcf84aa0b35 354187: 4dc0e16626ae0d96b65fd3b6e7d432ea1ab7ea27 354183: b702981929b0084eed8c6cde2942a055618f5199 354175: 939cfc55ebe146d70845462ff8eb7b51c2f72041 v: v3 --- [refs] | 2 +- .../drivers/staging/iio/imu/adis16400_core.c | 41 +++++++++---------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/[refs] b/[refs] index c59b6e1638f1..0c99e8043af5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 06220b89f2284f910f925676d757fd3331138dc6 +refs/heads/master: bdb20bdb8c1ea55c9a2f744cc5b2c7f66148a41b diff --git a/trunk/drivers/staging/iio/imu/adis16400_core.c b/trunk/drivers/staging/iio/imu/adis16400_core.c index cb6622578e9b..7114de94f412 100644 --- a/trunk/drivers/staging/iio/imu/adis16400_core.c +++ b/trunk/drivers/staging/iio/imu/adis16400_core.c @@ -242,33 +242,32 @@ static ssize_t adis16400_read_frequency(struct device *dev, static const unsigned adis16400_3db_divisors[] = { [0] = 2, /* Special case */ - [1] = 5, - [2] = 10, - [3] = 50, - [4] = 200, + [1] = 6, + [2] = 12, + [3] = 25, + [4] = 50, + [5] = 100, + [6] = 200, + [7] = 200, /* Not a valid setting */ }; static int adis16400_set_filter(struct iio_dev *indio_dev, int sps, int val) { int i, ret; u16 val16; - for (i = ARRAY_SIZE(adis16400_3db_divisors) - 1; i >= 0; i--) - if (sps/adis16400_3db_divisors[i] > val) + + for (i = ARRAY_SIZE(adis16400_3db_divisors) - 1; i >= 1; i--) { + if (sps / adis16400_3db_divisors[i] >= val) break; - if (i == -1) - ret = -EINVAL; - else { - ret = adis16400_spi_read_reg_16(indio_dev, - ADIS16400_SENS_AVG, + } + + ret = adis16400_spi_read_reg_16(indio_dev, ADIS16400_SENS_AVG, &val16); - if (ret < 0) - goto error_ret; + if (ret < 0) + return ret; - ret = adis16400_spi_write_reg_16(indio_dev, - ADIS16400_SENS_AVG, - (val16 & ~0x03) | i); - } -error_ret: + ret = adis16400_spi_write_reg_16(indio_dev, ADIS16400_SENS_AVG, + (val16 & ~0x07) | i); return ret; } @@ -653,9 +652,9 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, mutex_unlock(&indio_dev->mlock); return ret; } - val16 = st->variant->get_freq(indio_dev); - if (ret > 0) - *val = ret/adis16400_3db_divisors[val16 & 0x03]; + ret = st->variant->get_freq(indio_dev); + if (ret >= 0) + *val = ret / adis16400_3db_divisors[val16 & 0x07]; *val2 = 0; mutex_unlock(&indio_dev->mlock); if (ret < 0)