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);
217 int ret = adc0832_adc_conversion(adc, scan_chan->channel,
220 dev_warn(&adc->spi->dev,
225 adc->data[i] = ret;
228 iio_push_to_buffers_with_ts(indio_dev, adc->data, sizeof(adc->data),
231 mutex_unlock(&adc->lock);
246 struct adc0832 *adc;
249 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc));
253 adc = iio_priv(indio_dev);
254 adc->spi = spi;
255 mutex_init(&adc->lock);
263 adc->mux_bits = 0;
268 adc->mux_bits = 1;
273 adc->mux_bits = 2;
278 adc->mux_bits = 3;
286 adc->reg = devm_regulator_get(&spi->dev, "vref");
287 if (IS_ERR(adc->reg))
288 return PTR_ERR(adc->reg);
290 ret = regulator_enable(adc->reg);
295 adc->reg);