Lines Matching refs:info

189 static inline void vf610_adc_calculate_rates(struct vf610_adc *info)  in vf610_adc_calculate_rates()  argument
191 struct vf610_adc_feature *adc_feature = &info->adc_feature; in vf610_adc_calculate_rates()
192 unsigned long adck_rate, ipg_rate = clk_get_rate(info->clk); in vf610_adc_calculate_rates()
196 adck_rate = info->max_adck_rate[adc_feature->conv_mode]; in vf610_adc_calculate_rates()
234 info->sample_freq_avail[i] = in vf610_adc_calculate_rates()
239 static inline void vf610_adc_cfg_init(struct vf610_adc *info) in vf610_adc_cfg_init() argument
241 struct vf610_adc_feature *adc_feature = &info->adc_feature; in vf610_adc_cfg_init()
255 vf610_adc_calculate_rates(info); in vf610_adc_cfg_init()
258 static void vf610_adc_cfg_post_set(struct vf610_adc *info) in vf610_adc_cfg_post_set() argument
260 struct vf610_adc_feature *adc_feature = &info->adc_feature; in vf610_adc_cfg_post_set()
292 dev_err(info->dev, "error voltage reference\n"); in vf610_adc_cfg_post_set()
299 writel(cfg_data, info->regs + VF610_REG_ADC_CFG); in vf610_adc_cfg_post_set()
300 writel(gc_data, info->regs + VF610_REG_ADC_GC); in vf610_adc_cfg_post_set()
303 static void vf610_adc_calibration(struct vf610_adc *info) in vf610_adc_calibration() argument
307 if (!info->adc_feature.calibration) in vf610_adc_calibration()
312 writel(hc_cfg, info->regs + VF610_REG_ADC_HC0); in vf610_adc_calibration()
314 adc_gc = readl(info->regs + VF610_REG_ADC_GC); in vf610_adc_calibration()
315 writel(adc_gc | VF610_ADC_CAL, info->regs + VF610_REG_ADC_GC); in vf610_adc_calibration()
317 if (!wait_for_completion_timeout(&info->completion, VF610_ADC_TIMEOUT)) in vf610_adc_calibration()
318 dev_err(info->dev, "Timeout for adc calibration\n"); in vf610_adc_calibration()
320 adc_gc = readl(info->regs + VF610_REG_ADC_GS); in vf610_adc_calibration()
322 dev_err(info->dev, "ADC calibration failed\n"); in vf610_adc_calibration()
324 info->adc_feature.calibration = false; in vf610_adc_calibration()
327 static void vf610_adc_cfg_set(struct vf610_adc *info) in vf610_adc_cfg_set() argument
329 struct vf610_adc_feature *adc_feature = &(info->adc_feature); in vf610_adc_cfg_set()
332 cfg_data = readl(info->regs + VF610_REG_ADC_CFG); in vf610_adc_cfg_set()
342 writel(cfg_data, info->regs + VF610_REG_ADC_CFG); in vf610_adc_cfg_set()
345 static void vf610_adc_sample_set(struct vf610_adc *info) in vf610_adc_sample_set() argument
347 struct vf610_adc_feature *adc_feature = &(info->adc_feature); in vf610_adc_sample_set()
350 cfg_data = readl(info->regs + VF610_REG_ADC_CFG); in vf610_adc_sample_set()
351 gc_data = readl(info->regs + VF610_REG_ADC_GC); in vf610_adc_sample_set()
366 dev_err(info->dev, "error resolution mode\n"); in vf610_adc_sample_set()
390 dev_err(info->dev, "error clk divider\n"); in vf610_adc_sample_set()
428 dev_err(info->dev, "error in sample time select\n"); in vf610_adc_sample_set()
453 dev_err(info->dev, in vf610_adc_sample_set()
457 writel(cfg_data, info->regs + VF610_REG_ADC_CFG); in vf610_adc_sample_set()
458 writel(gc_data, info->regs + VF610_REG_ADC_GC); in vf610_adc_sample_set()
461 static void vf610_adc_hw_init(struct vf610_adc *info) in vf610_adc_hw_init() argument
464 vf610_adc_cfg_post_set(info); in vf610_adc_hw_init()
465 vf610_adc_sample_set(info); in vf610_adc_hw_init()
468 vf610_adc_calibration(info); in vf610_adc_hw_init()
471 vf610_adc_cfg_set(info); in vf610_adc_hw_init()
478 struct vf610_adc *info = iio_priv(indio_dev); in vf610_set_conversion_mode() local
481 info->adc_feature.conv_mode = mode; in vf610_set_conversion_mode()
482 vf610_adc_calculate_rates(info); in vf610_set_conversion_mode()
483 vf610_adc_hw_init(info); in vf610_set_conversion_mode()
492 struct vf610_adc *info = iio_priv(indio_dev); in vf610_get_conversion_mode() local
494 return info->adc_feature.conv_mode; in vf610_get_conversion_mode()
562 static int vf610_adc_read_data(struct vf610_adc *info) in vf610_adc_read_data() argument
566 result = readl(info->regs + VF610_REG_ADC_R0); in vf610_adc_read_data()
568 switch (info->adc_feature.res_mode) { in vf610_adc_read_data()
588 struct vf610_adc *info = iio_priv(indio_dev); in vf610_adc_isr() local
591 coco = readl(info->regs + VF610_REG_ADC_HS); in vf610_adc_isr()
593 info->value = vf610_adc_read_data(info); in vf610_adc_isr()
595 info->buffer[0] = info->value; in vf610_adc_isr()
597 info->buffer, iio_get_time_ns()); in vf610_adc_isr()
600 complete(&info->completion); in vf610_adc_isr()
609 struct vf610_adc *info = iio_priv(dev_to_iio_dev(dev)); in vf610_show_samp_freq_avail() local
613 for (i = 0; i < ARRAY_SIZE(info->sample_freq_avail); i++) in vf610_show_samp_freq_avail()
615 "%u ", info->sample_freq_avail[i]); in vf610_show_samp_freq_avail()
640 struct vf610_adc *info = iio_priv(indio_dev); in vf610_read_raw() local
653 reinit_completion(&info->completion); in vf610_read_raw()
656 writel(hc_cfg, info->regs + VF610_REG_ADC_HC0); in vf610_read_raw()
658 (&info->completion, VF610_ADC_TIMEOUT); in vf610_read_raw()
670 *val = info->value; in vf610_read_raw()
678 *val = 25000 - ((int)info->value - VF610_VTEMP25_3V3) * in vf610_read_raw()
691 *val = info->vref_uv / 1000; in vf610_read_raw()
692 *val2 = info->adc_feature.res_mode; in vf610_read_raw()
696 *val = info->sample_freq_avail[info->adc_feature.sample_rate]; in vf610_read_raw()
713 struct vf610_adc *info = iio_priv(indio_dev); in vf610_write_raw() local
719 i < ARRAY_SIZE(info->sample_freq_avail); in vf610_write_raw()
721 if (val == info->sample_freq_avail[i]) { in vf610_write_raw()
722 info->adc_feature.sample_rate = i; in vf610_write_raw()
723 vf610_adc_sample_set(info); in vf610_write_raw()
737 struct vf610_adc *info = iio_priv(indio_dev); in vf610_adc_buffer_postenable() local
746 val = readl(info->regs + VF610_REG_ADC_GC); in vf610_adc_buffer_postenable()
748 writel(val, info->regs + VF610_REG_ADC_GC); in vf610_adc_buffer_postenable()
756 writel(val, info->regs + VF610_REG_ADC_HC0); in vf610_adc_buffer_postenable()
763 struct vf610_adc *info = iio_priv(indio_dev); in vf610_adc_buffer_predisable() local
767 val = readl(info->regs + VF610_REG_ADC_GC); in vf610_adc_buffer_predisable()
769 writel(val, info->regs + VF610_REG_ADC_GC); in vf610_adc_buffer_predisable()
774 writel(hc_cfg, info->regs + VF610_REG_ADC_HC0); in vf610_adc_buffer_predisable()
789 struct vf610_adc *info = iio_priv(indio_dev); in vf610_adc_reg_access() local
795 *readval = readl(info->regs + reg); in vf610_adc_reg_access()
816 struct vf610_adc *info; in vf610_adc_probe() local
828 info = iio_priv(indio_dev); in vf610_adc_probe()
829 info->dev = &pdev->dev; in vf610_adc_probe()
832 info->regs = devm_ioremap_resource(&pdev->dev, mem); in vf610_adc_probe()
833 if (IS_ERR(info->regs)) in vf610_adc_probe()
834 return PTR_ERR(info->regs); in vf610_adc_probe()
842 ret = devm_request_irq(info->dev, irq, in vf610_adc_probe()
850 info->clk = devm_clk_get(&pdev->dev, "adc"); in vf610_adc_probe()
851 if (IS_ERR(info->clk)) { in vf610_adc_probe()
853 PTR_ERR(info->clk)); in vf610_adc_probe()
854 return PTR_ERR(info->clk); in vf610_adc_probe()
857 info->vref = devm_regulator_get(&pdev->dev, "vref"); in vf610_adc_probe()
858 if (IS_ERR(info->vref)) in vf610_adc_probe()
859 return PTR_ERR(info->vref); in vf610_adc_probe()
861 ret = regulator_enable(info->vref); in vf610_adc_probe()
865 info->vref_uv = regulator_get_voltage(info->vref); in vf610_adc_probe()
868 info->max_adck_rate, 3); in vf610_adc_probe()
871 &info->adc_feature.default_sample_time); in vf610_adc_probe()
873 info->adc_feature.default_sample_time = DEFAULT_SAMPLE_TIME; in vf610_adc_probe()
877 init_completion(&info->completion); in vf610_adc_probe()
882 indio_dev->info = &vf610_adc_iio_info; in vf610_adc_probe()
887 ret = clk_prepare_enable(info->clk); in vf610_adc_probe()
894 vf610_adc_cfg_init(info); in vf610_adc_probe()
895 vf610_adc_hw_init(info); in vf610_adc_probe()
915 clk_disable_unprepare(info->clk); in vf610_adc_probe()
917 regulator_disable(info->vref); in vf610_adc_probe()
925 struct vf610_adc *info = iio_priv(indio_dev); in vf610_adc_remove() local
929 regulator_disable(info->vref); in vf610_adc_remove()
930 clk_disable_unprepare(info->clk); in vf610_adc_remove()
939 struct vf610_adc *info = iio_priv(indio_dev); in vf610_adc_suspend() local
943 hc_cfg = readl(info->regs + VF610_REG_ADC_HC0); in vf610_adc_suspend()
945 writel(hc_cfg, info->regs + VF610_REG_ADC_HC0); in vf610_adc_suspend()
947 clk_disable_unprepare(info->clk); in vf610_adc_suspend()
948 regulator_disable(info->vref); in vf610_adc_suspend()
956 struct vf610_adc *info = iio_priv(indio_dev); in vf610_adc_resume() local
959 ret = regulator_enable(info->vref); in vf610_adc_resume()
963 ret = clk_prepare_enable(info->clk); in vf610_adc_resume()
967 vf610_adc_hw_init(info); in vf610_adc_resume()
972 regulator_disable(info->vref); in vf610_adc_resume()