From: Manuel Stahl <slm@iis.fraunhofer.de>
Date: Thu, 9 Sep 2010 15:40:11 +0000 (+0200)
Subject: staging: iio: sca3000 convert byte order of ring buffer data
X-Git-Tag: firefly_0821_release~7613^2~3583^2~3^2~605
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6267ea655f141bfd0955910b728571fb2a4ed1df;p=firefly-linux-kernel-4.4.55.git

staging: iio: sca3000 convert byte order of ring buffer data

Signed-off-by: Manuel Stahl <manuel.stahl@iis.fraunhofer.de>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---

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