Skip to content

Commit 18e7ad3

Browse files
committed
iio: backend: add support for data size set
Add backend support for setting the data size used. Signed-off-by: Antoniu Miclaus <[email protected]>
1 parent e98fbe9 commit 18e7ad3

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

drivers/iio/industrialio-backend.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,27 @@ int iio_backend_interface_type_get(struct iio_backend *back,
473473
}
474474
EXPORT_SYMBOL_NS_GPL(iio_backend_interface_type_get, IIO_BACKEND);
475475

476+
/**
477+
* iio_backend_data_size_set - set the data width/size in the data bus.
478+
* @back: Backend device
479+
* @size: Size in bits
480+
*
481+
* Some frontend devices can dynamically control the word/data size on the
482+
* interface/data bus. Hence, the backend device needs to be aware of it so
483+
* data can be correctly transferred.
484+
*
485+
* RETURNS:
486+
* 0 on success, negative error number on failure.
487+
*/
488+
int iio_backend_data_size_set(struct iio_backend *back, ssize_t size)
489+
{
490+
if (!size)
491+
return -EINVAL;
492+
493+
return iio_backend_op_call(back, data_size_set, size);
494+
}
495+
EXPORT_SYMBOL_NS_GPL(iio_backend_data_size_set, IIO_BACKEND);
496+
476497
/**
477498
* iio_backend_extend_chan_spec - Extend an IIO channel
478499
* @indio_dev: IIO device

include/linux/iio/backend.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ enum iio_backend_interface_type {
8787
* @ext_info_set: Extended info setter.
8888
* @ext_info_get: Extended info getter.
8989
* @interface_type_get: Interface type.
90+
* @data_size_set: Data size.
9091
**/
9192
struct iio_backend_ops {
9293
int (*enable)(struct iio_backend *back);
@@ -121,6 +122,7 @@ struct iio_backend_ops {
121122
const struct iio_chan_spec *chan, char *buf);
122123
int (*interface_type_get)(struct iio_backend *back,
123124
enum iio_backend_interface_type *type);
125+
int (*data_size_set)(struct iio_backend *back, ssize_t size);
124126
};
125127

126128
int iio_backend_chan_enable(struct iio_backend *back, unsigned int chan);
@@ -152,6 +154,7 @@ ssize_t iio_backend_ext_info_get(struct iio_dev *indio_dev, uintptr_t private,
152154

153155
int iio_backend_interface_type_get(struct iio_backend *back,
154156
enum iio_backend_interface_type *type);
157+
int iio_backend_data_size_set(struct iio_backend *back, ssize_t size);
155158
int iio_backend_extend_chan_spec(struct iio_dev *indio_dev,
156159
struct iio_backend *back,
157160
struct iio_chan_spec *chan);

0 commit comments

Comments
 (0)