Lines Matching refs:info
71 const struct ltc294x_info *info, int Q) in convert_bin_to_uAh() argument
73 return ((Q * (info->Qlsb / 10))) / 100; in convert_bin_to_uAh()
77 const struct ltc294x_info *info, int uAh) in convert_uAh_to_bin() argument
81 Q = (uAh * 100) / (info->Qlsb/10); in convert_uAh_to_bin()
131 static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp) in ltc294x_reset() argument
138 ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1); in ltc294x_reset()
140 dev_err(&info->client->dev, in ltc294x_reset()
148 if (info->num_regs == LTC2943_NUM_REGS) in ltc294x_reset()
152 ret = ltc294x_write_regs(info->client, in ltc294x_reset()
155 dev_err(&info->client->dev, in ltc294x_reset()
167 static int ltc294x_read_charge_register(const struct ltc294x_info *info) in ltc294x_read_charge_register() argument
172 ret = ltc294x_read_regs(info->client, in ltc294x_read_charge_register()
179 static int ltc294x_get_charge_now(const struct ltc294x_info *info, int *val) in ltc294x_get_charge_now() argument
181 int value = ltc294x_read_charge_register(info); in ltc294x_get_charge_now()
186 if (info->Qlsb < 0) in ltc294x_get_charge_now()
188 *val = convert_bin_to_uAh(info, value); in ltc294x_get_charge_now()
192 static int ltc294x_set_charge_now(const struct ltc294x_info *info, int val) in ltc294x_set_charge_now() argument
199 value = convert_uAh_to_bin(info, val); in ltc294x_set_charge_now()
201 if (info->Qlsb < 0) in ltc294x_set_charge_now()
207 ret = ltc294x_read_regs(info->client, in ltc294x_set_charge_now()
213 ret = ltc294x_write_regs(info->client, in ltc294x_set_charge_now()
220 ret = ltc294x_write_regs(info->client, in ltc294x_set_charge_now()
227 ret = ltc294x_write_regs(info->client, in ltc294x_set_charge_now()
234 const struct ltc294x_info *info, int *val) in ltc294x_get_charge_counter() argument
236 int value = ltc294x_read_charge_register(info); in ltc294x_get_charge_counter()
241 *val = convert_bin_to_uAh(info, value); in ltc294x_get_charge_counter()
245 static int ltc294x_get_voltage(const struct ltc294x_info *info, int *val) in ltc294x_get_voltage() argument
251 ret = ltc294x_read_regs(info->client, in ltc294x_get_voltage()
258 static int ltc294x_get_current(const struct ltc294x_info *info, int *val) in ltc294x_get_current() argument
264 ret = ltc294x_read_regs(info->client, in ltc294x_get_current()
271 *val = 1000 * ((60000 * value) / (info->r_sense * 0x7FFF)); /* in uA */ in ltc294x_get_current()
275 static int ltc294x_get_temperature(const struct ltc294x_info *info, int *val) in ltc294x_get_temperature() argument
281 ret = ltc294x_read_regs(info->client, in ltc294x_get_temperature()
293 struct ltc294x_info *info = power_supply_get_drvdata(psy); in ltc294x_get_property() local
297 return ltc294x_get_charge_now(info, &val->intval); in ltc294x_get_property()
299 return ltc294x_get_charge_counter(info, &val->intval); in ltc294x_get_property()
301 return ltc294x_get_voltage(info, &val->intval); in ltc294x_get_property()
303 return ltc294x_get_current(info, &val->intval); in ltc294x_get_property()
305 return ltc294x_get_temperature(info, &val->intval); in ltc294x_get_property()
315 struct ltc294x_info *info = power_supply_get_drvdata(psy); in ltc294x_set_property() local
319 return ltc294x_set_charge_now(info, val->intval); in ltc294x_set_property()
336 static void ltc294x_update(struct ltc294x_info *info) in ltc294x_update() argument
338 int charge = ltc294x_read_charge_register(info); in ltc294x_update()
340 if (charge != info->charge) { in ltc294x_update()
341 info->charge = charge; in ltc294x_update()
342 power_supply_changed(info->supply); in ltc294x_update()
348 struct ltc294x_info *info; in ltc294x_work() local
350 info = container_of(work, struct ltc294x_info, work.work); in ltc294x_work()
351 ltc294x_update(info); in ltc294x_work()
352 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ); in ltc294x_work()
365 struct ltc294x_info *info = i2c_get_clientdata(client); in ltc294x_i2c_remove() local
367 cancel_delayed_work(&info->work); in ltc294x_i2c_remove()
368 power_supply_unregister(info->supply); in ltc294x_i2c_remove()
376 struct ltc294x_info *info; in ltc294x_i2c_probe() local
382 info = devm_kzalloc(&client->dev, sizeof(*info), GFP_KERNEL); in ltc294x_i2c_probe()
383 if (info == NULL) in ltc294x_i2c_probe()
386 i2c_set_clientdata(client, info); in ltc294x_i2c_probe()
390 info->num_regs = id->driver_data; in ltc294x_i2c_probe()
391 info->supply_desc.name = np->name; in ltc294x_i2c_probe()
401 info->r_sense = r_sense; in ltc294x_i2c_probe()
411 if (info->num_regs == LTC2943_NUM_REGS) { in ltc294x_i2c_probe()
414 info->Qlsb = ((340 * 50000) / r_sense) / in ltc294x_i2c_probe()
419 info->Qlsb = ((85 * 50000) / r_sense) / in ltc294x_i2c_probe()
423 info->client = client; in ltc294x_i2c_probe()
424 info->supply_desc.type = POWER_SUPPLY_TYPE_BATTERY; in ltc294x_i2c_probe()
425 info->supply_desc.properties = ltc294x_properties; in ltc294x_i2c_probe()
426 if (info->num_regs >= LTC294X_REG_TEMPERATURE_LSB) in ltc294x_i2c_probe()
427 info->supply_desc.num_properties = in ltc294x_i2c_probe()
429 else if (info->num_regs >= LTC294X_REG_CURRENT_LSB) in ltc294x_i2c_probe()
430 info->supply_desc.num_properties = in ltc294x_i2c_probe()
432 else if (info->num_regs >= LTC294X_REG_VOLTAGE_LSB) in ltc294x_i2c_probe()
433 info->supply_desc.num_properties = in ltc294x_i2c_probe()
436 info->supply_desc.num_properties = in ltc294x_i2c_probe()
438 info->supply_desc.get_property = ltc294x_get_property; in ltc294x_i2c_probe()
439 info->supply_desc.set_property = ltc294x_set_property; in ltc294x_i2c_probe()
440 info->supply_desc.property_is_writeable = ltc294x_property_is_writeable; in ltc294x_i2c_probe()
441 info->supply_desc.external_power_changed = NULL; in ltc294x_i2c_probe()
443 psy_cfg.drv_data = info; in ltc294x_i2c_probe()
445 INIT_DELAYED_WORK(&info->work, ltc294x_work); in ltc294x_i2c_probe()
447 ret = ltc294x_reset(info, prescaler_exp); in ltc294x_i2c_probe()
453 info->supply = power_supply_register(&client->dev, &info->supply_desc, in ltc294x_i2c_probe()
455 if (IS_ERR(info->supply)) { in ltc294x_i2c_probe()
457 return PTR_ERR(info->supply); in ltc294x_i2c_probe()
459 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ); in ltc294x_i2c_probe()
470 struct ltc294x_info *info = i2c_get_clientdata(client); in ltc294x_suspend() local
472 cancel_delayed_work(&info->work); in ltc294x_suspend()
479 struct ltc294x_info *info = i2c_get_clientdata(client); in ltc294x_resume() local
481 schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ); in ltc294x_resume()