Lines Matching refs:st
185 struct ad7793_state *st = ad_sigma_delta_to_ad7793(sd); in ad7793_set_channel() local
187 st->conf &= ~AD7793_CONF_CHAN_MASK; in ad7793_set_channel()
188 st->conf |= AD7793_CONF_CHAN(channel); in ad7793_set_channel()
190 return ad_sd_write_reg(&st->sd, AD7793_REG_CONF, 2, st->conf); in ad7793_set_channel()
196 struct ad7793_state *st = ad_sigma_delta_to_ad7793(sd); in ad7793_set_mode() local
198 st->mode &= ~AD7793_MODE_SEL_MASK; in ad7793_set_mode()
199 st->mode |= AD7793_MODE_SEL(mode); in ad7793_set_mode()
201 return ad_sd_write_reg(&st->sd, AD7793_REG_MODE, 2, st->mode); in ad7793_set_mode()
221 static int ad7793_calibrate_all(struct ad7793_state *st) in ad7793_calibrate_all() argument
223 return ad_sd_calibrate_all(&st->sd, ad7793_calib_arr, in ad7793_calibrate_all()
227 static int ad7793_check_platform_data(struct ad7793_state *st, in ad7793_check_platform_data() argument
236 if (!(st->chip_info->flags & AD7793_FLAG_HAS_CLKSEL) && in ad7793_check_platform_data()
240 if (!(st->chip_info->flags & AD7793_FLAG_HAS_REFSEL) && in ad7793_check_platform_data()
244 if (!(st->chip_info->flags & AD7793_FLAG_HAS_VBIAS) && in ad7793_check_platform_data()
248 if (!(st->chip_info->flags & AD7793_HAS_EXITATION_CURRENT) && in ad7793_check_platform_data()
259 struct ad7793_state *st = iio_priv(indio_dev); in ad7793_setup() local
264 ret = ad7793_check_platform_data(st, pdata); in ad7793_setup()
269 ret = spi_write(st->sd.spi, (u8 *)&ret, sizeof(ret)); in ad7793_setup()
275 ret = ad_sd_read_reg(&st->sd, AD7793_REG_ID, 1, &id); in ad7793_setup()
281 if (id != st->chip_info->id) { in ad7793_setup()
282 dev_err(&st->sd.spi->dev, "device ID query failed\n"); in ad7793_setup()
286 st->mode = AD7793_MODE_RATE(1); in ad7793_setup()
287 st->conf = 0; in ad7793_setup()
289 if (st->chip_info->flags & AD7793_FLAG_HAS_CLKSEL) in ad7793_setup()
290 st->mode |= AD7793_MODE_CLKSRC(pdata->clock_src); in ad7793_setup()
291 if (st->chip_info->flags & AD7793_FLAG_HAS_REFSEL) in ad7793_setup()
292 st->conf |= AD7793_CONF_REFSEL(pdata->refsel); in ad7793_setup()
293 if (st->chip_info->flags & AD7793_FLAG_HAS_VBIAS) in ad7793_setup()
294 st->conf |= AD7793_CONF_VBIAS(pdata->bias_voltage); in ad7793_setup()
295 if (pdata->buffered || !(st->chip_info->flags & AD7793_FLAG_HAS_BUFFER)) in ad7793_setup()
296 st->conf |= AD7793_CONF_BUF; in ad7793_setup()
298 (st->chip_info->flags & AD7793_FLAG_HAS_VBIAS)) in ad7793_setup()
299 st->conf |= AD7793_CONF_BOOST; in ad7793_setup()
301 st->conf |= AD7793_CONF_BO_EN; in ad7793_setup()
303 st->conf |= AD7793_CONF_UNIPOLAR; in ad7793_setup()
305 if (!(st->chip_info->flags & AD7793_FLAG_HAS_GAIN)) in ad7793_setup()
306 st->conf |= AD7793_CONF_GAIN(7); in ad7793_setup()
308 ret = ad7793_set_mode(&st->sd, AD_SD_MODE_IDLE); in ad7793_setup()
312 ret = ad7793_set_channel(&st->sd, 0); in ad7793_setup()
316 if (st->chip_info->flags & AD7793_HAS_EXITATION_CURRENT) { in ad7793_setup()
317 ret = ad_sd_write_reg(&st->sd, AD7793_REG_IO, 1, in ad7793_setup()
324 ret = ad7793_calibrate_all(st); in ad7793_setup()
329 for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) { in ad7793_setup()
331 >> (st->chip_info->channels[0].scan_type.realbits - in ad7793_setup()
332 (!!(st->conf & AD7793_CONF_UNIPOLAR) ? 0 : 1)); in ad7793_setup()
335 st->scale_avail[i][1] = do_div(scale_uv, 100000000) * 10; in ad7793_setup()
336 st->scale_avail[i][0] = scale_uv; in ad7793_setup()
341 dev_err(&st->sd.spi->dev, "setup failed\n"); in ad7793_setup()
356 struct ad7793_state *st = iio_priv(indio_dev); in ad7793_read_frequency() local
359 st->chip_info->sample_freq_avail[AD7793_MODE_RATE(st->mode)]); in ad7793_read_frequency()
368 struct ad7793_state *st = iio_priv(indio_dev); in ad7793_write_frequency() local
389 if (lval == st->chip_info->sample_freq_avail[i]) { in ad7793_write_frequency()
391 st->mode &= ~AD7793_MODE_RATE(-1); in ad7793_write_frequency()
392 st->mode |= AD7793_MODE_RATE(i); in ad7793_write_frequency()
393 ad_sd_write_reg(&st->sd, AD7793_REG_MODE, in ad7793_write_frequency()
394 sizeof(st->mode), st->mode); in ad7793_write_frequency()
416 struct ad7793_state *st = iio_priv(indio_dev); in ad7793_show_scale_available() local
419 for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) in ad7793_show_scale_available()
420 len += sprintf(buf + len, "%d.%09u ", st->scale_avail[i][0], in ad7793_show_scale_available()
421 st->scale_avail[i][1]); in ad7793_show_scale_available()
459 struct ad7793_state *st = iio_priv(indio_dev); in ad7793_read_raw() local
462 bool unipolar = !!(st->conf & AD7793_CONF_UNIPOLAR); in ad7793_read_raw()
476 *val = st-> in ad7793_read_raw()
477 scale_avail[(st->conf >> 8) & 0x7][0]; in ad7793_read_raw()
478 *val2 = st-> in ad7793_read_raw()
479 scale_avail[(st->conf >> 8) & 0x7][1]; in ad7793_read_raw()
525 struct ad7793_state *st = iio_priv(indio_dev); in ad7793_write_raw() local
538 for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) in ad7793_write_raw()
539 if (val2 == st->scale_avail[i][1]) { in ad7793_write_raw()
541 tmp = st->conf; in ad7793_write_raw()
542 st->conf &= ~AD7793_CONF_GAIN(-1); in ad7793_write_raw()
543 st->conf |= AD7793_CONF_GAIN(i); in ad7793_write_raw()
545 if (tmp == st->conf) in ad7793_write_raw()
548 ad_sd_write_reg(&st->sd, AD7793_REG_CONF, in ad7793_write_raw()
549 sizeof(st->conf), st->conf); in ad7793_write_raw()
550 ad7793_calibrate_all(st); in ad7793_write_raw()
746 struct ad7793_state *st; in ad7793_probe() local
760 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); in ad7793_probe()
764 st = iio_priv(indio_dev); in ad7793_probe()
766 ad_sd_init(&st->sd, indio_dev, spi, &ad7793_sigma_delta_info); in ad7793_probe()
769 st->reg = devm_regulator_get(&spi->dev, "refin"); in ad7793_probe()
770 if (IS_ERR(st->reg)) in ad7793_probe()
771 return PTR_ERR(st->reg); in ad7793_probe()
773 ret = regulator_enable(st->reg); in ad7793_probe()
777 vref_mv = regulator_get_voltage(st->reg); in ad7793_probe()
788 st->chip_info = in ad7793_probe()
796 indio_dev->channels = st->chip_info->channels; in ad7793_probe()
797 indio_dev->num_channels = st->chip_info->num_channels; in ad7793_probe()
798 indio_dev->info = st->chip_info->iio_info; in ad7793_probe()
818 regulator_disable(st->reg); in ad7793_probe()
827 struct ad7793_state *st = iio_priv(indio_dev); in ad7793_remove() local
833 regulator_disable(st->reg); in ad7793_remove()