iio:ad5064: Initialize register cache correctly

Initialize the register cache to the proper mid-scale value based on the
resolution of the device.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
Lars-Peter Clausen 2013-03-01 13:07:00 +00:00 committed by Jonathan Cameron
parent c5ef717a77
commit f77ae9d8fd

View File

@ -438,6 +438,7 @@ static int ad5064_probe(struct device *dev, enum ad5064_type type,
{ {
struct iio_dev *indio_dev; struct iio_dev *indio_dev;
struct ad5064_state *st; struct ad5064_state *st;
unsigned int midscale;
unsigned int i; unsigned int i;
int ret; int ret;
@ -474,11 +475,6 @@ static int ad5064_probe(struct device *dev, enum ad5064_type type,
goto error_free_reg; goto error_free_reg;
} }
for (i = 0; i < st->chip_info->num_channels; ++i) {
st->pwr_down_mode[i] = AD5064_LDAC_PWRDN_1K;
st->dac_cache[i] = 0x8000;
}
indio_dev->dev.parent = dev; indio_dev->dev.parent = dev;
indio_dev->name = name; indio_dev->name = name;
indio_dev->info = &ad5064_info; indio_dev->info = &ad5064_info;
@ -486,6 +482,13 @@ static int ad5064_probe(struct device *dev, enum ad5064_type type,
indio_dev->channels = st->chip_info->channels; indio_dev->channels = st->chip_info->channels;
indio_dev->num_channels = st->chip_info->num_channels; indio_dev->num_channels = st->chip_info->num_channels;
midscale = (1 << indio_dev->channels[0].scan_type.realbits) / 2;
for (i = 0; i < st->chip_info->num_channels; ++i) {
st->pwr_down_mode[i] = AD5064_LDAC_PWRDN_1K;
st->dac_cache[i] = midscale;
}
ret = iio_device_register(indio_dev); ret = iio_device_register(indio_dev);
if (ret) if (ret)
goto error_disable_reg; goto error_disable_reg;