On 18/05/2016 at 17:16:18 +0200, Quentin Schulz wrote : > > The Nuvoton NAU7802 ADC is able to adjust its gain but prior knowledge of > its possible values was required to adjust it. Users had to guess the > possible gain values based on the ADC datasheet or on this driver's code. > > This exposes the possible values in the in_voltage_scale_available file of > each nau7802 ADC device. The gain is set for the whole ADC and is therefore > not configurable by channel. Thus, there exists only one > in_voltage_scale_available file for each nau7802 ADC device even if it has > two separate channels. > > Signed-off-by: Quentin Schulz <quentin.schulz@xxxxxxxxxxxxxxxxxx> Acked-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxxxxxxxxx> > --- > > There exists two files to set the gain: in_voltageX_scale_available and > in_voltage-voltage_scale_available. What are the differences between those > two? What are the use cases for each? Which one should I have used? > > drivers/iio/adc/nau7802.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/drivers/iio/adc/nau7802.c b/drivers/iio/adc/nau7802.c > index e525aa6..57365c5 100644 > --- a/drivers/iio/adc/nau7802.c > +++ b/drivers/iio/adc/nau7802.c > @@ -79,10 +79,29 @@ static const struct iio_chan_spec nau7802_chan_array[] = { > static const u16 nau7802_sample_freq_avail[] = {10, 20, 40, 80, > 10, 10, 10, 320}; > > +static ssize_t nau7802_show_scales(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + struct nau7802_state *st = iio_priv(dev_to_iio_dev(dev)); > + int i, len = 0; > + > + for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) > + len += scnprintf(buf + len, PAGE_SIZE - len, "0.%09d ", > + st->scale_avail[i]); > + > + buf[len-1] = '\n'; > + > + return len; > +} > + > static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("10 40 80 320"); > > +static IIO_DEVICE_ATTR(in_voltage_scale_available, S_IRUGO, nau7802_show_scales, > + NULL, 0); > + > static struct attribute *nau7802_attributes[] = { > &iio_const_attr_sampling_frequency_available.dev_attr.attr, > + &iio_dev_attr_in_voltage_scale_available.dev_attr.attr, > NULL > }; > > -- > 2.5.0 > -- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html