aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/accel/lis3l02dq_ring.c
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@cam.ac.uk>2011-05-18 09:42:34 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-05-19 19:15:05 -0400
commit8d213f24f2291a3edc7f94ac2bec8c85015aed96 (patch)
tree3bcefb4531f2d31edec8c694ae70e6735e86fa65 /drivers/staging/iio/accel/lis3l02dq_ring.c
parentc74b0de1666f8b8f6c65e1e944deff71fed0769a (diff)
staging:iio: ring core cleanups + check if read_last available in lis3l02dq
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/accel/lis3l02dq_ring.c')
-rw-r--r--drivers/staging/iio/accel/lis3l02dq_ring.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
index 5029c51fe91..c8f29bc73f6 100644
--- a/drivers/staging/iio/accel/lis3l02dq_ring.c
+++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
@@ -50,9 +50,13 @@ ssize_t lis3l02dq_read_accel_from_ring(struct iio_ring_buffer *ring,
50{ 50{
51 int ret; 51 int ret;
52 s16 *data; 52 s16 *data;
53
53 if (!iio_scan_mask_query(ring, index)) 54 if (!iio_scan_mask_query(ring, index))
54 return -EINVAL; 55 return -EINVAL;
55 56
57 if (!ring->access->read_last)
58 return -EBUSY;
59
56 data = kmalloc(ring->access->get_bytes_per_datum(ring), 60 data = kmalloc(ring->access->get_bytes_per_datum(ring),
57 GFP_KERNEL); 61 GFP_KERNEL);
58 if (data == NULL) 62 if (data == NULL)
@@ -61,9 +65,10 @@ ssize_t lis3l02dq_read_accel_from_ring(struct iio_ring_buffer *ring,
61 ret = ring->access->read_last(ring, (u8 *)data); 65 ret = ring->access->read_last(ring, (u8 *)data);
62 if (ret) 66 if (ret)
63 goto error_free_data; 67 goto error_free_data;
64 *val = data[iio_scan_mask_count_to_right(ring, index)]; 68 *val = data[bitmap_weight(&ring->scan_mask, index)];
65error_free_data: 69error_free_data:
66 kfree(data); 70 kfree(data);
71
67 return ret; 72 return ret;
68} 73}
69 74