Lines Matching +full:1 +full:st
72 static void ad7091_convst(struct ad7476_state *st) in ad7091_convst() argument
74 if (!st->convst_gpio) in ad7091_convst()
77 gpiod_set_value(st->convst_gpio, 0); in ad7091_convst()
78 udelay(1); /* CONVST pulse width: 10 ns min */ in ad7091_convst()
79 gpiod_set_value(st->convst_gpio, 1); in ad7091_convst()
80 udelay(1); /* Conversion time: 650 ns max */ in ad7091_convst()
87 struct ad7476_state *st = iio_priv(indio_dev); in ad7476_trigger_handler() local
90 ad7091_convst(st); in ad7476_trigger_handler()
92 b_sent = spi_sync(st->spi, &st->msg); in ad7476_trigger_handler()
96 iio_push_to_buffers_with_timestamp(indio_dev, st->data, in ad7476_trigger_handler()
104 static void ad7091_reset(struct ad7476_state *st) in ad7091_reset() argument
107 spi_read(st->spi, st->data, 1); in ad7091_reset()
110 static int ad7476_scan_direct(struct ad7476_state *st) in ad7476_scan_direct() argument
114 ad7091_convst(st); in ad7476_scan_direct()
116 ret = spi_sync(st->spi, &st->msg); in ad7476_scan_direct()
120 return be16_to_cpup((__be16 *)st->data); in ad7476_scan_direct()
130 struct ad7476_state *st = iio_priv(indio_dev); in ad7476_read_raw() local
138 ret = ad7476_scan_direct(st); in ad7476_read_raw()
143 *val = (ret >> st->chip_info->channel[0].scan_type.shift) & in ad7476_read_raw()
144 GENMASK(st->chip_info->channel[0].scan_type.realbits - 1, 0); in ad7476_read_raw()
147 if (!st->chip_info->int_vref_uv) { in ad7476_read_raw()
148 scale_uv = regulator_get_voltage(st->reg); in ad7476_read_raw()
152 scale_uv = st->chip_info->int_vref_uv; in ad7476_read_raw()
164 .indexed = 1, \
191 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
193 .convst_channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
198 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
202 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
206 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
210 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
214 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
218 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
222 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
227 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
231 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
235 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
239 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
243 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
247 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
251 .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
261 struct ad7476_state *st = data; in ad7476_reg_disable() local
263 regulator_disable(st->reg); in ad7476_reg_disable()
268 struct ad7476_state *st; in ad7476_probe() local
272 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); in ad7476_probe()
276 st = iio_priv(indio_dev); in ad7476_probe()
277 st->chip_info = in ad7476_probe()
280 st->reg = devm_regulator_get(&spi->dev, "vcc"); in ad7476_probe()
281 if (IS_ERR(st->reg)) in ad7476_probe()
282 return PTR_ERR(st->reg); in ad7476_probe()
284 ret = regulator_enable(st->reg); in ad7476_probe()
289 st); in ad7476_probe()
293 st->convst_gpio = devm_gpiod_get_optional(&spi->dev, in ad7476_probe()
296 if (IS_ERR(st->convst_gpio)) in ad7476_probe()
297 return PTR_ERR(st->convst_gpio); in ad7476_probe()
301 st->spi = spi; in ad7476_probe()
305 indio_dev->channels = st->chip_info->channel; in ad7476_probe()
309 if (st->convst_gpio) in ad7476_probe()
310 indio_dev->channels = st->chip_info->convst_channel; in ad7476_probe()
313 st->xfer.rx_buf = &st->data; in ad7476_probe()
314 st->xfer.len = st->chip_info->channel[0].scan_type.storagebits / 8; in ad7476_probe()
316 spi_message_init(&st->msg); in ad7476_probe()
317 spi_message_add_tail(&st->xfer, &st->msg); in ad7476_probe()
324 if (st->chip_info->reset) in ad7476_probe()
325 st->chip_info->reset(st); in ad7476_probe()
335 regulator_disable(st->reg); in ad7476_probe()
382 MODULE_DESCRIPTION("Analog Devices AD7476 and similar 1-channel ADCs");