Lines Matching refs:data
142 * data reads, configuration updates
192 static int ads7924_get_adc_result(struct ads7924_data *data,
201 if (data->conv_invalid) {
208 data->conv_invalid = false;
211 ret = regmap_raw_read(data->regmap, ADS7924_AUTO_INCREMENT_BIT |
226 struct ads7924_data *data = iio_priv(indio_dev);
230 mutex_lock(&data->lock);
231 ret = ads7924_get_adc_result(data, chan, val);
232 mutex_unlock(&data->lock);
238 vref_uv = regulator_get_voltage(data->vref_reg);
287 static int ads7924_set_conv_mode(struct ads7924_data *data, int mode)
291 struct device *dev = data->dev;
302 ret = regmap_update_bits(data->regmap, ADS7924_MODECNTRL_REG,
314 ret = regmap_update_bits(data->regmap, ADS7924_MODECNTRL_REG,
325 struct ads7924_data *data = iio_priv(indio_dev);
327 if (data->reset_gpio) {
328 gpiod_set_value(data->reset_gpio, 1); /* Assert. */
331 gpiod_set_value(data->reset_gpio, 0); /* Deassert. */
339 return regmap_write(data->regmap, ADS7924_RESET_REG, 0b10101010);
342 static void ads7924_reg_disable(void *data)
344 regulator_disable(data);
347 static void ads7924_set_idle_mode(void *data)
349 ads7924_set_conv_mode(data, ADS7924_MODECNTRL_IDLE);
355 struct ads7924_data *data;
359 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
364 data = iio_priv(indio_dev);
366 data->dev = dev;
369 data->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
370 if (IS_ERR(data->reset_gpio))
371 return dev_err_probe(dev, PTR_ERR(data->reset_gpio),
374 mutex_init(&data->lock);
388 data->regmap = devm_regmap_init_i2c(client, &ads7924_regmap_config);
389 if (IS_ERR(data->regmap))
390 return dev_err_probe(dev, PTR_ERR(data->regmap),
393 data->vref_reg = devm_regulator_get(dev, "vref");
394 if (IS_ERR(data->vref_reg))
395 return dev_err_probe(dev, PTR_ERR(data->vref_reg),
398 ret = regulator_enable(data->vref_reg);
403 ret = devm_add_action_or_reset(dev, ads7924_reg_disable, data->vref_reg);
413 ret = ads7924_set_conv_mode(data, ADS7924_MODECNTRL_AUTO_SCAN);
418 ret = devm_add_action_or_reset(dev, ads7924_set_idle_mode, data);
424 ret = regmap_update_bits(data->regmap, ADS7924_ACQCONFIG_REG,
432 ret = regmap_update_bits(data->regmap, ADS7924_PWRCONFIG_REG,
439 data->conv_invalid = true;