Skip to content

Commit

Permalink
staging: IIO: IMU: ADIS16400: Make sure only enabled scan_elements ar…
Browse files Browse the repository at this point in the history
…e pushed into the ring

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
CC: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Michael Hennerich authored and Greg Kroah-Hartman committed Apr 5, 2011
1 parent b181119 commit 0fea4d6
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions drivers/staging/iio/imu/adis16400_ring.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,10 @@ static void adis16400_trigger_bh_to_ring(struct work_struct *work_s)
work_trigger_to_ring);
struct iio_ring_buffer *ring = st->indio_dev->ring;

int i = 0;
int i = 0, j;
s16 *data;
size_t datasize = ring->access.get_bytes_per_datum(ring);
unsigned long mask = ring->scan_mask;

data = kmalloc(datasize , GFP_KERNEL);
if (data == NULL) {
Expand All @@ -172,9 +173,12 @@ static void adis16400_trigger_bh_to_ring(struct work_struct *work_s)

if (ring->scan_count)
if (adis16400_spi_read_burst(&st->indio_dev->dev, st->rx) >= 0)
for (; i < ring->scan_count; i++)
for (; i < ring->scan_count; i++) {
j = __ffs(mask);
mask &= ~(1 << j);
data[i] = be16_to_cpup(
(__be16 *)&(st->rx[i*2]));
(__be16 *)&(st->rx[j*2]));
}

/* Guaranteed to be aligned with 8 byte boundary */
if (ring->scan_timestamp)
Expand Down

0 comments on commit 0fea4d6

Please sign in to comment.