staging:iio: Add support for multiple buffers
Route all buffer writes through the demux. Addition or removal of a buffer results in tear down and setup of all the buffers for a given device. Signed-off-by: Jonathan Cameron <jic23@kernel.org> Tested-by: srinivas pandruvada <srinivas.pandruvada@intel.com>
This commit is contained in:
@@ -164,7 +164,6 @@ static irqreturn_t adjd_s311_trigger_handler(int irq, void *p)
|
||||
struct iio_poll_func *pf = p;
|
||||
struct iio_dev *indio_dev = pf->indio_dev;
|
||||
struct adjd_s311_data *data = iio_priv(indio_dev);
|
||||
struct iio_buffer *buffer = indio_dev->buffer;
|
||||
s64 time_ns = iio_get_time_ns();
|
||||
int len = 0;
|
||||
int i, j = 0;
|
||||
@@ -187,7 +186,7 @@ static irqreturn_t adjd_s311_trigger_handler(int irq, void *p)
|
||||
if (indio_dev->scan_timestamp)
|
||||
*(s64 *)((u8 *)data->buffer + ALIGN(len, sizeof(s64)))
|
||||
= time_ns;
|
||||
iio_push_to_buffer(buffer, (u8 *)data->buffer);
|
||||
iio_push_to_buffers(indio_dev, (u8 *)data->buffer);
|
||||
|
||||
done:
|
||||
iio_trigger_notify_done(indio_dev->trig);
|
||||
|
@@ -176,21 +176,8 @@ static const struct iio_info als_info = {
|
||||
/* Function to push data to buffer */
|
||||
static void hid_sensor_push_data(struct iio_dev *indio_dev, u8 *data, int len)
|
||||
{
|
||||
struct iio_buffer *buffer = indio_dev->buffer;
|
||||
int datum_sz;
|
||||
|
||||
dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n");
|
||||
if (!buffer) {
|
||||
dev_err(&indio_dev->dev, "Buffer == NULL\n");
|
||||
return;
|
||||
}
|
||||
datum_sz = buffer->access->get_bytes_per_datum(buffer);
|
||||
if (len > datum_sz) {
|
||||
dev_err(&indio_dev->dev, "Datum size mismatch %d:%d\n", len,
|
||||
datum_sz);
|
||||
return;
|
||||
}
|
||||
iio_push_to_buffer(buffer, (u8 *)data);
|
||||
iio_push_to_buffers(indio_dev, (u8 *)data);
|
||||
}
|
||||
|
||||
/* Callback handler to send event after all samples are received and captured */
|
||||
|
Reference in New Issue
Block a user