Skip to content

Commit

Permalink
staging:iio:adc:ad7298 use iio_sw_buffer_preenable to avoid code repi…
Browse files Browse the repository at this point in the history
…tition.

Here some addition elements are needed, but this generic function cuts
down on the amount of code.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Jonathan Cameron authored and Greg Kroah-Hartman committed Apr 24, 2012
1 parent 2150489 commit 8f03aab
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 17 deletions.
1 change: 0 additions & 1 deletion drivers/staging/iio/adc/ad7298.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ struct ad7298_platform_data {
struct ad7298_state {
struct spi_device *spi;
struct regulator *reg;
size_t d_size;
u16 int_vref_mv;
unsigned ext_ref;
struct spi_transfer ring_xfer[10];
Expand Down
24 changes: 8 additions & 16 deletions drivers/staging/iio/adc/ad7298_ring.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,17 @@
static int ad7298_ring_preenable(struct iio_dev *indio_dev)
{
struct ad7298_state *st = iio_priv(indio_dev);
struct iio_buffer *ring = indio_dev->buffer;
size_t d_size;
int i, m;
unsigned short command;
int scan_count = bitmap_weight(indio_dev->active_scan_mask,
indio_dev->masklength);
d_size = scan_count * (AD7298_STORAGE_BITS / 8);

if (ring->scan_timestamp) {
d_size += sizeof(s64);

if (d_size % sizeof(s64))
d_size += sizeof(s64) - (d_size % sizeof(s64));
}
int scan_count, ret;

if (ring->access->set_bytes_per_datum)
ring->access->set_bytes_per_datum(ring, d_size);
ret = iio_sw_buffer_preenable(indio_dev);
if (ret < 0)
return ret;

st->d_size = d_size;
/* Now compute overall size */
scan_count = bitmap_weight(indio_dev->active_scan_mask,
indio_dev->masklength);

command = AD7298_WRITE | st->ext_ref;

Expand Down Expand Up @@ -102,7 +94,7 @@ static irqreturn_t ad7298_trigger_handler(int irq, void *p)

if (ring->scan_timestamp) {
time_ns = iio_get_time_ns();
memcpy((u8 *)buf + st->d_size - sizeof(s64),
memcpy((u8 *)buf + indio_dev->scan_bytes - sizeof(s64),
&time_ns, sizeof(time_ns));
}

Expand Down

0 comments on commit 8f03aab

Please sign in to comment.