Lines Matching +full:iio +full:- +full:consumer
1 // SPDX-License-Identifier: GPL-2.0-only
3 * IIO DAC driver for Analog Devices AD8801 DAC
5 * Copyright (C) 2016 Gwenhael Goavec-Merou
8 #include <linux/iio/iio.h>
10 #include <linux/regulator/consumer.h>
33 state->data = cpu_to_be16((channel << AD8801_CFG_ADDR_OFFSET) | value); in ad8801_spi_write()
34 return spi_write(state->spi, &state->data, sizeof(state->data)); in ad8801_spi_write()
46 return -EINVAL; in ad8801_write_raw()
48 ret = ad8801_spi_write(state, chan->channel, val); in ad8801_write_raw()
50 state->dac_cache[chan->channel] = val; in ad8801_write_raw()
53 ret = -EINVAL; in ad8801_write_raw()
66 *val = state->dac_cache[chan->channel]; in ad8801_read_raw()
69 *val = state->vrefh_mv - state->vrefl_mv; in ad8801_read_raw()
73 *val = state->vrefl_mv; in ad8801_read_raw()
76 return -EINVAL; in ad8801_read_raw()
79 return -EINVAL; in ad8801_read_raw()
115 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*state)); in ad8801_probe()
117 return -ENOMEM; in ad8801_probe()
120 state->spi = spi; in ad8801_probe()
123 ret = devm_regulator_get_enable_read_voltage(&spi->dev, "vrefh"); in ad8801_probe()
125 return dev_err_probe(&spi->dev, ret, in ad8801_probe()
128 state->vrefh_mv = ret / 1000; in ad8801_probe()
130 if (id->driver_data == ID_AD8803) { in ad8801_probe()
131 ret = devm_regulator_get_enable_read_voltage(&spi->dev, "vrefl"); in ad8801_probe()
133 return dev_err_probe(&spi->dev, ret, in ad8801_probe()
136 state->vrefl_mv = ret / 1000; in ad8801_probe()
139 indio_dev->info = &ad8801_info; in ad8801_probe()
140 indio_dev->modes = INDIO_DIRECT_MODE; in ad8801_probe()
141 indio_dev->channels = ad8801_channels; in ad8801_probe()
142 indio_dev->num_channels = ARRAY_SIZE(ad8801_channels); in ad8801_probe()
143 indio_dev->name = id->name; in ad8801_probe()
145 ret = devm_iio_device_register(&spi->dev, indio_dev); in ad8801_probe()
147 return dev_err_probe(&spi->dev, ret, in ad8801_probe()
148 "Failed to register iio device\n"); in ad8801_probe()
169 MODULE_AUTHOR("Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>");