Lines Matching defs:data

187 static int ina2xx_calibrate(struct ina2xx_data *data)
189 return regmap_write(data->regmap, INA2XX_CALIBRATION,
190 data->config->calibration_value);
196 static int ina2xx_init(struct ina2xx_data *data)
198 int ret = regmap_write(data->regmap, INA2XX_CONFIG,
199 data->config->config_default);
203 return ina2xx_calibrate(data);
208 struct ina2xx_data *data = dev_get_drvdata(dev);
215 ret = regmap_read(data->regmap, reg, regval);
232 ret = regmap_read(data->regmap, INA2XX_CALIBRATION,
240 ret = ina2xx_init(data);
264 static int ina2xx_get_value(struct ina2xx_data *data, u8 reg,
272 val = DIV_ROUND_CLOSEST((s16)regval, data->config->shunt_div);
275 val = (regval >> data->config->bus_voltage_shift)
276 * data->config->bus_voltage_lsb;
280 val = regval * data->power_lsb_uW;
284 val = (s16)regval * data->current_lsb_uA;
304 struct ina2xx_data *data = dev_get_drvdata(dev);
312 return sysfs_emit(buf, "%d\n", ina2xx_get_value(data, attr->index, regval));
315 static int ina226_reg_to_alert(struct ina2xx_data *data, u8 bit, u16 regval)
337 return ina2xx_get_value(data, reg, regval);
344 static s16 ina226_alert_to_reg(struct ina2xx_data *data, u8 bit, int val)
349 val *= data->config->shunt_div;
353 val = (val * 1000) << data->config->bus_voltage_shift;
354 val = DIV_ROUND_CLOSEST(val, data->config->bus_voltage_lsb);
357 val = DIV_ROUND_CLOSEST(val, data->power_lsb_uW);
370 struct ina2xx_data *data = dev_get_drvdata(dev);
375 mutex_lock(&data->config_lock);
376 ret = regmap_read(data->regmap, INA226_MASK_ENABLE, &regval);
381 ret = regmap_read(data->regmap, INA226_ALERT_LIMIT, &regval);
384 val = ina226_reg_to_alert(data, attr->index, regval);
389 mutex_unlock(&data->config_lock);
398 struct ina2xx_data *data = dev_get_drvdata(dev);
411 mutex_lock(&data->config_lock);
412 ret = regmap_update_bits(data->regmap, INA226_MASK_ENABLE,
417 ret = regmap_write(data->regmap, INA226_ALERT_LIMIT,
418 ina226_alert_to_reg(data, attr->index, val));
423 ret = regmap_update_bits(data->regmap, INA226_MASK_ENABLE,
432 mutex_unlock(&data->config_lock);
440 struct ina2xx_data *data = dev_get_drvdata(dev);
445 ret = regmap_read(data->regmap, INA226_MASK_ENABLE, &regval);
460 static int ina2xx_set_shunt(struct ina2xx_data *data, long val)
463 data->config->shunt_div);
467 mutex_lock(&data->config_lock);
468 data->rshunt = val;
469 data->current_lsb_uA = DIV_ROUND_CLOSEST(dividend, val);
470 data->power_lsb_uW = data->config->power_lsb_factor *
471 data->current_lsb_uA;
472 mutex_unlock(&data->config_lock);
480 struct ina2xx_data *data = dev_get_drvdata(dev);
482 return sysfs_emit(buf, "%li\n", data->rshunt);
491 struct ina2xx_data *data = dev_get_drvdata(dev);
497 status = ina2xx_set_shunt(data, val);
507 struct ina2xx_data *data = dev_get_drvdata(dev);
518 status = regmap_update_bits(data->regmap, INA2XX_CONFIG,
530 struct ina2xx_data *data = dev_get_drvdata(dev);
534 status = regmap_read(data->regmap, INA2XX_CONFIG, &regval);
620 struct ina2xx_data *data;
631 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
632 if (!data)
636 data->config = &ina2xx_config[chip];
637 mutex_init(&data->config_lock);
648 ina2xx_set_shunt(data, val);
650 ina2xx_regmap_config.max_register = data->config->registers;
652 data->regmap = devm_regmap_init_i2c(client, &ina2xx_regmap_config);
653 if (IS_ERR(data->regmap)) {
655 return PTR_ERR(data->regmap);
662 ret = ina2xx_init(data);
668 data->groups[group++] = &ina2xx_group;
670 data->groups[group++] = &ina226_group;
673 data, data->groups);
678 client->name, data->rshunt);
696 .data = (void *)ina219
700 .data = (void *)ina219
704 .data = (void *)ina226
708 .data = (void *)ina226
712 .data = (void *)ina226