[alsa-devel] [PATCH v3 07/11] IIO: consumer: allow to set buffer sizes
Jonathan Cameron
jic23 at kernel.org
Sat Mar 25 17:01:21 CET 2017
On 20/03/17 11:30, Arnaud Pouliquen wrote:
>
>
> 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.
The concept of length for the consumer interface doesn't currently
make sense as it refers to an actual buffer. The consumer interface
currently passes one entry at a time...
>
>>
>> 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
>>
> --
> 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