Skip to content

Commit

Permalink
staging:iio:adc:max1363 fix timestamp handling.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jonathan Cameron authored and Greg Kroah-Hartman committed Apr 26, 2011
1 parent 6f7c8ee commit 9cc5598
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
12 changes: 12 additions & 0 deletions drivers/staging/iio/adc/max1363_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ static MAX1363_SCAN_EL_D(7, 6, 21);
static MAX1363_SCAN_EL_D(9, 8, 22);
static MAX1363_SCAN_EL_D(11, 10, 23);

static IIO_SCAN_EL_TIMESTAMP(24);
static IIO_CONST_ATTR_SCAN_EL_TYPE(timestamp, s, 64, 64);

static const struct max1363_mode max1363_mode_table[] = {
/* All of the single channel options first */
MAX1363_MODE_SINGLE(0, 1 << 0),
Expand Down Expand Up @@ -402,6 +405,9 @@ static struct attribute *max1363_scan_el_attrs[] = {
&iio_const_attr_in1min0_index.dev_attr.attr,
&iio_scan_el_in3min2.dev_attr.attr, &dev_attr_in3min2_type.attr,
&iio_const_attr_in3min2_index.dev_attr.attr,
&iio_const_attr_timestamp_index.dev_attr.attr,
&iio_scan_el_timestamp.dev_attr.attr,
&iio_const_attr_timestamp_type.dev_attr.attr,
NULL,
};

Expand Down Expand Up @@ -515,6 +521,9 @@ static struct attribute *max1238_scan_el_attrs[] = {
&iio_const_attr_in9min8_index.dev_attr.attr,
&iio_scan_el_in11min10.dev_attr.attr, &dev_attr_in11min10_type.attr,
&iio_const_attr_in11min10_index.dev_attr.attr,
&iio_const_attr_timestamp_index.dev_attr.attr,
&iio_scan_el_timestamp.dev_attr.attr,
&iio_const_attr_timestamp_type.dev_attr.attr,
NULL,
};

Expand Down Expand Up @@ -601,6 +610,9 @@ static struct attribute *max11608_scan_el_attrs[] = {
&iio_const_attr_in5min4_index.dev_attr.attr,
&iio_scan_el_in7min6.dev_attr.attr, &dev_attr_in7min6_type.attr,
&iio_const_attr_in7min6_index.dev_attr.attr,
&iio_const_attr_timestamp_index.dev_attr.attr,
&iio_scan_el_timestamp.dev_attr.attr,
&iio_const_attr_timestamp_type.dev_attr.attr,
NULL
};

Expand Down
10 changes: 6 additions & 4 deletions drivers/staging/iio/adc/max1363_ring.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/*
Expand All @@ -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);
}
Expand Down

0 comments on commit 9cc5598

Please sign in to comment.