Lines Matching refs:adc
98 static int mcp320x_adc_conversion(struct mcp320x *adc, u8 channel, in mcp320x_adc_conversion() argument
103 adc->rx_buf[0] = 0; in mcp320x_adc_conversion()
104 adc->rx_buf[1] = 0; in mcp320x_adc_conversion()
105 adc->tx_buf = mcp320x_channel_to_tx_data(device_index, in mcp320x_adc_conversion()
109 ret = spi_sync(adc->spi, &adc->msg); in mcp320x_adc_conversion()
113 ret = spi_read(adc->spi, &adc->rx_buf, sizeof(adc->rx_buf)); in mcp320x_adc_conversion()
120 return (adc->rx_buf[0] << 5 | adc->rx_buf[1] >> 3); in mcp320x_adc_conversion()
124 return (adc->rx_buf[0] << 2 | adc->rx_buf[1] >> 6); in mcp320x_adc_conversion()
126 return (adc->rx_buf[0] << 7 | adc->rx_buf[1] >> 1); in mcp320x_adc_conversion()
130 return (adc->rx_buf[0] << 4 | adc->rx_buf[1] >> 4); in mcp320x_adc_conversion()
132 return sign_extend32((adc->rx_buf[0] & 0x1f) << 8 | adc->rx_buf[1], 12); in mcp320x_adc_conversion()
142 struct mcp320x *adc = iio_priv(indio_dev); in mcp320x_read_raw() local
146 mutex_lock(&adc->lock); in mcp320x_read_raw()
148 device_index = spi_get_device_id(adc->spi)->driver_data; in mcp320x_read_raw()
152 ret = mcp320x_adc_conversion(adc, channel->address, in mcp320x_read_raw()
163 ret = regulator_get_voltage(adc->reg); in mcp320x_read_raw()
169 *val2 = adc->chip_info->resolution; in mcp320x_read_raw()
175 mutex_unlock(&adc->lock); in mcp320x_read_raw()
292 struct mcp320x *adc; in mcp320x_probe() local
296 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc)); in mcp320x_probe()
300 adc = iio_priv(indio_dev); in mcp320x_probe()
301 adc->spi = spi; in mcp320x_probe()
312 adc->chip_info = chip_info; in mcp320x_probe()
314 adc->transfer[0].tx_buf = &adc->tx_buf; in mcp320x_probe()
315 adc->transfer[0].len = sizeof(adc->tx_buf); in mcp320x_probe()
316 adc->transfer[1].rx_buf = adc->rx_buf; in mcp320x_probe()
317 adc->transfer[1].len = sizeof(adc->rx_buf); in mcp320x_probe()
319 spi_message_init_with_transfers(&adc->msg, adc->transfer, in mcp320x_probe()
320 ARRAY_SIZE(adc->transfer)); in mcp320x_probe()
322 adc->reg = devm_regulator_get(&spi->dev, "vref"); in mcp320x_probe()
323 if (IS_ERR(adc->reg)) in mcp320x_probe()
324 return PTR_ERR(adc->reg); in mcp320x_probe()
326 ret = regulator_enable(adc->reg); in mcp320x_probe()
330 mutex_init(&adc->lock); in mcp320x_probe()
339 regulator_disable(adc->reg); in mcp320x_probe()
347 struct mcp320x *adc = iio_priv(indio_dev); in mcp320x_remove() local
350 regulator_disable(adc->reg); in mcp320x_remove()