[PATCH v3 07/11] IIO: consumer: allow to set buffer sizes

Arnaud Pouliquen arnaud.pouliquen at st.com
Mon Mar 20 04:30:48 PDT 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 linux-arm-kernel mailing list