• Home
  • Raw
  • Download

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))
170 for_each_set_bit(i, active_scan_mask, indio_dev->num_channels - 1) { in ad7923_update_scan_mode()
173 st->settings; in ad7923_update_scan_mode()
175 st->tx_buf[len++] = cpu_to_be16(cmd); in ad7923_update_scan_mode()
178 st->ring_xfer[0].tx_buf = &st->tx_buf[0]; in ad7923_update_scan_mode()
179 st->ring_xfer[0].len = len; in ad7923_update_scan_mode()
180 st->ring_xfer[0].cs_change = 1; in ad7923_update_scan_mode()
182 spi_message_init(&st->ring_msg); in ad7923_update_scan_mode()
183 spi_message_add_tail(&st->ring_xfer[0], &st->ring_msg); in ad7923_update_scan_mode()
186 st->ring_xfer[i + 1].rx_buf = &st->rx_buf[i]; in ad7923_update_scan_mode()
187 st->ring_xfer[i + 1].len = 2; in ad7923_update_scan_mode()
188 st->ring_xfer[i + 1].cs_change = 1; in ad7923_update_scan_mode()
189 spi_message_add_tail(&st->ring_xfer[i + 1], &st->ring_msg); in ad7923_update_scan_mode()
192 st->ring_xfer[i + 1].cs_change = 0; in ad7923_update_scan_mode()
203 static irqreturn_t ad7923_trigger_handler(int irq, void *p) in ad7923_trigger_handler() argument
205 struct iio_poll_func *pf = p; in ad7923_trigger_handler()
206 struct iio_dev *indio_dev = pf->indio_dev; in ad7923_trigger_handler()
210 b_sent = spi_sync(st->spi, &st->ring_msg); in ad7923_trigger_handler()
214 iio_push_to_buffers_with_timestamp(indio_dev, st->rx_buf, in ad7923_trigger_handler()
218 iio_trigger_notify_done(indio_dev->trig); in ad7923_trigger_handler()
229 st->settings; in ad7923_scan_direct()
231 st->tx_buf[0] = cpu_to_be16(cmd); in ad7923_scan_direct()
233 ret = spi_sync(st->spi, &st->scan_single_msg); in ad7923_scan_direct()
237 return be16_to_cpu(st->rx_buf[0]); in ad7923_scan_direct()
242 int vref; in ad7923_get_range() local
244 vref = regulator_get_voltage(st->reg); in ad7923_get_range()
245 if (vref < 0) in ad7923_get_range()
246 return vref; in ad7923_get_range()
248 vref /= 1000; in ad7923_get_range()
250 if (!(st->settings & AD7923_RANGE)) in ad7923_get_range()
251 vref *= 2; in ad7923_get_range()
253 return vref; in ad7923_get_range()
270 ret = ad7923_scan_direct(st, chan->address); in ad7923_read_raw()
276 if (chan->address == EXTRACT(ret, 12, 4)) in ad7923_read_raw()
279 return -EIO; in ad7923_read_raw()
287 *val2 = chan->scan_type.realbits; in ad7923_read_raw()
290 return -EINVAL; in ad7923_read_raw()
305 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); in ad7923_probe()
307 return -ENOMEM; in ad7923_probe()
313 st->spi = spi; in ad7923_probe()
314 st->settings = AD7923_CODING | AD7923_RANGE | in ad7923_probe()
317 info = &ad7923_chip_info[spi_get_device_id(spi)->driver_data]; in ad7923_probe()
319 indio_dev->name = spi_get_device_id(spi)->name; in ad7923_probe()
320 indio_dev->modes = INDIO_DIRECT_MODE; in ad7923_probe()
321 indio_dev->channels = info->channels; in ad7923_probe()
322 indio_dev->num_channels = info->num_channels; in ad7923_probe()
323 indio_dev->info = &ad7923_info; in ad7923_probe()
327 st->scan_single_xfer[0].tx_buf = &st->tx_buf[0]; in ad7923_probe()
328 st->scan_single_xfer[0].len = 2; in ad7923_probe()
329 st->scan_single_xfer[0].cs_change = 1; in ad7923_probe()
330 st->scan_single_xfer[1].rx_buf = &st->rx_buf[0]; in ad7923_probe()
331 st->scan_single_xfer[1].len = 2; in ad7923_probe()
333 spi_message_init(&st->scan_single_msg); in ad7923_probe()
334 spi_message_add_tail(&st->scan_single_xfer[0], &st->scan_single_msg); in ad7923_probe()
335 spi_message_add_tail(&st->scan_single_xfer[1], &st->scan_single_msg); in ad7923_probe()
337 st->reg = devm_regulator_get(&spi->dev, "refin"); in ad7923_probe()
338 if (IS_ERR(st->reg)) in ad7923_probe()
339 return PTR_ERR(st->reg); in ad7923_probe()
341 ret = regulator_enable(st->reg); in ad7923_probe()
359 regulator_disable(st->reg); in ad7923_probe()
371 regulator_disable(st->reg); in ad7923_remove()
412 MODULE_AUTHOR("Patrick Vasseur <patrick.vasseur@c-s.fr>");