Lines Matching refs:data
188 static int ina2xx_calibrate(struct ina2xx_data *data)
190 return regmap_write(data->regmap, INA2XX_CALIBRATION,
191 data->config->calibration_value);
197 static int ina2xx_init(struct ina2xx_data *data)
199 int ret = regmap_write(data->regmap, INA2XX_CONFIG,
200 data->config->config_default);
204 return ina2xx_calibrate(data);
209 struct ina2xx_data *data = dev_get_drvdata(dev);
216 ret = regmap_read(data->regmap, reg, regval);
233 ret = regmap_read(data->regmap, INA2XX_CALIBRATION,
241 ret = ina2xx_init(data);
265 static int ina2xx_get_value(struct ina2xx_data *data, u8 reg,
273 val = DIV_ROUND_CLOSEST((s16)regval, data->config->shunt_div);
276 val = (regval >> data->config->bus_voltage_shift)
277 * data->config->bus_voltage_lsb;
281 val = regval * data->power_lsb_uW;
285 val = (s16)regval * data->current_lsb_uA;
305 struct ina2xx_data *data = dev_get_drvdata(dev);
314 ina2xx_get_value(data, attr->index, regval));
317 static int ina226_reg_to_alert(struct ina2xx_data *data, u8 bit, u16 regval)
339 return ina2xx_get_value(data, reg, regval);
346 static s16 ina226_alert_to_reg(struct ina2xx_data *data, u8 bit, int val)
351 val *= data->config->shunt_div;
355 val = (val * 1000) << data->config->bus_voltage_shift;
356 val = DIV_ROUND_CLOSEST(val, data->config->bus_voltage_lsb);
359 val = DIV_ROUND_CLOSEST(val, data->power_lsb_uW);
372 struct ina2xx_data *data = dev_get_drvdata(dev);
377 mutex_lock(&data->config_lock);
378 ret = regmap_read(data->regmap, INA226_MASK_ENABLE, ®val);
383 ret = regmap_read(data->regmap, INA226_ALERT_LIMIT, ®val);
386 val = ina226_reg_to_alert(data, attr->index, regval);
391 mutex_unlock(&data->config_lock);
400 struct ina2xx_data *data = dev_get_drvdata(dev);
413 mutex_lock(&data->config_lock);
414 ret = regmap_update_bits(data->regmap, INA226_MASK_ENABLE,
419 ret = regmap_write(data->regmap, INA226_ALERT_LIMIT,
420 ina226_alert_to_reg(data, attr->index, val));
425 ret = regmap_update_bits(data->regmap, INA226_MASK_ENABLE,
434 mutex_unlock(&data->config_lock);
442 struct ina2xx_data *data = dev_get_drvdata(dev);
447 ret = regmap_read(data->regmap, INA226_MASK_ENABLE, ®val);
462 static int ina2xx_set_shunt(struct ina2xx_data *data, long val)
465 data->config->shunt_div);
469 mutex_lock(&data->config_lock);
470 data->rshunt = val;
471 data->current_lsb_uA = DIV_ROUND_CLOSEST(dividend, val);
472 data->power_lsb_uW = data->config->power_lsb_factor *
473 data->current_lsb_uA;
474 mutex_unlock(&data->config_lock);
482 struct ina2xx_data *data = dev_get_drvdata(dev);
484 return snprintf(buf, PAGE_SIZE, "%li\n", data->rshunt);
493 struct ina2xx_data *data = dev_get_drvdata(dev);
499 status = ina2xx_set_shunt(data, val);
509 struct ina2xx_data *data = dev_get_drvdata(dev);
520 status = regmap_update_bits(data->regmap, INA2XX_CONFIG,
532 struct ina2xx_data *data = dev_get_drvdata(dev);
536 status = regmap_read(data->regmap, INA2XX_CONFIG, ®val);
622 struct ina2xx_data *data;
633 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
634 if (!data)
638 data->config = &ina2xx_config[chip];
639 mutex_init(&data->config_lock);
650 ina2xx_set_shunt(data, val);
652 ina2xx_regmap_config.max_register = data->config->registers;
654 data->regmap = devm_regmap_init_i2c(client, &ina2xx_regmap_config);
655 if (IS_ERR(data->regmap)) {
657 return PTR_ERR(data->regmap);
660 ret = ina2xx_init(data);
666 data->groups[group++] = &ina2xx_group;
668 data->groups[group++] = &ina226_group;
671 data, data->groups);
676 client->name, data->rshunt);
694 .data = (void *)ina219
698 .data = (void *)ina219
702 .data = (void *)ina226
706 .data = (void *)ina226
710 .data = (void *)ina226