[PATCH 2/2] staging:iio:sca3000 convert byte order of ring buffer data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Manuel Stahl <slm@xxxxxxxxxxxxxxxxx>


Signed-off-by: Manuel Stahl <manuel.stahl@xxxxxxxxxxxxxxxxx>
---
 drivers/staging/iio/accel/sca3000_ring.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c
index e4ae917..3d02b21 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);
 
-- 
1.7.0.6

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux