[alsa-devel] [PATCH v3 07/11] IIO: consumer: allow to set buffer sizes
Arnaud Pouliquen
arnaud.pouliquen at st.com
Mon Mar 20 12:30:48 CET 2017
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 at st.com>
> 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 at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
More information about the Alsa-devel
mailing list