summaryrefslogtreecommitdiff
path: root/drivers/staging/iio/adc/max1363_ring.c
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@cam.ac.uk>2011-04-15 18:55:57 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2011-04-25 17:23:10 -0700
commit9cc559891181d354cc5b83d0cfecbe262d690b32 (patch)
treeca8318f2fe04477aa50ee6af9650bd8464ff3dd6 /drivers/staging/iio/adc/max1363_ring.c
parent6f7c8ee585e9db54cb29af1bdb93f29837824933 (diff)
staging:iio:adc:max1363 fix timestamp handling.
Not only was this not compliant with the abi, it was also missconfiguring the buffer. Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/adc/max1363_ring.c')
-rw-r--r--drivers/staging/iio/adc/max1363_ring.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/staging/iio/adc/max1363_ring.c b/drivers/staging/iio/adc/max1363_ring.c
index d36fcc62e976..96894bd6d71b 100644
--- a/drivers/staging/iio/adc/max1363_ring.c
+++ b/drivers/staging/iio/adc/max1363_ring.c
@@ -76,7 +76,7 @@ static int max1363_ring_preenable(struct iio_dev *indio_dev)
{
struct max1363_state *st = indio_dev->dev_data;
struct iio_ring_buffer *ring = indio_dev->ring;
- size_t d_size;
+ size_t d_size = 0;
unsigned long numvals;
/*
@@ -92,11 +92,13 @@ static int max1363_ring_preenable(struct iio_dev *indio_dev)
numvals = hweight_long(st->current_mode->modemask);
if (ring->access.set_bytes_per_datum) {
+ if (ring->scan_timestamp)
+ d_size += sizeof(s64);
if (st->chip_info->bits != 8)
- d_size = numvals*2 + sizeof(s64);
+ d_size += numvals*2;
else
- d_size = numvals + sizeof(s64);
- if (d_size % 8)
+ d_size += numvals;
+ if (ring->scan_timestamp && (d_size % 8))
d_size += 8 - (d_size % 8);
ring->access.set_bytes_per_datum(ring, d_size);
}