mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 18:41:23 +00:00
staging: iio: adc: ad7192: Use read_avail for available attributes
This patch removes the in_voltage-voltage_scale_available and in_voltage_scale_available attributes. These are replaced with available attributes added in info_mask_shared_by_type_available. With this modification the iio core will be responsible with naming the attributes thus removing the checkpatch warning related to in_voltage-voltage_scale_available naming. Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
5448094323
commit
2b0d1c6f12
@ -347,30 +347,6 @@ static int ad7192_setup(struct ad7192_state *st, struct device_node *np)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
ad7192_show_scale_available(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct iio_dev *indio_dev = dev_to_iio_dev(dev);
|
||||
struct ad7192_state *st = iio_priv(indio_dev);
|
||||
int i, len = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
|
||||
len += sprintf(buf + len, "%d.%09u ", st->scale_avail[i][0],
|
||||
st->scale_avail[i][1]);
|
||||
|
||||
len += sprintf(buf + len, "\n");
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static IIO_DEVICE_ATTR_NAMED(in_v_m_v_scale_available,
|
||||
in_voltage-voltage_scale_available,
|
||||
0444, ad7192_show_scale_available, NULL, 0);
|
||||
|
||||
static IIO_DEVICE_ATTR(in_voltage_scale_available, 0444,
|
||||
ad7192_show_scale_available, NULL, 0);
|
||||
|
||||
static ssize_t ad7192_show_ac_excitation(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
@ -445,8 +421,6 @@ static IIO_DEVICE_ATTR(ac_excitation_en, 0644,
|
||||
AD7192_REG_MODE);
|
||||
|
||||
static struct attribute *ad7192_attributes[] = {
|
||||
&iio_dev_attr_in_v_m_v_scale_available.dev_attr.attr,
|
||||
&iio_dev_attr_in_voltage_scale_available.dev_attr.attr,
|
||||
&iio_dev_attr_bridge_switch_en.dev_attr.attr,
|
||||
&iio_dev_attr_ac_excitation_en.dev_attr.attr,
|
||||
NULL
|
||||
@ -457,8 +431,6 @@ static const struct attribute_group ad7192_attribute_group = {
|
||||
};
|
||||
|
||||
static struct attribute *ad7195_attributes[] = {
|
||||
&iio_dev_attr_in_v_m_v_scale_available.dev_attr.attr,
|
||||
&iio_dev_attr_in_voltage_scale_available.dev_attr.attr,
|
||||
&iio_dev_attr_bridge_switch_en.dev_attr.attr,
|
||||
NULL
|
||||
};
|
||||
@ -589,10 +561,31 @@ static int ad7192_write_raw_get_fmt(struct iio_dev *indio_dev,
|
||||
}
|
||||
}
|
||||
|
||||
static int ad7192_read_avail(struct iio_dev *indio_dev,
|
||||
struct iio_chan_spec const *chan,
|
||||
const int **vals, int *type, int *length,
|
||||
long mask)
|
||||
{
|
||||
struct ad7192_state *st = iio_priv(indio_dev);
|
||||
|
||||
switch (mask) {
|
||||
case IIO_CHAN_INFO_SCALE:
|
||||
*vals = (int *)st->scale_avail;
|
||||
*type = IIO_VAL_INT_PLUS_NANO;
|
||||
/* Values are stored in a 2D matrix */
|
||||
*length = ARRAY_SIZE(st->scale_avail) * 2;
|
||||
|
||||
return IIO_AVAIL_LIST;
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static const struct iio_info ad7192_info = {
|
||||
.read_raw = ad7192_read_raw,
|
||||
.write_raw = ad7192_write_raw,
|
||||
.write_raw_get_fmt = ad7192_write_raw_get_fmt,
|
||||
.read_avail = ad7192_read_avail,
|
||||
.attrs = &ad7192_attribute_group,
|
||||
.validate_trigger = ad_sd_validate_trigger,
|
||||
};
|
||||
@ -601,6 +594,7 @@ static const struct iio_info ad7195_info = {
|
||||
.read_raw = ad7192_read_raw,
|
||||
.write_raw = ad7192_write_raw,
|
||||
.write_raw_get_fmt = ad7192_write_raw_get_fmt,
|
||||
.read_avail = ad7192_read_avail,
|
||||
.attrs = &ad7195_attribute_group,
|
||||
.validate_trigger = ad_sd_validate_trigger,
|
||||
};
|
||||
@ -635,6 +629,42 @@ static const struct iio_chan_spec ad7193_channels[] = {
|
||||
IIO_CHAN_SOFT_TIMESTAMP(14),
|
||||
};
|
||||
|
||||
static int ad7192_channels_config(struct iio_dev *indio_dev)
|
||||
{
|
||||
struct ad7192_state *st = iio_priv(indio_dev);
|
||||
const struct iio_chan_spec *channels;
|
||||
struct iio_chan_spec *chan;
|
||||
int i;
|
||||
|
||||
switch (st->devid) {
|
||||
case ID_AD7193:
|
||||
channels = ad7193_channels;
|
||||
indio_dev->num_channels = ARRAY_SIZE(ad7193_channels);
|
||||
break;
|
||||
default:
|
||||
channels = ad7192_channels;
|
||||
indio_dev->num_channels = ARRAY_SIZE(ad7192_channels);
|
||||
break;
|
||||
}
|
||||
|
||||
chan = devm_kcalloc(indio_dev->dev.parent, indio_dev->num_channels,
|
||||
sizeof(*chan), GFP_KERNEL);
|
||||
if (!chan)
|
||||
return -ENOMEM;
|
||||
|
||||
indio_dev->channels = chan;
|
||||
|
||||
for (i = 0; i < indio_dev->num_channels; i++) {
|
||||
*chan = channels[i];
|
||||
if (chan->type != IIO_TEMP)
|
||||
chan->info_mask_shared_by_type_available |=
|
||||
BIT(IIO_CHAN_INFO_SCALE);
|
||||
chan++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ad7192_probe(struct spi_device *spi)
|
||||
{
|
||||
const struct ad7192_platform_data *pdata = dev_get_platdata(&spi->dev);
|
||||
@ -697,16 +727,9 @@ static int ad7192_probe(struct spi_device *spi)
|
||||
indio_dev->name = spi_get_device_id(spi)->name;
|
||||
indio_dev->modes = INDIO_DIRECT_MODE;
|
||||
|
||||
switch (st->devid) {
|
||||
case ID_AD7193:
|
||||
indio_dev->channels = ad7193_channels;
|
||||
indio_dev->num_channels = ARRAY_SIZE(ad7193_channels);
|
||||
break;
|
||||
default:
|
||||
indio_dev->channels = ad7192_channels;
|
||||
indio_dev->num_channels = ARRAY_SIZE(ad7192_channels);
|
||||
break;
|
||||
}
|
||||
ret = ad7192_channels_config(indio_dev);
|
||||
if (ret < 0)
|
||||
goto error_disable_dvdd;
|
||||
|
||||
if (st->devid == ID_AD7195)
|
||||
indio_dev->info = &ad7195_info;
|
||||
|
Loading…
Reference in New Issue
Block a user