Lines Matching +full:vref +full:- +full:p
1 // SPDX-License-Identifier: GPL-2.0-only
46 #define EXTRACT(val, dec, bits) (((val) >> (dec)) & ((1 << (bits)) - 1))
96 .shift = 12 - (bits), \
171 for_each_set_bit(i, active_scan_mask, indio_dev->num_channels - 1) { in ad7923_update_scan_mode()
174 st->settings; in ad7923_update_scan_mode()
176 st->tx_buf[len++] = cpu_to_be16(cmd); in ad7923_update_scan_mode()
179 st->ring_xfer[0].tx_buf = &st->tx_buf[0]; in ad7923_update_scan_mode()
180 st->ring_xfer[0].len = len; in ad7923_update_scan_mode()
181 st->ring_xfer[0].cs_change = 1; in ad7923_update_scan_mode()
183 spi_message_init(&st->ring_msg); in ad7923_update_scan_mode()
184 spi_message_add_tail(&st->ring_xfer[0], &st->ring_msg); in ad7923_update_scan_mode()
187 st->ring_xfer[i + 1].rx_buf = &st->rx_buf[i]; in ad7923_update_scan_mode()
188 st->ring_xfer[i + 1].len = 2; in ad7923_update_scan_mode()
189 st->ring_xfer[i + 1].cs_change = 1; in ad7923_update_scan_mode()
190 spi_message_add_tail(&st->ring_xfer[i + 1], &st->ring_msg); in ad7923_update_scan_mode()
193 st->ring_xfer[i + 1].cs_change = 0; in ad7923_update_scan_mode()
204 static irqreturn_t ad7923_trigger_handler(int irq, void *p) in ad7923_trigger_handler() argument
206 struct iio_poll_func *pf = p; in ad7923_trigger_handler()
207 struct iio_dev *indio_dev = pf->indio_dev; in ad7923_trigger_handler()
211 b_sent = spi_sync(st->spi, &st->ring_msg); in ad7923_trigger_handler()
215 iio_push_to_buffers_with_timestamp(indio_dev, st->rx_buf, in ad7923_trigger_handler()
219 iio_trigger_notify_done(indio_dev->trig); in ad7923_trigger_handler()
230 st->settings; in ad7923_scan_direct()
232 st->tx_buf[0] = cpu_to_be16(cmd); in ad7923_scan_direct()
234 ret = spi_sync(st->spi, &st->scan_single_msg); in ad7923_scan_direct()
238 return be16_to_cpu(st->rx_buf[0]); in ad7923_scan_direct()
243 int vref; in ad7923_get_range() local
245 vref = regulator_get_voltage(st->reg); in ad7923_get_range()
246 if (vref < 0) in ad7923_get_range()
247 return vref; in ad7923_get_range()
249 vref /= 1000; in ad7923_get_range()
251 if (!(st->settings & AD7923_RANGE)) in ad7923_get_range()
252 vref *= 2; in ad7923_get_range()
254 return vref; in ad7923_get_range()
271 ret = ad7923_scan_direct(st, chan->address); in ad7923_read_raw()
277 if (chan->address == EXTRACT(ret, 12, 4)) in ad7923_read_raw()
278 *val = EXTRACT(ret, chan->scan_type.shift, in ad7923_read_raw()
279 chan->scan_type.realbits); in ad7923_read_raw()
281 return -EIO; in ad7923_read_raw()
289 *val2 = chan->scan_type.realbits; in ad7923_read_raw()
292 return -EINVAL; in ad7923_read_raw()
307 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); in ad7923_probe()
309 return -ENOMEM; in ad7923_probe()
315 st->spi = spi; in ad7923_probe()
316 st->settings = AD7923_CODING | AD7923_RANGE | in ad7923_probe()
319 info = &ad7923_chip_info[spi_get_device_id(spi)->driver_data]; in ad7923_probe()
321 indio_dev->name = spi_get_device_id(spi)->name; in ad7923_probe()
322 indio_dev->modes = INDIO_DIRECT_MODE; in ad7923_probe()
323 indio_dev->channels = info->channels; in ad7923_probe()
324 indio_dev->num_channels = info->num_channels; in ad7923_probe()
325 indio_dev->info = &ad7923_info; in ad7923_probe()
329 st->scan_single_xfer[0].tx_buf = &st->tx_buf[0]; in ad7923_probe()
330 st->scan_single_xfer[0].len = 2; in ad7923_probe()
331 st->scan_single_xfer[0].cs_change = 1; in ad7923_probe()
332 st->scan_single_xfer[1].rx_buf = &st->rx_buf[0]; in ad7923_probe()
333 st->scan_single_xfer[1].len = 2; in ad7923_probe()
335 spi_message_init(&st->scan_single_msg); in ad7923_probe()
336 spi_message_add_tail(&st->scan_single_xfer[0], &st->scan_single_msg); in ad7923_probe()
337 spi_message_add_tail(&st->scan_single_xfer[1], &st->scan_single_msg); in ad7923_probe()
339 st->reg = devm_regulator_get(&spi->dev, "refin"); in ad7923_probe()
340 if (IS_ERR(st->reg)) in ad7923_probe()
341 return PTR_ERR(st->reg); in ad7923_probe()
343 ret = regulator_enable(st->reg); in ad7923_probe()
361 regulator_disable(st->reg); in ad7923_probe()
373 regulator_disable(st->reg); in ad7923_remove()
414 MODULE_AUTHOR("Patrick Vasseur <patrick.vasseur@c-s.fr>");