Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15bbb779 authored by Jonathan Cameron's avatar Jonathan Cameron Committed by Greg Kroah-Hartman
Browse files

staging:iio:adc:ad7192 unwind use of is_visible for attribute group.



It saves a couple of lines of code but reduces simplicity of code.
I generally wish to discourage use of is_visible throughout IIO.

Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
Acked-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a046c1e8
Loading
Loading
Loading
Loading
+25 −18
Original line number Diff line number Diff line
@@ -822,25 +822,20 @@ static struct attribute *ad7192_attributes[] = {
	NULL
};

static umode_t ad7192_attr_is_visible(struct kobject *kobj,
				     struct attribute *attr, int n)
{
	struct device *dev = container_of(kobj, struct device, kobj);
	struct iio_dev *indio_dev = dev_get_drvdata(dev);
	struct ad7192_state *st = iio_priv(indio_dev);

	umode_t mode = attr->mode;

	if ((st->devid != ID_AD7195) &&
		(attr == &iio_dev_attr_ac_excitation_en.dev_attr.attr))
		mode = 0;

	return mode;
}

static const struct attribute_group ad7192_attribute_group = {
	.attrs = ad7192_attributes,
	.is_visible = ad7192_attr_is_visible,
};

static struct attribute *ad7195_attributes[] = {
	&iio_dev_attr_sampling_frequency.dev_attr.attr,
	&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
};

static const struct attribute_group ad7195_attribute_group = {
	.attrs = ad7195_attributes,
};

static int ad7192_read_raw(struct iio_dev *indio_dev,
@@ -970,6 +965,15 @@ static const struct iio_info ad7192_info = {
	.driver_module = THIS_MODULE,
};

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,
	.attrs = &ad7195_attribute_group,
	.validate_trigger = ad7192_validate_trigger,
	.driver_module = THIS_MODULE,
};

#define AD7192_CHAN_DIFF(_chan, _chan2, _name, _address, _si)		\
	{ .type = IIO_VOLTAGE,						\
	  .differential = 1,						\
@@ -1062,6 +1066,9 @@ static int __devinit ad7192_probe(struct spi_device *spi)
	indio_dev->channels = ad7192_channels;
	indio_dev->num_channels = ARRAY_SIZE(ad7192_channels);
	indio_dev->available_scan_masks = st->available_scan_masks;
	if (st->devid == ID_AD7195)
		indio_dev->info = &ad7195_info;
	else
		indio_dev->info = &ad7192_info;

	for (i = 0; i < indio_dev->num_channels; i++)