Skip to content

Commit 67f0412

Browse files
spectrum70nunojsa
authored andcommitted
iio: backend: add support for data source get
Add backend support for getting the data source used. The ad3552r HDL implements an internal ramp generator, so adding the getter to allow data source get/set by debugfs. Note: removed quotes for GPL export over porting to ADI linux. Reviewed-by: Nuno Sá <nuno.sa@analog.com> Signed-off-by: Angelo Dureghello <adureghello@baylibre.com> Link: https://patch.msgid.link/20250409-wip-bl-ad3552r-fixes-v5-3-fb429c3a6515@baylibre.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent 481fb8d commit 67f0412

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

drivers/iio/industrialio-backend.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,34 @@ int iio_backend_data_source_set(struct iio_backend *back, unsigned int chan,
378378
}
379379
EXPORT_SYMBOL_NS_GPL(iio_backend_data_source_set, IIO_BACKEND);
380380

381+
/**
382+
* iio_backend_data_source_get - Get current data source
383+
* @back: Backend device
384+
* @chan: Channel number
385+
* @data: Pointer to receive the current source value
386+
*
387+
* A given backend may have different sources to stream/sync data. This allows
388+
* to know what source is in use.
389+
*
390+
* RETURNS:
391+
* 0 on success, negative error number on failure.
392+
*/
393+
int iio_backend_data_source_get(struct iio_backend *back, unsigned int chan,
394+
enum iio_backend_data_source *data)
395+
{
396+
int ret;
397+
398+
ret = iio_backend_op_call(back, data_source_get, chan, data);
399+
if (ret)
400+
return ret;
401+
402+
if (*data >= IIO_BACKEND_DATA_SOURCE_MAX)
403+
return -EINVAL;
404+
405+
return 0;
406+
}
407+
EXPORT_SYMBOL_NS_GPL(iio_backend_data_source_get, IIO_BACKEND);
408+
381409
/**
382410
* iio_backend_set_sampling_freq - Set channel sampling rate
383411
* @back: Backend device

include/linux/iio/backend.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ enum iio_backend_sample_trigger {
7878
* @chan_disable: Disable one channel.
7979
* @data_format_set: Configure the data format for a specific channel.
8080
* @data_source_set: Configure the data source for a specific channel.
81+
* @data_source_get: Data source getter for a specific channel.
8182
* @set_sample_rate: Configure the sampling rate for a specific channel.
8283
* @test_pattern_set: Configure a test pattern.
8384
* @chan_status: Get the channel status.
@@ -106,6 +107,8 @@ struct iio_backend_ops {
106107
const struct iio_backend_data_fmt *data);
107108
int (*data_source_set)(struct iio_backend *back, unsigned int chan,
108109
enum iio_backend_data_source data);
110+
int (*data_source_get)(struct iio_backend *back, unsigned int chan,
111+
enum iio_backend_data_source *data);
109112
int (*set_sample_rate)(struct iio_backend *back, unsigned int chan,
110113
u64 sample_rate_hz);
111114
int (*test_pattern_set)(struct iio_backend *back,
@@ -162,6 +165,8 @@ int iio_backend_data_format_set(struct iio_backend *back, unsigned int chan,
162165
const struct iio_backend_data_fmt *data);
163166
int iio_backend_data_source_set(struct iio_backend *back, unsigned int chan,
164167
enum iio_backend_data_source data);
168+
int iio_backend_data_source_get(struct iio_backend *back, unsigned int chan,
169+
enum iio_backend_data_source *data);
165170
int iio_backend_set_sampling_freq(struct iio_backend *back, unsigned int chan,
166171
u64 sample_rate_hz);
167172
int iio_backend_test_pattern_set(struct iio_backend *back,

0 commit comments

Comments
 (0)