/*
* DMA (thus cache coherency maintenance) requires the
* transfer buffers to live in their own cache lines.
+ * 8 * 16-bit samples + 64-bit timestamp
*/
-
- unsigned short data[8] ____cacheline_aligned;
+ unsigned short data[12] ____cacheline_aligned;
};
struct ad7606_bus_ops {
struct ad7606_state *st = container_of(work_s, struct ad7606_state,
poll_work);
struct iio_dev *indio_dev = iio_priv_to_dev(st);
- __u8 *buf;
int ret;
- buf = kzalloc(indio_dev->scan_bytes, GFP_KERNEL);
- if (!buf)
- return;
-
if (gpio_is_valid(st->pdata->gpio_frstdata)) {
- ret = st->bops->read_block(st->dev, 1, buf);
+ ret = st->bops->read_block(st->dev, 1, st->data);
if (ret)
goto done;
if (!gpio_get_value(st->pdata->gpio_frstdata)) {
goto done;
}
ret = st->bops->read_block(st->dev,
- st->chip_info->num_channels - 1, buf + 2);
+ st->chip_info->num_channels - 1, st->data + 1);
if (ret)
goto done;
} else {
ret = st->bops->read_block(st->dev,
- st->chip_info->num_channels, buf);
+ st->chip_info->num_channels, st->data);
if (ret)
goto done;
}
- iio_push_to_buffers_with_timestamp(indio_dev, buf,
+ iio_push_to_buffers_with_timestamp(indio_dev, st->data,
iio_get_time_ns(indio_dev));
done:
gpio_set_value(st->pdata->gpio_convst, 0);
iio_trigger_notify_done(indio_dev->trig);
- kfree(buf);
}
int ad7606_register_ring_funcs_and_init(struct iio_dev *indio_dev)