Lines Matching defs:ina

132 static inline bool ina3221_is_enabled(struct ina3221_data *ina, int channel)
136 return ina->summation_shunt_resistor != 0;
138 return pm_runtime_active(ina->pm_dev) &&
139 (ina->reg_config & INA3221_CONFIG_CHx_EN(channel));
151 static inline int ina3221_summation_shunt_resistor(struct ina3221_data *ina)
153 struct ina3221_input *input = ina->inputs;
206 static inline int ina3221_wait_for_data(struct ina3221_data *ina)
210 wait = ina3221_reg_to_interval_us(ina->reg_config);
213 return regmap_field_read_poll_timeout(ina->fields[F_CVRF],
217 static int ina3221_read_value(struct ina3221_data *ina, unsigned int reg,
223 ret = regmap_read(ina->regmap, reg, &regval);
251 struct ina3221_data *ina = dev_get_drvdata(dev);
256 regval = INA3221_CONFIG_AVG(ina->reg_config);
261 *val = ina3221_reg_to_interval_us(ina->reg_config);
272 struct ina3221_data *ina = dev_get_drvdata(dev);
285 if (!ina3221_is_enabled(ina, channel))
289 if (ina->single_shot) {
290 regmap_write(ina->regmap, INA3221_CONFIG,
291 ina->reg_config);
293 ret = ina3221_wait_for_data(ina);
298 ret = ina3221_read_value(ina, reg, &regval);
309 *val = ina3221_is_enabled(ina, channel);
329 struct ina3221_data *ina = dev_get_drvdata(dev);
330 struct ina3221_input *input = ina->inputs;
336 resistance_uo = ina->summation_shunt_resistor;
342 if (!ina3221_is_enabled(ina, channel))
346 if (ina->single_shot) {
347 regmap_write(ina->regmap, INA3221_CONFIG,
348 ina->reg_config);
350 ret = ina3221_wait_for_data(ina);
361 ret = ina3221_read_value(ina, reg, &regval);
373 if (!ina3221_is_enabled(ina, channel)) {
378 ret = regmap_field_read(ina->fields[reg], &regval);
390 struct ina3221_data *ina = dev_get_drvdata(dev);
399 tmp = (ina->reg_config & ~INA3221_CONFIG_AVG_MASK) |
401 ret = regmap_write(ina->regmap, INA3221_CONFIG, tmp);
406 ina->reg_config = tmp;
409 tmp = ina3221_interval_ms_to_conv_time(ina->reg_config, val);
415 tmp = (ina->reg_config & ~tmp) |
418 ret = regmap_write(ina->regmap, INA3221_CONFIG, tmp);
423 ina->reg_config = tmp;
433 struct ina3221_data *ina = dev_get_drvdata(dev);
434 struct ina3221_input *input = ina->inputs;
440 resistance_uo = ina->summation_shunt_resistor;
473 return regmap_write(ina->regmap, reg, regval);
478 struct ina3221_data *ina = dev_get_drvdata(dev);
480 u16 config_old = ina->reg_config & mask;
492 ret = pm_runtime_resume_and_get(ina->pm_dev);
500 tmp = (ina->reg_config & ~mask) | (config & mask);
501 ret = regmap_write(ina->regmap, INA3221_CONFIG, tmp);
506 ina->reg_config = tmp;
510 pm_runtime_put_sync(ina->pm_dev);
518 pm_runtime_put_sync(ina->pm_dev);
527 struct ina3221_data *ina = dev_get_drvdata(dev);
530 mutex_lock(&ina->lock);
548 mutex_unlock(&ina->lock);
556 struct ina3221_data *ina = dev_get_drvdata(dev);
559 mutex_lock(&ina->lock);
577 mutex_unlock(&ina->lock);
585 struct ina3221_data *ina = dev_get_drvdata(dev);
591 *str = ina->inputs[index].label;
600 const struct ina3221_data *ina = drvdata;
620 input = &ina->inputs[channel - 1];
697 struct ina3221_data *ina = dev_get_drvdata(dev);
699 struct ina3221_input *input = &ina->inputs[channel];
709 struct ina3221_data *ina = dev_get_drvdata(dev);
711 struct ina3221_input *input = &ina->inputs[channel];
724 ina->summation_shunt_resistor = ina3221_summation_shunt_resistor(ina);
763 struct ina3221_data *ina)
778 input = &ina->inputs[val];
802 static int ina3221_probe_from_dt(struct device *dev, struct ina3221_data *ina)
812 ina->single_shot = of_property_read_bool(np, "ti,single-shot");
815 ret = ina3221_probe_child_from_dt(dev, child, ina);
828 struct ina3221_data *ina;
832 ina = devm_kzalloc(dev, sizeof(*ina), GFP_KERNEL);
833 if (!ina)
836 ina->regmap = devm_regmap_init_i2c(client, &ina3221_regmap_config);
837 if (IS_ERR(ina->regmap)) {
839 return PTR_ERR(ina->regmap);
843 ina->fields[i] = devm_regmap_field_alloc(dev,
844 ina->regmap,
846 if (IS_ERR(ina->fields[i])) {
848 return PTR_ERR(ina->fields[i]);
853 ina->inputs[i].shunt_resistor = INA3221_RSHUNT_DEFAULT;
855 ret = ina3221_probe_from_dt(dev, ina);
862 ina->reg_config = INA3221_CONFIG_DEFAULT;
865 if (ina->single_shot)
866 ina->reg_config &= ~INA3221_CONFIG_MODE_CONTINUOUS;
870 if (ina->inputs[i].disconnected)
871 ina->reg_config &= ~INA3221_CONFIG_CHx_EN(i);
875 ina->summation_shunt_resistor = ina3221_summation_shunt_resistor(ina);
877 ina->pm_dev = dev;
878 mutex_init(&ina->lock);
879 dev_set_drvdata(dev, ina);
882 pm_runtime_enable(ina->pm_dev);
886 if (ina->inputs[i].disconnected)
889 ret = pm_runtime_get_sync(ina->pm_dev);
894 hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name, ina,
906 pm_runtime_disable(ina->pm_dev);
907 pm_runtime_set_suspended(ina->pm_dev);
910 pm_runtime_put_noidle(ina->pm_dev);
911 mutex_destroy(&ina->lock);
918 struct ina3221_data *ina = dev_get_drvdata(&client->dev);
921 pm_runtime_disable(ina->pm_dev);
922 pm_runtime_set_suspended(ina->pm_dev);
926 pm_runtime_put_noidle(ina->pm_dev);
928 mutex_destroy(&ina->lock);
933 struct ina3221_data *ina = dev_get_drvdata(dev);
937 ret = regmap_read(ina->regmap, INA3221_CONFIG, &ina->reg_config);
942 ret = regmap_update_bits(ina->regmap, INA3221_CONFIG,
948 regcache_cache_only(ina->regmap, true);
949 regcache_mark_dirty(ina->regmap);
956 struct ina3221_data *ina = dev_get_drvdata(dev);
959 regcache_cache_only(ina->regmap, false);
962 ret = regmap_field_write(ina->fields[F_RST], true);
969 ret = regcache_sync(ina->regmap);
974 ret = regmap_write(ina->regmap, INA3221_CONFIG, ina->reg_config);
979 if (ina->summation_shunt_resistor) {
985 ret = regmap_update_bits(ina->regmap, INA3221_MASK_ENABLE,