Lines Matching refs:info

82 	const struct ltc294x_info *info, int Q)
84 return ((Q * (info->Qlsb / 10))) / 100;
88 const struct ltc294x_info *info, int uAh)
92 Q = (uAh * 100) / (info->Qlsb/10);
142 static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp)
149 ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1);
151 dev_err(&info->client->dev,
159 switch (info->id) {
172 ret = ltc294x_write_regs(info->client,
175 dev_err(&info->client->dev,
187 static int ltc294x_read_charge_register(const struct ltc294x_info *info,
193 ret = ltc294x_read_regs(info->client, reg, &datar[0], 2);
199 static int ltc294x_get_charge(const struct ltc294x_info *info,
202 int value = ltc294x_read_charge_register(info, reg);
207 if (info->Qlsb < 0)
209 *val = convert_bin_to_uAh(info, value);
213 static int ltc294x_set_charge_now(const struct ltc294x_info *info, int val)
220 value = convert_uAh_to_bin(info, val);
222 if (info->Qlsb < 0)
228 ret = ltc294x_read_regs(info->client,
234 ret = ltc294x_write_regs(info->client,
241 ret = ltc294x_write_regs(info->client,
248 ret = ltc294x_write_regs(info->client,
254 static int ltc294x_set_charge_thr(const struct ltc294x_info *info,
260 value = convert_uAh_to_bin(info, val);
262 if (info->Qlsb < 0)
270 return ltc294x_write_regs(info->client, reg, &dataw[0], 2);
274 const struct ltc294x_info *info, int *val)
276 int value = ltc294x_read_charge_register(info, LTC294X_REG_ACC_CHARGE_MSB);
281 *val = convert_bin_to_uAh(info, value);
285 static int ltc294x_get_voltage(const struct ltc294x_info *info, int *val)
291 ret = ltc294x_read_regs(info->client,
294 switch (info->id) {
315 static int ltc294x_get_current(const struct ltc294x_info *info, int *val)
321 ret = ltc294x_read_regs(info->client,
325 if (info->id == LTC2944_ID)
332 *val = 1000 * (value / (info->r_sense * 0x7FFF)); /* in uA */
336 static int ltc294x_get_temperature(const struct ltc294x_info *info, int *val)
343 if (info->id == LTC2942_ID) {
350 ret = ltc294x_read_regs(info->client, reg, &datar[0], 2);
361 struct ltc294x_info *info = power_supply_get_drvdata(psy);
365 return ltc294x_get_charge(info, LTC294X_REG_CHARGE_THR_HIGH_MSB,
368 return ltc294x_get_charge(info, LTC294X_REG_CHARGE_THR_LOW_MSB,
371 return ltc294x_get_charge(info, LTC294X_REG_ACC_CHARGE_MSB,
374 return ltc294x_get_charge_counter(info, &val->intval);
376 return ltc294x_get_voltage(info, &val->intval);
378 return ltc294x_get_current(info, &val->intval);
380 return ltc294x_get_temperature(info, &val->intval);
390 struct ltc294x_info *info = power_supply_get_drvdata(psy);
394 return ltc294x_set_charge_thr(info,
397 return ltc294x_set_charge_thr(info,
400 return ltc294x_set_charge_now(info, val->intval);
419 static void ltc294x_update(struct ltc294x_info *info)
421 int charge = ltc294x_read_charge_register(info, LTC294X_REG_ACC_CHARGE_MSB);
423 if (charge != info->charge) {
424 info->charge = charge;
425 power_supply_changed(info->supply);
431 struct ltc294x_info *info;
433 info = container_of(work, struct ltc294x_info, work.work);
434 ltc294x_update(info);
435 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ);
450 struct ltc294x_info *info = i2c_get_clientdata(client);
452 cancel_delayed_work_sync(&info->work);
453 power_supply_unregister(info->supply);
461 struct ltc294x_info *info;
468 info = devm_kzalloc(&client->dev, sizeof(*info), GFP_KERNEL);
469 if (info == NULL)
472 i2c_set_clientdata(client, info);
476 info->id = (enum ltc294x_id) (uintptr_t) of_device_get_match_data(
478 info->supply_desc.name = np->name;
488 info->r_sense = r_sense;
498 if (info->id == LTC2943_ID) {
501 info->Qlsb = ((340 * 50000) / r_sense) /
506 info->Qlsb = ((85 * 50000) / r_sense) /
511 if (info->id == LTC2941_ID || info->id == LTC2942_ID) {
519 info->id = LTC2941_ID;
521 info->id = LTC2942_ID;
524 info->client = client;
525 info->supply_desc.type = POWER_SUPPLY_TYPE_BATTERY;
526 info->supply_desc.properties = ltc294x_properties;
527 switch (info->id) {
530 info->supply_desc.num_properties =
534 info->supply_desc.num_properties =
539 info->supply_desc.num_properties =
543 info->supply_desc.get_property = ltc294x_get_property;
544 info->supply_desc.set_property = ltc294x_set_property;
545 info->supply_desc.property_is_writeable = ltc294x_property_is_writeable;
546 info->supply_desc.external_power_changed = NULL;
548 psy_cfg.drv_data = info;
550 INIT_DELAYED_WORK(&info->work, ltc294x_work);
552 ret = ltc294x_reset(info, prescaler_exp);
558 info->supply = power_supply_register(&client->dev, &info->supply_desc,
560 if (IS_ERR(info->supply)) {
562 return PTR_ERR(info->supply);
564 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ);
572 struct ltc294x_info *info = i2c_get_clientdata(client);
578 if (info->id == LTC2941_ID)
582 ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1);
589 ltc294x_write_regs(info->client, LTC294X_REG_CONTROL,
598 struct ltc294x_info *info = i2c_get_clientdata(client);
600 cancel_delayed_work(&info->work);
607 struct ltc294x_info *info = i2c_get_clientdata(client);
609 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ);