mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
iio:ad5380: Report scale as fractional value
Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
ca3bc8b626
commit
4f2c188597
@ -204,7 +204,6 @@ static int ad5380_read_raw(struct iio_dev *indio_dev,
|
||||
struct iio_chan_spec const *chan, int *val, int *val2, long info)
|
||||
{
|
||||
struct ad5380_state *st = iio_priv(indio_dev);
|
||||
unsigned long scale_uv;
|
||||
int ret;
|
||||
|
||||
switch (info) {
|
||||
@ -225,10 +224,9 @@ static int ad5380_read_raw(struct iio_dev *indio_dev,
|
||||
val -= (1 << chan->scan_type.realbits) / 2;
|
||||
return IIO_VAL_INT;
|
||||
case IIO_CHAN_INFO_SCALE:
|
||||
scale_uv = ((2 * st->vref) >> chan->scan_type.realbits) * 100;
|
||||
*val = scale_uv / 100000;
|
||||
*val2 = (scale_uv % 100000) * 10;
|
||||
return IIO_VAL_INT_PLUS_MICRO;
|
||||
*val = 2 * st->vref;
|
||||
*val2 = chan->scan_type.realbits;
|
||||
return IIO_VAL_FRACTIONAL_LOG2;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -271,72 +269,72 @@ static const struct ad5380_chip_info ad5380_chip_info_tbl[] = {
|
||||
[ID_AD5380_3] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 40,
|
||||
.int_vref = 1250000,
|
||||
.int_vref = 1250,
|
||||
},
|
||||
[ID_AD5380_5] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 40,
|
||||
.int_vref = 2500000,
|
||||
.int_vref = 2500,
|
||||
},
|
||||
[ID_AD5381_3] = {
|
||||
.channel_template = AD5380_CHANNEL(12),
|
||||
.num_channels = 16,
|
||||
.int_vref = 1250000,
|
||||
.int_vref = 1250,
|
||||
},
|
||||
[ID_AD5381_5] = {
|
||||
.channel_template = AD5380_CHANNEL(12),
|
||||
.num_channels = 16,
|
||||
.int_vref = 2500000,
|
||||
.int_vref = 2500,
|
||||
},
|
||||
[ID_AD5382_3] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 32,
|
||||
.int_vref = 1250000,
|
||||
.int_vref = 1250,
|
||||
},
|
||||
[ID_AD5382_5] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 32,
|
||||
.int_vref = 2500000,
|
||||
.int_vref = 2500,
|
||||
},
|
||||
[ID_AD5383_3] = {
|
||||
.channel_template = AD5380_CHANNEL(12),
|
||||
.num_channels = 32,
|
||||
.int_vref = 1250000,
|
||||
.int_vref = 1250,
|
||||
},
|
||||
[ID_AD5383_5] = {
|
||||
.channel_template = AD5380_CHANNEL(12),
|
||||
.num_channels = 32,
|
||||
.int_vref = 2500000,
|
||||
.int_vref = 2500,
|
||||
},
|
||||
[ID_AD5390_3] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 16,
|
||||
.int_vref = 1250000,
|
||||
.int_vref = 1250,
|
||||
},
|
||||
[ID_AD5390_5] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 16,
|
||||
.int_vref = 2500000,
|
||||
.int_vref = 2500,
|
||||
},
|
||||
[ID_AD5391_3] = {
|
||||
.channel_template = AD5380_CHANNEL(12),
|
||||
.num_channels = 16,
|
||||
.int_vref = 1250000,
|
||||
.int_vref = 1250,
|
||||
},
|
||||
[ID_AD5391_5] = {
|
||||
.channel_template = AD5380_CHANNEL(12),
|
||||
.num_channels = 16,
|
||||
.int_vref = 2500000,
|
||||
.int_vref = 2500,
|
||||
},
|
||||
[ID_AD5392_3] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 8,
|
||||
.int_vref = 1250000,
|
||||
.int_vref = 1250,
|
||||
},
|
||||
[ID_AD5392_5] = {
|
||||
.channel_template = AD5380_CHANNEL(14),
|
||||
.num_channels = 8,
|
||||
.int_vref = 2500000,
|
||||
.int_vref = 2500,
|
||||
},
|
||||
};
|
||||
|
||||
@ -395,7 +393,7 @@ static int ad5380_probe(struct device *dev, struct regmap *regmap,
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (st->chip_info->int_vref == 2500000)
|
||||
if (st->chip_info->int_vref == 2500)
|
||||
ctrl |= AD5380_CTRL_INT_VREF_2V5;
|
||||
|
||||
st->vref_reg = devm_regulator_get(dev, "vref");
|
||||
@ -411,7 +409,7 @@ static int ad5380_probe(struct device *dev, struct regmap *regmap,
|
||||
if (ret < 0)
|
||||
goto error_disable_reg;
|
||||
|
||||
st->vref = ret;
|
||||
st->vref = ret / 1000;
|
||||
} else {
|
||||
st->vref = st->chip_info->int_vref;
|
||||
ctrl |= AD5380_CTRL_INT_VREF_EN;
|
||||
|
Loading…
Reference in New Issue
Block a user