Lines Matching refs:info

76 	const struct ltc294x_info *info, int Q)  in convert_bin_to_uAh()  argument
78 return ((Q * (info->Qlsb / 10))) / 100; in convert_bin_to_uAh()
82 const struct ltc294x_info *info, int uAh) in convert_uAh_to_bin() argument
86 Q = (uAh * 100) / (info->Qlsb/10); in convert_uAh_to_bin()
136 static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp) in ltc294x_reset() argument
143 ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1); in ltc294x_reset()
145 dev_err(&info->client->dev, in ltc294x_reset()
153 if (info->num_regs == LTC2943_NUM_REGS) in ltc294x_reset()
157 ret = ltc294x_write_regs(info->client, in ltc294x_reset()
160 dev_err(&info->client->dev, in ltc294x_reset()
172 static int ltc294x_read_charge_register(const struct ltc294x_info *info) in ltc294x_read_charge_register() argument
177 ret = ltc294x_read_regs(info->client, in ltc294x_read_charge_register()
184 static int ltc294x_get_charge_now(const struct ltc294x_info *info, int *val) in ltc294x_get_charge_now() argument
186 int value = ltc294x_read_charge_register(info); in ltc294x_get_charge_now()
191 if (info->Qlsb < 0) in ltc294x_get_charge_now()
193 *val = convert_bin_to_uAh(info, value); in ltc294x_get_charge_now()
197 static int ltc294x_set_charge_now(const struct ltc294x_info *info, int val) in ltc294x_set_charge_now() argument
204 value = convert_uAh_to_bin(info, val); in ltc294x_set_charge_now()
206 if (info->Qlsb < 0) in ltc294x_set_charge_now()
212 ret = ltc294x_read_regs(info->client, in ltc294x_set_charge_now()
218 ret = ltc294x_write_regs(info->client, in ltc294x_set_charge_now()
225 ret = ltc294x_write_regs(info->client, in ltc294x_set_charge_now()
232 ret = ltc294x_write_regs(info->client, in ltc294x_set_charge_now()
239 const struct ltc294x_info *info, int *val) in ltc294x_get_charge_counter() argument
241 int value = ltc294x_read_charge_register(info); in ltc294x_get_charge_counter()
246 *val = convert_bin_to_uAh(info, value); in ltc294x_get_charge_counter()
250 static int ltc294x_get_voltage(const struct ltc294x_info *info, int *val) in ltc294x_get_voltage() argument
256 ret = ltc294x_read_regs(info->client, in ltc294x_get_voltage()
263 static int ltc294x_get_current(const struct ltc294x_info *info, int *val) in ltc294x_get_current() argument
269 ret = ltc294x_read_regs(info->client, in ltc294x_get_current()
276 *val = 1000 * ((60000 * value) / (info->r_sense * 0x7FFF)); /* in uA */ in ltc294x_get_current()
280 static int ltc294x_get_temperature(const struct ltc294x_info *info, int *val) in ltc294x_get_temperature() argument
286 ret = ltc294x_read_regs(info->client, in ltc294x_get_temperature()
298 struct ltc294x_info *info = power_supply_get_drvdata(psy); in ltc294x_get_property() local
302 return ltc294x_get_charge_now(info, &val->intval); in ltc294x_get_property()
304 return ltc294x_get_charge_counter(info, &val->intval); in ltc294x_get_property()
306 return ltc294x_get_voltage(info, &val->intval); in ltc294x_get_property()
308 return ltc294x_get_current(info, &val->intval); in ltc294x_get_property()
310 return ltc294x_get_temperature(info, &val->intval); in ltc294x_get_property()
320 struct ltc294x_info *info = power_supply_get_drvdata(psy); in ltc294x_set_property() local
324 return ltc294x_set_charge_now(info, val->intval); in ltc294x_set_property()
341 static void ltc294x_update(struct ltc294x_info *info) in ltc294x_update() argument
343 int charge = ltc294x_read_charge_register(info); in ltc294x_update()
345 if (charge != info->charge) { in ltc294x_update()
346 info->charge = charge; in ltc294x_update()
347 power_supply_changed(info->supply); in ltc294x_update()
353 struct ltc294x_info *info; in ltc294x_work() local
355 info = container_of(work, struct ltc294x_info, work.work); in ltc294x_work()
356 ltc294x_update(info); in ltc294x_work()
357 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ); in ltc294x_work()
370 struct ltc294x_info *info = i2c_get_clientdata(client); in ltc294x_i2c_remove() local
372 cancel_delayed_work(&info->work); in ltc294x_i2c_remove()
373 power_supply_unregister(info->supply); in ltc294x_i2c_remove()
374 kfree(info->supply_desc.name); in ltc294x_i2c_remove()
376 idr_remove(&ltc294x_id, info->id); in ltc294x_i2c_remove()
385 struct ltc294x_info *info; in ltc294x_i2c_probe() local
400 info = devm_kzalloc(&client->dev, sizeof(*info), GFP_KERNEL); in ltc294x_i2c_probe()
401 if (info == NULL) { in ltc294x_i2c_probe()
406 i2c_set_clientdata(client, info); in ltc294x_i2c_probe()
408 info->num_regs = id->driver_data; in ltc294x_i2c_probe()
409 info->supply_desc.name = kasprintf(GFP_KERNEL, "%s-%d", client->name, in ltc294x_i2c_probe()
411 if (!info->supply_desc.name) { in ltc294x_i2c_probe()
426 info->r_sense = r_sense; in ltc294x_i2c_probe()
436 if (info->num_regs == LTC2943_NUM_REGS) { in ltc294x_i2c_probe()
439 info->Qlsb = ((340 * 50000) / r_sense) / in ltc294x_i2c_probe()
444 info->Qlsb = ((85 * 50000) / r_sense) / in ltc294x_i2c_probe()
448 info->client = client; in ltc294x_i2c_probe()
449 info->id = num; in ltc294x_i2c_probe()
450 info->supply_desc.type = POWER_SUPPLY_TYPE_BATTERY; in ltc294x_i2c_probe()
451 info->supply_desc.properties = ltc294x_properties; in ltc294x_i2c_probe()
452 if (info->num_regs >= LTC294X_REG_TEMPERATURE_LSB) in ltc294x_i2c_probe()
453 info->supply_desc.num_properties = in ltc294x_i2c_probe()
455 else if (info->num_regs >= LTC294X_REG_CURRENT_LSB) in ltc294x_i2c_probe()
456 info->supply_desc.num_properties = in ltc294x_i2c_probe()
458 else if (info->num_regs >= LTC294X_REG_VOLTAGE_LSB) in ltc294x_i2c_probe()
459 info->supply_desc.num_properties = in ltc294x_i2c_probe()
462 info->supply_desc.num_properties = in ltc294x_i2c_probe()
464 info->supply_desc.get_property = ltc294x_get_property; in ltc294x_i2c_probe()
465 info->supply_desc.set_property = ltc294x_set_property; in ltc294x_i2c_probe()
466 info->supply_desc.property_is_writeable = ltc294x_property_is_writeable; in ltc294x_i2c_probe()
467 info->supply_desc.external_power_changed = NULL; in ltc294x_i2c_probe()
469 psy_cfg.drv_data = info; in ltc294x_i2c_probe()
471 INIT_DELAYED_WORK(&info->work, ltc294x_work); in ltc294x_i2c_probe()
473 ret = ltc294x_reset(info, prescaler_exp); in ltc294x_i2c_probe()
479 info->supply = power_supply_register(&client->dev, &info->supply_desc, in ltc294x_i2c_probe()
481 if (IS_ERR(info->supply)) { in ltc294x_i2c_probe()
483 ret = PTR_ERR(info->supply); in ltc294x_i2c_probe()
486 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ); in ltc294x_i2c_probe()
492 kfree(info->supply_desc.name); in ltc294x_i2c_probe()
508 struct ltc294x_info *info = i2c_get_clientdata(client); in ltc294x_suspend() local
510 cancel_delayed_work(&info->work); in ltc294x_suspend()
517 struct ltc294x_info *info = i2c_get_clientdata(client); in ltc294x_resume() local
519 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ); in ltc294x_resume()