staging:iio:adis16080: be16 cleanups
authorLars-Peter Clausen <lars@metafoo.de>
Wed, 9 Jan 2013 14:01:00 +0000 (14:01 +0000)
committerJonathan Cameron <jic23@kernel.org>
Sat, 26 Jan 2013 10:28:28 +0000 (10:28 +0000)
The sample buffer contains big endian 16bit words. So use the be16 datatype for
the buffer and use the proper helper functions for endianness conversion instead
of openconding it.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/staging/iio/gyro/adis16080_core.c

index ddeae163982a2a531c7800427493c4fd572de059..d033b6f486a6baefb548ed26eac4df052882aca7 100644 (file)
@@ -39,7 +39,7 @@ struct adis16080_state {
        struct spi_device               *us;
        struct mutex                    buf_lock;
 
-       u8 buf[2] ____cacheline_aligned;
+       __be16 buf ____cacheline_aligned;
 };
 
 static int adis16080_read_sample(struct iio_dev *indio_dev,
@@ -60,8 +60,7 @@ static int adis16080_read_sample(struct iio_dev *indio_dev,
        };
 
        mutex_lock(&st->buf_lock);
-       st->buf[0] = addr >> 8;
-       st->buf[1] = addr;
+       st->buf = cpu_to_be16(addr | ADIS16080_DIN_WRITE);
 
        spi_message_init(&m);
        spi_message_add_tail(&t[0], &m);
@@ -69,7 +68,7 @@ static int adis16080_read_sample(struct iio_dev *indio_dev,
 
        ret = spi_sync(st->us, &m);
        if (ret == 0)
-               *val = sign_extend32(((st->buf[0] & 0xF) << 8) | st->buf[1], 11);
+               *val = sign_extend32(be16_to_cpu(st->buf), 11);
        mutex_unlock(&st->buf_lock);
 
        return ret;