• Home
  • Raw
  • Download

Lines Matching +full:1 +full:st

52 static int ad7266_wakeup(struct ad7266_state *st)  in ad7266_wakeup()  argument
55 return spi_read(st->spi, &st->data.sample[0], 2); in ad7266_wakeup()
58 static int ad7266_powerdown(struct ad7266_state *st) in ad7266_powerdown() argument
61 return spi_read(st->spi, &st->data.sample[0], 1); in ad7266_powerdown()
66 struct ad7266_state *st = iio_priv(indio_dev); in ad7266_preenable() local
67 return ad7266_wakeup(st); in ad7266_preenable()
72 struct ad7266_state *st = iio_priv(indio_dev); in ad7266_postdisable() local
73 return ad7266_powerdown(st); in ad7266_postdisable()
87 struct ad7266_state *st = iio_priv(indio_dev); in ad7266_trigger_handler() local
90 ret = spi_read(st->spi, st->data.sample, 4); in ad7266_trigger_handler()
92 iio_push_to_buffers_with_timestamp(indio_dev, &st->data, in ad7266_trigger_handler()
101 static void ad7266_select_input(struct ad7266_state *st, unsigned int nr) in ad7266_select_input() argument
105 if (st->fixed_addr) in ad7266_select_input()
108 switch (st->mode) { in ad7266_select_input()
110 nr >>= 1; in ad7266_select_input()
113 nr |= 1; in ad7266_select_input()
116 nr &= ~1; in ad7266_select_input()
121 gpio_set_value(st->gpios[i].gpio, (bool)(nr & BIT(i))); in ad7266_select_input()
127 struct ad7266_state *st = iio_priv(indio_dev); in ad7266_update_scan_mode() local
130 ad7266_select_input(st, nr); in ad7266_update_scan_mode()
135 static int ad7266_read_single(struct ad7266_state *st, int *val, in ad7266_read_single() argument
140 ad7266_select_input(st, address); in ad7266_read_single()
142 ret = spi_sync(st->spi, &st->single_msg); in ad7266_read_single()
143 *val = be16_to_cpu(st->data.sample[address % 2]); in ad7266_read_single()
151 struct ad7266_state *st = iio_priv(indio_dev); in ad7266_read_raw() local
160 ret = ad7266_read_single(st, val, chan->address); in ad7266_read_raw()
169 scale_mv = st->vref_mv; in ad7266_read_raw()
170 if (st->mode == AD7266_MODE_DIFF) in ad7266_read_raw()
172 if (st->range == AD7266_RANGE_2VREF) in ad7266_read_raw()
179 if (st->range == AD7266_RANGE_2VREF && in ad7266_read_raw()
180 st->mode != AD7266_MODE_DIFF) in ad7266_read_raw()
191 .indexed = 1, \
210 AD7266_CHAN(1, (_sign)), \
227 AD7266_CHAN(1, (_sign)), \
238 .indexed = 1, \
240 .channel2 = (_chan) * 2 + 1, \
253 .differential = 1, \
259 AD7266_CHAN_DIFF(1, (_sign)), \
273 AD7266_CHAN_DIFF(1, (_sign)), \
314 (((_differential) << 2) | ((_signed) << 1) | ((_fixed) << 0))
322 [AD7266_CHAN_INFO_INDEX(0, 0, 1)] = {
327 [AD7266_CHAN_INFO_INDEX(0, 1, 0)] = {
332 [AD7266_CHAN_INFO_INDEX(0, 1, 1)] = {
337 [AD7266_CHAN_INFO_INDEX(1, 0, 0)] = {
342 [AD7266_CHAN_INFO_INDEX(1, 0, 1)] = {
347 [AD7266_CHAN_INFO_INDEX(1, 1, 0)] = {
352 [AD7266_CHAN_INFO_INDEX(1, 1, 1)] = {
361 struct ad7266_state *st = iio_priv(indio_dev); in ad7266_init_channels() local
366 is_differential = st->mode != AD7266_MODE_SINGLE_ENDED; in ad7266_init_channels()
367 is_signed = (st->range == AD7266_RANGE_2VREF) | in ad7266_init_channels()
368 (st->mode == AD7266_MODE_DIFF); in ad7266_init_channels()
370 i = AD7266_CHAN_INFO_INDEX(is_differential, is_signed, st->fixed_addr); in ad7266_init_channels()
376 indio_dev->masklength = chan_info->num_channels - 1; in ad7266_init_channels()
387 struct ad7266_state *st; in ad7266_probe() local
391 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); in ad7266_probe()
395 st = iio_priv(indio_dev); in ad7266_probe()
397 st->reg = devm_regulator_get_optional(&spi->dev, "vref"); in ad7266_probe()
398 if (!IS_ERR(st->reg)) { in ad7266_probe()
399 ret = regulator_enable(st->reg); in ad7266_probe()
403 ret = regulator_get_voltage(st->reg); in ad7266_probe()
407 st->vref_mv = ret / 1000; in ad7266_probe()
410 if (PTR_ERR(st->reg) != -ENODEV) in ad7266_probe()
411 return PTR_ERR(st->reg); in ad7266_probe()
413 st->vref_mv = 2500; in ad7266_probe()
417 st->fixed_addr = pdata->fixed_addr; in ad7266_probe()
418 st->mode = pdata->mode; in ad7266_probe()
419 st->range = pdata->range; in ad7266_probe()
421 if (!st->fixed_addr) { in ad7266_probe()
422 for (i = 0; i < ARRAY_SIZE(st->gpios); ++i) { in ad7266_probe()
423 st->gpios[i].gpio = pdata->addr_gpios[i]; in ad7266_probe()
424 st->gpios[i].flags = GPIOF_OUT_INIT_LOW; in ad7266_probe()
425 st->gpios[i].label = ad7266_gpio_labels[i]; in ad7266_probe()
427 ret = gpio_request_array(st->gpios, in ad7266_probe()
428 ARRAY_SIZE(st->gpios)); in ad7266_probe()
433 st->fixed_addr = true; in ad7266_probe()
434 st->range = AD7266_RANGE_VREF; in ad7266_probe()
435 st->mode = AD7266_MODE_DIFF; in ad7266_probe()
439 st->spi = spi; in ad7266_probe()
450 st->single_xfer[0].rx_buf = &st->data.sample[0]; in ad7266_probe()
451 st->single_xfer[0].len = 2; in ad7266_probe()
452 st->single_xfer[0].cs_change = 1; in ad7266_probe()
454 st->single_xfer[1].rx_buf = st->data.sample; in ad7266_probe()
455 st->single_xfer[1].len = 4; in ad7266_probe()
456 st->single_xfer[1].cs_change = 1; in ad7266_probe()
458 st->single_xfer[2].tx_buf = &st->data.sample[0]; in ad7266_probe()
459 st->single_xfer[2].len = 1; in ad7266_probe()
461 spi_message_init(&st->single_msg); in ad7266_probe()
462 spi_message_add_tail(&st->single_xfer[0], &st->single_msg); in ad7266_probe()
463 spi_message_add_tail(&st->single_xfer[1], &st->single_msg); in ad7266_probe()
464 spi_message_add_tail(&st->single_xfer[2], &st->single_msg); in ad7266_probe()
480 if (!st->fixed_addr) in ad7266_probe()
481 gpio_free_array(st->gpios, ARRAY_SIZE(st->gpios)); in ad7266_probe()
483 if (!IS_ERR(st->reg)) in ad7266_probe()
484 regulator_disable(st->reg); in ad7266_probe()
492 struct ad7266_state *st = iio_priv(indio_dev); in ad7266_remove() local
496 if (!st->fixed_addr) in ad7266_remove()
497 gpio_free_array(st->gpios, ARRAY_SIZE(st->gpios)); in ad7266_remove()
498 if (!IS_ERR(st->reg)) in ad7266_remove()
499 regulator_disable(st->reg); in ad7266_remove()