aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio
diff options
context:
space:
mode:
authorDavid Veenstra <davidjulianveenstra@gmail.com>2018-04-23 00:03:03 +0200
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2018-04-28 18:12:03 +0100
commit0bd3d338f61b957650700e3113fd9c7f49103570 (patch)
tree394ca9acf8aa02e63213690596f1aadddaca071c /drivers/staging/iio
parentiio: afe: rescale: new driver (diff)
downloadlinux-dev-0bd3d338f61b957650700e3113fd9c7f49103570.tar.xz
linux-dev-0bd3d338f61b957650700e3113fd9c7f49103570.zip
staging: iio: ad2s1200: Improve readability with be16_to_cpup
The manual states that the data is contained in the upper 12 bits of the 16 bits read by spi. The code that extracts these 12 bits is correct for both be and le machines, but this is not clear from a first glance. To improve readability the relevant expressions are replaced with equivalent expressions that use be16_to_cpup. Signed-off-by: David Veenstra <davidjulianveenstra@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'drivers/staging/iio')
-rw-r--r--drivers/staging/iio/resolver/ad2s1200.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/staging/iio/resolver/ad2s1200.c b/drivers/staging/iio/resolver/ad2s1200.c
index 357fe3c382b3..ea7336645116 100644
--- a/drivers/staging/iio/resolver/ad2s1200.c
+++ b/drivers/staging/iio/resolver/ad2s1200.c
@@ -38,7 +38,7 @@ struct ad2s1200_state {
struct spi_device *sdev;
int sample;
int rdvel;
- u8 rx[2] ____cacheline_aligned;
+ __be16 rx ____cacheline_aligned;
};
static int ad2s1200_read_raw(struct iio_dev *indio_dev,
@@ -49,7 +49,6 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev,
{
struct ad2s1200_state *st = iio_priv(indio_dev);
int ret = 0;
- s16 vel;
mutex_lock(&st->lock);
gpio_set_value(st->sample, 0);
@@ -59,7 +58,7 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev,
gpio_set_value(st->sample, 1);
gpio_set_value(st->rdvel, !!(chan->type == IIO_ANGL));
- ret = spi_read(st->sdev, st->rx, 2);
+ ret = spi_read(st->sdev, &st->rx, 2);
if (ret < 0) {
mutex_unlock(&st->lock);
return ret;
@@ -67,12 +66,10 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev,
switch (chan->type) {
case IIO_ANGL:
- *val = (((u16)(st->rx[0])) << 4) | ((st->rx[1] & 0xF0) >> 4);
+ *val = be16_to_cpup(&st->rx) >> 4;
break;
case IIO_ANGL_VEL:
- vel = (((s16)(st->rx[0])) << 4) | ((st->rx[1] & 0xF0) >> 4);
- vel = sign_extend32(vel, 11);
- *val = vel;
+ *val = sign_extend32(be16_to_cpup(&st->rx) >> 4, 11);
break;
default:
mutex_unlock(&st->lock);