Lines Matching refs:adc

120 static int adc0831_adc_conversion(struct adc0832 *adc)
122 struct spi_device *spi = adc->spi;
125 ret = spi_read(spi, &adc->rx_buf, 2);
132 return (adc->rx_buf[0] << 2 & 0xff) | (adc->rx_buf[1] >> 6);
135 static int adc0832_adc_conversion(struct adc0832 *adc, int channel,
138 struct spi_device *spi = adc->spi;
140 .tx_buf = adc->tx_buf,
141 .rx_buf = adc->rx_buf,
146 if (!adc->mux_bits)
147 return adc0831_adc_conversion(adc);
150 adc->tx_buf[0] = 1 << (adc->mux_bits + 1);
152 adc->tx_buf[0] |= differential ? 0 : (1 << adc->mux_bits);
154 adc->tx_buf[0] |= (channel % 2) << (adc->mux_bits - 1);
156 if (adc->mux_bits > 1)
157 adc->tx_buf[0] |= channel / 2;
160 adc->tx_buf[0] <<= 1;
166 return adc->rx_buf[1];
173 struct adc0832 *adc = iio_priv(iio);
177 mutex_lock(&adc->lock);
178 *value = adc0832_adc_conversion(adc, channel->channel,
180 mutex_unlock(&adc->lock);
186 *value = regulator_get_voltage(adc->reg);
208 struct adc0832 *adc = iio_priv(indio_dev);
212 mutex_lock(&adc->lock);
218 int ret = adc0832_adc_conversion(adc, scan_chan->channel,
221 dev_warn(&adc->spi->dev,
226 adc->data[i] = ret;
229 iio_push_to_buffers_with_timestamp(indio_dev, adc->data,
232 mutex_unlock(&adc->lock);
247 struct adc0832 *adc;
250 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc));
254 adc = iio_priv(indio_dev);
255 adc->spi = spi;
256 mutex_init(&adc->lock);
264 adc->mux_bits = 0;
269 adc->mux_bits = 1;
274 adc->mux_bits = 2;
279 adc->mux_bits = 3;
287 adc->reg = devm_regulator_get(&spi->dev, "vref");
288 if (IS_ERR(adc->reg))
289 return PTR_ERR(adc->reg);
291 ret = regulator_enable(adc->reg);
296 adc->reg);