vadc              137 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_read(struct vadc_priv *vadc, u16 offset, u8 *data)
vadc              139 drivers/iio/adc/qcom-spmi-vadc.c 	return regmap_bulk_read(vadc->regmap, vadc->base + offset, data, 1);
vadc              142 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_write(struct vadc_priv *vadc, u16 offset, u8 data)
vadc              144 drivers/iio/adc/qcom-spmi-vadc.c 	return regmap_write(vadc->regmap, vadc->base + offset, data);
vadc              147 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_reset(struct vadc_priv *vadc)
vadc              152 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_ACCESS, VADC_ACCESS_DATA);
vadc              156 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_PERH_RESET_CTL3, &data);
vadc              160 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_ACCESS, VADC_ACCESS_DATA);
vadc              166 drivers/iio/adc/qcom-spmi-vadc.c 	return vadc_write(vadc, VADC_PERH_RESET_CTL3, data);
vadc              169 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_set_state(struct vadc_priv *vadc, bool state)
vadc              171 drivers/iio/adc/qcom-spmi-vadc.c 	return vadc_write(vadc, VADC_EN_CTL1, state ? VADC_EN_CTL1_SET : 0);
vadc              174 drivers/iio/adc/qcom-spmi-vadc.c static void vadc_show_status(struct vadc_priv *vadc)
vadc              179 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_MODE_CTL, &mode);
vadc              183 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_ADC_DIG_PARAM, &dig);
vadc              187 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_ADC_CH_SEL_CTL, &chan);
vadc              191 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_CONV_REQ, &req);
vadc              195 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_STATUS1, &sta1);
vadc              199 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_EN_CTL1, &en);
vadc              203 drivers/iio/adc/qcom-spmi-vadc.c 	dev_err(vadc->dev,
vadc              208 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_configure(struct vadc_priv *vadc,
vadc              217 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_MODE_CTL, mode_ctrl);
vadc              222 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_ADC_CH_SEL_CTL, prop->channel);
vadc              228 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_ADC_DIG_PARAM, decimation);
vadc              233 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_HW_SETTLE_DELAY, prop->hw_settle_time);
vadc              237 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_FAST_AVG_CTL, prop->avg_samples);
vadc              242 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_write(vadc, VADC_FAST_AVG_EN, VADC_FAST_AVG_EN_SET);
vadc              244 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_write(vadc, VADC_FAST_AVG_EN, 0);
vadc              249 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_poll_wait_eoc(struct vadc_priv *vadc, unsigned int interval_us)
vadc              258 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_read(vadc, VADC_STATUS1, &sta1);
vadc              269 drivers/iio/adc/qcom-spmi-vadc.c 	vadc_show_status(vadc);
vadc              274 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_read_result(struct vadc_priv *vadc, u16 *data)
vadc              278 drivers/iio/adc/qcom-spmi-vadc.c 	ret = regmap_bulk_read(vadc->regmap, vadc->base + VADC_DATA, data, 2);
vadc              287 drivers/iio/adc/qcom-spmi-vadc.c static struct vadc_channel_prop *vadc_get_channel(struct vadc_priv *vadc,
vadc              292 drivers/iio/adc/qcom-spmi-vadc.c 	for (i = 0; i < vadc->nchannels; i++)
vadc              293 drivers/iio/adc/qcom-spmi-vadc.c 		if (vadc->chan_props[i].channel == num)
vadc              294 drivers/iio/adc/qcom-spmi-vadc.c 			return &vadc->chan_props[i];
vadc              296 drivers/iio/adc/qcom-spmi-vadc.c 	dev_dbg(vadc->dev, "no such channel %02x\n", num);
vadc              301 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_do_conversion(struct vadc_priv *vadc,
vadc              307 drivers/iio/adc/qcom-spmi-vadc.c 	mutex_lock(&vadc->lock);
vadc              309 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_configure(vadc, prop);
vadc              313 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc->poll_eoc)
vadc              314 drivers/iio/adc/qcom-spmi-vadc.c 		reinit_completion(&vadc->complete);
vadc              316 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_set_state(vadc, true);
vadc              320 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_write(vadc, VADC_CONV_REQ, VADC_CONV_REQ_SET);
vadc              326 drivers/iio/adc/qcom-spmi-vadc.c 	if (vadc->poll_eoc) {
vadc              327 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_poll_wait_eoc(vadc, timeout);
vadc              329 drivers/iio/adc/qcom-spmi-vadc.c 		ret = wait_for_completion_timeout(&vadc->complete, timeout);
vadc              336 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_poll_wait_eoc(vadc, VADC_CONV_TIME_MIN_US);
vadc              341 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read_result(vadc, data);
vadc              344 drivers/iio/adc/qcom-spmi-vadc.c 	vadc_set_state(vadc, false);
vadc              346 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "conversion failed\n");
vadc              348 drivers/iio/adc/qcom-spmi-vadc.c 	mutex_unlock(&vadc->lock);
vadc              352 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_measure_ref_points(struct vadc_priv *vadc)
vadc              358 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->graph[VADC_CALIB_RATIOMETRIC].dx = VADC_RATIOMETRIC_RANGE;
vadc              359 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->graph[VADC_CALIB_ABSOLUTE].dx = VADC_ABSOLUTE_RANGE_UV;
vadc              361 drivers/iio/adc/qcom-spmi-vadc.c 	prop = vadc_get_channel(vadc, VADC_REF_1250MV);
vadc              362 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_do_conversion(vadc, prop, &read_1);
vadc              367 drivers/iio/adc/qcom-spmi-vadc.c 	prop = vadc_get_channel(vadc, VADC_SPARE1);
vadc              369 drivers/iio/adc/qcom-spmi-vadc.c 		prop = vadc_get_channel(vadc, VADC_REF_625MV);
vadc              371 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_do_conversion(vadc, prop, &read_2);
vadc              380 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->graph[VADC_CALIB_ABSOLUTE].dy = read_1 - read_2;
vadc              381 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->graph[VADC_CALIB_ABSOLUTE].gnd = read_2;
vadc              384 drivers/iio/adc/qcom-spmi-vadc.c 	prop = vadc_get_channel(vadc, VADC_VDD_VADC);
vadc              385 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_do_conversion(vadc, prop, &read_1);
vadc              389 drivers/iio/adc/qcom-spmi-vadc.c 	prop = vadc_get_channel(vadc, VADC_GND_REF);
vadc              390 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_do_conversion(vadc, prop, &read_2);
vadc              399 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->graph[VADC_CALIB_RATIOMETRIC].dy = read_1 - read_2;
vadc              400 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->graph[VADC_CALIB_RATIOMETRIC].gnd = read_2;
vadc              403 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "measure reference points failed\n");
vadc              448 drivers/iio/adc/qcom-spmi-vadc.c 	struct vadc_priv *vadc = iio_priv(indio_dev);
vadc              455 drivers/iio/adc/qcom-spmi-vadc.c 		prop = &vadc->chan_props[chan->address];
vadc              456 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_do_conversion(vadc, prop, &adc_code);
vadc              461 drivers/iio/adc/qcom-spmi-vadc.c 				&vadc->graph[prop->calibration],
vadc              470 drivers/iio/adc/qcom-spmi-vadc.c 		prop = &vadc->chan_props[chan->address];
vadc              471 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_do_conversion(vadc, prop, &adc_code);
vadc              488 drivers/iio/adc/qcom-spmi-vadc.c 	struct vadc_priv *vadc = iio_priv(indio_dev);
vadc              491 drivers/iio/adc/qcom-spmi-vadc.c 	for (i = 0; i < vadc->nchannels; i++)
vadc              492 drivers/iio/adc/qcom-spmi-vadc.c 		if (vadc->iio_chans[i].channel == iiospec->args[0])
vadc              735 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
vadc              744 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->nchannels = of_get_available_child_count(node);
vadc              745 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc->nchannels)
vadc              748 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->iio_chans = devm_kcalloc(vadc->dev, vadc->nchannels,
vadc              749 drivers/iio/adc/qcom-spmi-vadc.c 				       sizeof(*vadc->iio_chans), GFP_KERNEL);
vadc              750 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc->iio_chans)
vadc              753 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->chan_props = devm_kcalloc(vadc->dev, vadc->nchannels,
vadc              754 drivers/iio/adc/qcom-spmi-vadc.c 					sizeof(*vadc->chan_props), GFP_KERNEL);
vadc              755 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc->chan_props)
vadc              758 drivers/iio/adc/qcom-spmi-vadc.c 	iio_chan = vadc->iio_chans;
vadc              761 drivers/iio/adc/qcom-spmi-vadc.c 		ret = vadc_get_dt_channel_data(vadc->dev, &prop, child);
vadc              768 drivers/iio/adc/qcom-spmi-vadc.c 		vadc->chan_props[index] = prop;
vadc              783 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc_get_channel(vadc, VADC_REF_1250MV)) {
vadc              784 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "Please define 1.25V channel\n");
vadc              788 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc_get_channel(vadc, VADC_REF_625MV)) {
vadc              789 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "Please define 0.625V channel\n");
vadc              793 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc_get_channel(vadc, VADC_VDD_VADC)) {
vadc              794 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "Please define VDD channel\n");
vadc              798 drivers/iio/adc/qcom-spmi-vadc.c 	if (!vadc_get_channel(vadc, VADC_GND_REF)) {
vadc              799 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "Please define GND channel\n");
vadc              808 drivers/iio/adc/qcom-spmi-vadc.c 	struct vadc_priv *vadc = dev_id;
vadc              810 drivers/iio/adc/qcom-spmi-vadc.c 	complete(&vadc->complete);
vadc              815 drivers/iio/adc/qcom-spmi-vadc.c static int vadc_check_revision(struct vadc_priv *vadc)
vadc              820 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_PERPH_TYPE, &val);
vadc              825 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "%d is not ADC\n", val);
vadc              829 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_PERPH_SUBTYPE, &val);
vadc              834 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "%d is not VADC\n", val);
vadc              838 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_read(vadc, VADC_REVISION2, &val);
vadc              843 drivers/iio/adc/qcom-spmi-vadc.c 		dev_err(vadc->dev, "revision %d not supported\n", val);
vadc              855 drivers/iio/adc/qcom-spmi-vadc.c 	struct vadc_priv *vadc;
vadc              868 drivers/iio/adc/qcom-spmi-vadc.c 	indio_dev = devm_iio_device_alloc(dev, sizeof(*vadc));
vadc              872 drivers/iio/adc/qcom-spmi-vadc.c 	vadc = iio_priv(indio_dev);
vadc              873 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->regmap = regmap;
vadc              874 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->dev = dev;
vadc              875 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->base = reg;
vadc              876 drivers/iio/adc/qcom-spmi-vadc.c 	vadc->are_ref_measured = false;
vadc              877 drivers/iio/adc/qcom-spmi-vadc.c 	init_completion(&vadc->complete);
vadc              878 drivers/iio/adc/qcom-spmi-vadc.c 	mutex_init(&vadc->lock);
vadc              880 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_check_revision(vadc);
vadc              884 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_get_dt_data(vadc, node);
vadc              892 drivers/iio/adc/qcom-spmi-vadc.c 		vadc->poll_eoc = true;
vadc              895 drivers/iio/adc/qcom-spmi-vadc.c 				       "spmi-vadc", vadc);
vadc              900 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_reset(vadc);
vadc              906 drivers/iio/adc/qcom-spmi-vadc.c 	ret = vadc_measure_ref_points(vadc);
vadc              915 drivers/iio/adc/qcom-spmi-vadc.c 	indio_dev->channels = vadc->iio_chans;
vadc              916 drivers/iio/adc/qcom-spmi-vadc.c 	indio_dev->num_channels = vadc->nchannels;