Lines Matching refs:adc

95 static int mcp320x_adc_conversion(struct mcp320x *adc, u8 channel,  in mcp320x_adc_conversion()  argument
100 adc->rx_buf[0] = 0; in mcp320x_adc_conversion()
101 adc->rx_buf[1] = 0; in mcp320x_adc_conversion()
102 adc->tx_buf = mcp320x_channel_to_tx_data(device_index, in mcp320x_adc_conversion()
106 ret = spi_sync(adc->spi, &adc->msg); in mcp320x_adc_conversion()
110 ret = spi_read(adc->spi, &adc->rx_buf, sizeof(adc->rx_buf)); in mcp320x_adc_conversion()
117 return (adc->rx_buf[0] << 5 | adc->rx_buf[1] >> 3); in mcp320x_adc_conversion()
121 return (adc->rx_buf[0] << 2 | adc->rx_buf[1] >> 6); in mcp320x_adc_conversion()
123 return (adc->rx_buf[0] << 7 | adc->rx_buf[1] >> 1); in mcp320x_adc_conversion()
127 return (adc->rx_buf[0] << 4 | adc->rx_buf[1] >> 4); in mcp320x_adc_conversion()
137 struct mcp320x *adc = iio_priv(indio_dev); in mcp320x_read_raw() local
141 mutex_lock(&adc->lock); in mcp320x_read_raw()
143 device_index = spi_get_device_id(adc->spi)->driver_data; in mcp320x_read_raw()
147 ret = mcp320x_adc_conversion(adc, channel->address, in mcp320x_read_raw()
158 ret = regulator_get_voltage(adc->reg); in mcp320x_read_raw()
164 *val2 = adc->chip_info->resolution; in mcp320x_read_raw()
170 mutex_unlock(&adc->lock); in mcp320x_read_raw()
282 struct mcp320x *adc; in mcp320x_probe() local
286 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc)); in mcp320x_probe()
290 adc = iio_priv(indio_dev); in mcp320x_probe()
291 adc->spi = spi; in mcp320x_probe()
302 adc->transfer[0].tx_buf = &adc->tx_buf; in mcp320x_probe()
303 adc->transfer[0].len = sizeof(adc->tx_buf); in mcp320x_probe()
304 adc->transfer[1].rx_buf = adc->rx_buf; in mcp320x_probe()
305 adc->transfer[1].len = sizeof(adc->rx_buf); in mcp320x_probe()
307 spi_message_init_with_transfers(&adc->msg, adc->transfer, in mcp320x_probe()
308 ARRAY_SIZE(adc->transfer)); in mcp320x_probe()
310 adc->reg = devm_regulator_get(&spi->dev, "vref"); in mcp320x_probe()
311 if (IS_ERR(adc->reg)) in mcp320x_probe()
312 return PTR_ERR(adc->reg); in mcp320x_probe()
314 ret = regulator_enable(adc->reg); in mcp320x_probe()
318 mutex_init(&adc->lock); in mcp320x_probe()
327 regulator_disable(adc->reg); in mcp320x_probe()
335 struct mcp320x *adc = iio_priv(indio_dev); in mcp320x_remove() local
338 regulator_disable(adc->reg); in mcp320x_remove()