diff options
author | Jonathan Cameron <jic23@cam.ac.uk> | 2011-05-18 09:42:34 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-19 19:15:05 -0400 |
commit | 8d213f24f2291a3edc7f94ac2bec8c85015aed96 (patch) | |
tree | 3bcefb4531f2d31edec8c694ae70e6735e86fa65 /drivers/staging/iio/accel/lis3l02dq_ring.c | |
parent | c74b0de1666f8b8f6c65e1e944deff71fed0769a (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.c | 7 |
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)]; |
65 | error_free_data: | 69 | error_free_data: |
66 | kfree(data); | 70 | kfree(data); |
71 | |||
67 | return ret; | 72 | return ret; |
68 | } | 73 | } |
69 | 74 | ||