On 03/19/2017 11:44 PM, Jonathan Cameron wrote: > On 17/03/17 14:08, Arnaud Pouliquen wrote: >> Add iio consumer API to set buffer size and watermark according >> to sysfs API. >> >> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@xxxxxx> > Hmm. Not keen on the length one. Setting a requested watermark > is fair enough. There is no actually buffer in these cases though > so setting it's length is downright odd.. Length and watermark are configurable from user land through sysfs. Seems to me logic to also propose it in inkern API... But I can clean length , no problem. > > Guess this is part of the hacks we need to clean up by doing > the dma buffer consumer stuff right... Yes all is linked :-). > > Jonathan >> --- >> drivers/iio/buffer/industrialio-buffer-cb.c | 12 ++++++++++++ >> include/linux/iio/consumer.h | 13 +++++++++++++ >> 2 files changed, 25 insertions(+) >> >> diff --git a/drivers/iio/buffer/industrialio-buffer-cb.c b/drivers/iio/buffer/industrialio-buffer-cb.c >> index b8f550e..43c066a 100644 >> --- a/drivers/iio/buffer/industrialio-buffer-cb.c >> +++ b/drivers/iio/buffer/industrialio-buffer-cb.c >> @@ -103,6 +103,18 @@ struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev, >> } >> EXPORT_SYMBOL_GPL(iio_channel_get_all_cb); >> >> +int iio_channel_cb_set_buffer_params(struct iio_cb_buffer *cb_buff, >> + size_t length, size_t watermark) >> +{ >> + if (!length || length < watermark) >> + return -EINVAL; >> + cb_buff->buffer.watermark = watermark; >> + cb_buff->buffer.length = length; >> + >> + return 0; >> +} >> +EXPORT_SYMBOL_GPL(iio_channel_start_all_cb); >> + >> int iio_channel_start_all_cb(struct iio_cb_buffer *cb_buff) >> { >> return iio_update_buffers(cb_buff->indio_dev, &cb_buff->buffer, >> diff --git a/include/linux/iio/consumer.h b/include/linux/iio/consumer.h >> index cb44771..0f6e94d 100644 >> --- a/include/linux/iio/consumer.h >> +++ b/include/linux/iio/consumer.h >> @@ -134,6 +134,19 @@ struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev, >> void *private), >> void *private); >> /** >> + * iio_channel_cb_set_buffer_size() - set the buffer length. >> + * @cb_buffer: The callback buffer from whom we want the channel >> + * information. >> + * @length: buffer length in bytes >> + * @watermark: buffer watermark in bytes >> + * >> + * This function allows to configure the buffer length. The watermark if >> + * forced to half of the buffer. >> + */ >> +int iio_channel_cb_set_buffer_params(struct iio_cb_buffer *cb_buffer, >> + size_t length, size_t watermark); >> + >> +/** >> * iio_channel_release_all_cb() - release and unregister the callback. >> * @cb_buffer: The callback buffer that was allocated. >> */ >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html