Lines Matching defs:adc
127 static int adc12138_mode_programming(struct adc12138 *adc, u8 mode,
131 .tx_buf = adc->tx_buf,
132 .rx_buf = adc->rx_buf,
138 if (adc->id != adc12138)
141 adc->tx_buf[0] = mode;
143 ret = spi_sync_transfer(adc->spi, &xfer, 1);
147 memcpy(rx_buf, adc->rx_buf, len);
152 static int adc12138_read_status(struct adc12138 *adc)
157 ret = adc12138_mode_programming(adc, ADC12138_MODE_READ_STATUS,
165 static int __adc12138_start_conv(struct adc12138 *adc,
174 return adc12138_mode_programming(adc, mode, data, len);
177 static int adc12138_start_conv(struct adc12138 *adc,
182 return __adc12138_start_conv(adc, channel, &trash, 1);
185 static int adc12138_start_and_read_conv(struct adc12138 *adc,
189 return __adc12138_start_conv(adc, channel, data, 2);
192 static int adc12138_read_conv_data(struct adc12138 *adc, __be16 *value)
195 return adc12138_mode_programming(adc, ADC12138_MODE_READ_STATUS,
199 static int adc12138_wait_eoc(struct adc12138 *adc, unsigned long timeout)
201 if (!wait_for_completion_timeout(&adc->complete, timeout))
207 static int adc12138_adc_conversion(struct adc12138 *adc,
213 reinit_completion(&adc->complete);
215 ret = adc12138_start_conv(adc, channel);
219 ret = adc12138_wait_eoc(adc, msecs_to_jiffies(100));
223 return adc12138_read_conv_data(adc, value);
230 struct adc12138 *adc = iio_priv(iio);
236 mutex_lock(&adc->lock);
237 ret = adc12138_adc_conversion(adc, channel, &data);
238 mutex_unlock(&adc->lock);
246 ret = regulator_get_voltage(adc->vref_p);
251 if (!IS_ERR(adc->vref_n)) {
252 ret = regulator_get_voltage(adc->vref_n);
264 if (!IS_ERR(adc->vref_n)) {
265 *value = regulator_get_voltage(adc->vref_n);
285 static int adc12138_init(struct adc12138 *adc)
292 reinit_completion(&adc->complete);
294 ret = adc12138_mode_programming(adc, ADC12138_MODE_AUTO_CAL, &trash, 1);
299 status = adc12138_read_status(adc);
303 adc12138_wait_eoc(adc, msecs_to_jiffies(100));
305 status = adc12138_read_status(adc);
307 dev_warn(&adc->spi->dev,
313 switch (adc->acquisition_time) {
330 return adc12138_mode_programming(adc, mode, &trash, 1);
337 struct adc12138 *adc = iio_priv(indio_dev);
343 mutex_lock(&adc->lock);
350 reinit_completion(&adc->complete);
352 ret = adc12138_start_and_read_conv(adc, scan_chan,
353 i ? &adc->data[i - 1] : &trash);
355 dev_warn(&adc->spi->dev,
360 ret = adc12138_wait_eoc(adc, msecs_to_jiffies(100));
362 dev_warn(&adc->spi->dev, "wait eoc timeout\n");
370 ret = adc12138_read_conv_data(adc, &adc->data[i - 1]);
372 dev_warn(&adc->spi->dev,
378 iio_push_to_buffers_with_timestamp(indio_dev, adc->data,
381 mutex_unlock(&adc->lock);
391 struct adc12138 *adc = iio_priv(indio_dev);
393 complete(&adc->complete);
401 struct adc12138 *adc;
404 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc));
408 adc = iio_priv(indio_dev);
409 adc->spi = spi;
410 adc->id = spi_get_device_id(spi)->driver_data;
411 mutex_init(&adc->lock);
412 init_completion(&adc->complete);
418 switch (adc->id) {
433 &adc->acquisition_time);
435 adc->acquisition_time = 10;
437 adc->cclk = devm_clk_get(&spi->dev, NULL);
438 if (IS_ERR(adc->cclk))
439 return PTR_ERR(adc->cclk);
441 adc->vref_p = devm_regulator_get(&spi->dev, "vref-p");
442 if (IS_ERR(adc->vref_p))
443 return PTR_ERR(adc->vref_p);
445 adc->vref_n = devm_regulator_get_optional(&spi->dev, "vref-n");
446 if (IS_ERR(adc->vref_n)) {
451 ret = PTR_ERR(adc->vref_n);
461 ret = clk_prepare_enable(adc->cclk);
465 ret = regulator_enable(adc->vref_p);
469 if (!IS_ERR(adc->vref_n)) {
470 ret = regulator_enable(adc->vref_n);
475 ret = adc12138_init(adc);
494 if (!IS_ERR(adc->vref_n))
495 regulator_disable(adc->vref_n);
497 regulator_disable(adc->vref_p);
499 clk_disable_unprepare(adc->cclk);
507 struct adc12138 *adc = iio_priv(indio_dev);
511 if (!IS_ERR(adc->vref_n))
512 regulator_disable(adc->vref_n);
513 regulator_disable(adc->vref_p);
514 clk_disable_unprepare(adc->cclk);