From 6267ea655f141bfd0955910b728571fb2a4ed1df Mon Sep 17 00:00:00 2001 From: Manuel Stahl Date: Thu, 9 Sep 2010 17:40:11 +0200 Subject: [PATCH] staging: iio: sca3000 convert byte order of ring buffer data Signed-off-by: Manuel Stahl Acked-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/staging/iio/accel/sca3000_ring.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c index 09836c4f18b8..c93f85cacbc0 100644 --- a/drivers/staging/iio/accel/sca3000_ring.c +++ b/drivers/staging/iio/accel/sca3000_ring.c @@ -53,7 +53,8 @@ static int sca3000_rip_hw_rb(struct iio_ring_buffer *r, struct iio_dev *indio_dev = hw_ring->private; struct sca3000_state *st = indio_dev->dev_data; u8 *rx; - int ret, num_available, num_read = 0; + s16 *samples; + int ret, i, num_available, num_read = 0; int bytes_per_sample = 1; if (st->bpse == 11) @@ -87,6 +88,17 @@ static int sca3000_rip_hw_rb(struct iio_ring_buffer *r, ret = sca3000_read_data(st, SCA3000_REG_ADDR_RING_OUT, data, num_read); + + /* Convert byte order and shift to default resolution */ + if (st->bpse == 11) { + samples = (s16*)(*data+1); + for (i = 0; i < (num_read/2); i++) { + samples[i] = be16_to_cpup( + (__be16 *)&(samples[i])); + samples[i] >>= 3; + } + } + error_ret: mutex_unlock(&st->lock); -- 2.30.2