소스 검색

staging:iio:adis16080: be16 cleanups

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>
Lars-Peter Clausen 12 년 전
부모
커밋
3c80372dae
1개의 변경된 파일3개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 4
      drivers/staging/iio/gyro/adis16080_core.c

+ 3 - 4
drivers/staging/iio/gyro/adis16080_core.c

@@ -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;