1 #include <linux/export.h>
4 #include <linux/kernel.h>
6 #include <linux/slab.h>
9 #include "../ring_sw.h"
19 static int adis16201_read_ring_data(
struct iio_dev *indio_dev,
u8 *
rx)
29 spi_message_init(&
msg);
31 memset(xfers, 0,
sizeof(xfers));
33 xfers[
i].bits_per_word = 8;
34 xfers[
i].cs_change = 1;
36 xfers[
i].delay_usecs = 20;
38 xfers[
i].tx_buf = st->tx + 2 *
i;
41 st->tx[2 * i + 1] = 0;
44 xfers[
i].rx_buf = rx + 2 * (i - 1);
45 spi_message_add_tail(&xfers[i], &
msg);
50 dev_err(&st->
us->dev,
"problem when burst reading");
60 static irqreturn_t adis16201_trigger_handler(
int irq,
void *
p)
71 dev_err(&st->
us->dev,
"memory alloc failed in ring bh");
76 && adis16201_read_ring_data(indio_dev, st->
rx) >= 0)
109 struct iio_buffer *
ring;
117 ring->scan_timestamp =
true;
118 indio_dev->
setup_ops = &adis16201_ring_setup_ops;
121 &adis16201_trigger_handler,
124 "adis16201_consumer%d",
128 goto error_iio_sw_rb_free;
133 error_iio_sw_rb_free: