mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-03 12:24:37 -04:00
iio: backend: introduce struct iio_backend_info
Instead of only passing the backend ops when calling devm_iio_backend_register(), pass an info like structure that will contains the ops and additional information. Fow now, the backend name is being added as that will be used by the debugFS interface introduced in a later patch. It also opens the door for further customizations passed by backends. All users of devm_iio_backend_register() were updated accordingly. Signed-off-by: Nuno Sa <nuno.sa@analog.com> Link: https://patch.msgid.link/20240802-dev-iio-backend-add-debugfs-v2-1-4cb62852f0d0@analog.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
committed by
Jonathan Cameron
parent
958000dfa3
commit
2256f37e24
@@ -273,7 +273,7 @@ static const struct regmap_config axi_adc_regmap_config = {
|
||||
.reg_stride = 4,
|
||||
};
|
||||
|
||||
static const struct iio_backend_ops adi_axi_adc_generic = {
|
||||
static const struct iio_backend_ops adi_axi_adc_ops = {
|
||||
.enable = axi_adc_enable,
|
||||
.disable = axi_adc_disable,
|
||||
.data_format_set = axi_adc_data_format_set,
|
||||
@@ -287,6 +287,11 @@ static const struct iio_backend_ops adi_axi_adc_generic = {
|
||||
.chan_status = axi_adc_chan_status,
|
||||
};
|
||||
|
||||
static const struct iio_backend_info adi_axi_adc_generic = {
|
||||
.name = "axi-adc",
|
||||
.ops = &adi_axi_adc_ops,
|
||||
};
|
||||
|
||||
static int adi_axi_adc_probe(struct platform_device *pdev)
|
||||
{
|
||||
const unsigned int *expected_ver;
|
||||
|
||||
@@ -507,7 +507,7 @@ static int axi_dac_set_sample_rate(struct iio_backend *back, unsigned int chan,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct iio_backend_ops axi_dac_generic = {
|
||||
static const struct iio_backend_ops axi_dac_generic_ops = {
|
||||
.enable = axi_dac_enable,
|
||||
.disable = axi_dac_disable,
|
||||
.request_buffer = axi_dac_request_buffer,
|
||||
@@ -519,6 +519,11 @@ static const struct iio_backend_ops axi_dac_generic = {
|
||||
.set_sample_rate = axi_dac_set_sample_rate,
|
||||
};
|
||||
|
||||
static const struct iio_backend_info axi_dac_generic = {
|
||||
.name = "axi-dac",
|
||||
.ops = &axi_dac_generic_ops,
|
||||
};
|
||||
|
||||
static const struct regmap_config axi_dac_regmap_config = {
|
||||
.val_bits = 32,
|
||||
.reg_bits = 32,
|
||||
|
||||
@@ -641,20 +641,20 @@ static void iio_backend_unregister(void *arg)
|
||||
/**
|
||||
* devm_iio_backend_register - Device managed backend device register
|
||||
* @dev: Backend device being registered
|
||||
* @ops: Backend ops
|
||||
* @info: Backend info
|
||||
* @priv: Device private data
|
||||
*
|
||||
* @ops is mandatory. Not providing it results in -EINVAL.
|
||||
* @info is mandatory. Not providing it results in -EINVAL.
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 on success, negative error number on failure.
|
||||
*/
|
||||
int devm_iio_backend_register(struct device *dev,
|
||||
const struct iio_backend_ops *ops, void *priv)
|
||||
const struct iio_backend_info *info, void *priv)
|
||||
{
|
||||
struct iio_backend *back;
|
||||
|
||||
if (!ops)
|
||||
if (!info || !info->ops)
|
||||
return dev_err_probe(dev, -EINVAL, "No backend ops given\n");
|
||||
|
||||
/*
|
||||
@@ -667,7 +667,7 @@ int devm_iio_backend_register(struct device *dev,
|
||||
if (!back)
|
||||
return -ENOMEM;
|
||||
|
||||
back->ops = ops;
|
||||
back->ops = info->ops;
|
||||
back->owner = dev->driver->owner;
|
||||
back->dev = dev;
|
||||
back->priv = priv;
|
||||
|
||||
@@ -115,6 +115,16 @@ struct iio_backend_ops {
|
||||
const struct iio_chan_spec *chan, char *buf);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iio_backend_info - info structure for an iio_backend
|
||||
* @name: Backend name.
|
||||
* @ops: Backend operations.
|
||||
*/
|
||||
struct iio_backend_info {
|
||||
const char *name;
|
||||
const struct iio_backend_ops *ops;
|
||||
};
|
||||
|
||||
int iio_backend_chan_enable(struct iio_backend *back, unsigned int chan);
|
||||
int iio_backend_chan_disable(struct iio_backend *back, unsigned int chan);
|
||||
int devm_iio_backend_enable(struct device *dev, struct iio_backend *back);
|
||||
@@ -151,6 +161,6 @@ __devm_iio_backend_get_from_fwnode_lookup(struct device *dev,
|
||||
struct fwnode_handle *fwnode);
|
||||
|
||||
int devm_iio_backend_register(struct device *dev,
|
||||
const struct iio_backend_ops *ops, void *priv);
|
||||
const struct iio_backend_info *info, void *priv);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user