Lines Matching refs:info

51 	int (*get_battery_current)(struct ds278x_info *info, int *current_uA);
52 int (*get_battery_voltage)(struct ds278x_info *info, int *voltage_uV);
53 int (*get_battery_capacity)(struct ds278x_info *info, int *capacity);
73 static inline int ds278x_read_reg(struct ds278x_info *info, int reg, u8 *val) in ds278x_read_reg() argument
77 ret = i2c_smbus_read_byte_data(info->client, reg); in ds278x_read_reg()
79 dev_err(&info->client->dev, "register read failed\n"); in ds278x_read_reg()
87 static inline int ds278x_read_reg16(struct ds278x_info *info, int reg_msb, in ds278x_read_reg16() argument
92 ret = i2c_smbus_read_word_data(info->client, reg_msb); in ds278x_read_reg16()
94 dev_err(&info->client->dev, "register read failed\n"); in ds278x_read_reg16()
102 static int ds278x_get_temp(struct ds278x_info *info, int *temp) in ds278x_get_temp() argument
113 err = ds278x_read_reg16(info, DS278x_REG_TEMP_MSB, &raw); in ds278x_get_temp()
120 static int ds2782_get_current(struct ds278x_info *info, int *current_uA) in ds2782_get_current() argument
131 err = ds278x_read_reg(info, DS2782_REG_RSNSP, &sense_res_raw); in ds2782_get_current()
135 dev_err(&info->client->dev, "sense resistor value is 0\n"); in ds2782_get_current()
140 dev_dbg(&info->client->dev, "sense resistor = %d milli-ohms\n", in ds2782_get_current()
142 err = ds278x_read_reg16(info, DS278x_REG_CURRENT_MSB, &raw); in ds2782_get_current()
149 static int ds2782_get_voltage(struct ds278x_info *info, int *voltage_uV) in ds2782_get_voltage() argument
158 err = ds278x_read_reg16(info, DS278x_REG_VOLT_MSB, &raw); in ds2782_get_voltage()
165 static int ds2782_get_capacity(struct ds278x_info *info, int *capacity) in ds2782_get_capacity() argument
170 err = ds278x_read_reg(info, DS2782_REG_RARC, &raw); in ds2782_get_capacity()
177 static int ds2786_get_current(struct ds278x_info *info, int *current_uA) in ds2786_get_current() argument
182 err = ds278x_read_reg16(info, DS278x_REG_CURRENT_MSB, &raw); in ds2786_get_current()
185 *current_uA = (raw / 16) * (DS2786_CURRENT_UNITS / info->rsns); in ds2786_get_current()
189 static int ds2786_get_voltage(struct ds278x_info *info, int *voltage_uV) in ds2786_get_voltage() argument
198 err = ds278x_read_reg16(info, DS278x_REG_VOLT_MSB, &raw); in ds2786_get_voltage()
205 static int ds2786_get_capacity(struct ds278x_info *info, int *capacity) in ds2786_get_capacity() argument
210 err = ds278x_read_reg(info, DS2786_REG_RARC, &raw); in ds2786_get_capacity()
218 static int ds278x_get_status(struct ds278x_info *info, int *status) in ds278x_get_status() argument
224 err = info->ops->get_battery_current(info, &current_uA); in ds278x_get_status()
228 err = info->ops->get_battery_capacity(info, &capacity); in ds278x_get_status()
232 info->capacity = capacity; in ds278x_get_status()
250 struct ds278x_info *info = to_ds278x_info(psy); in ds278x_battery_get_property() local
255 ret = ds278x_get_status(info, &val->intval); in ds278x_battery_get_property()
259 ret = info->ops->get_battery_capacity(info, &val->intval); in ds278x_battery_get_property()
263 ret = info->ops->get_battery_voltage(info, &val->intval); in ds278x_battery_get_property()
267 ret = info->ops->get_battery_current(info, &val->intval); in ds278x_battery_get_property()
271 ret = ds278x_get_temp(info, &val->intval); in ds278x_battery_get_property()
281 static void ds278x_bat_update(struct ds278x_info *info) in ds278x_bat_update() argument
283 int old_status = info->status; in ds278x_bat_update()
284 int old_capacity = info->capacity; in ds278x_bat_update()
286 ds278x_get_status(info, &info->status); in ds278x_bat_update()
288 if ((old_status != info->status) || (old_capacity != info->capacity)) in ds278x_bat_update()
289 power_supply_changed(info->battery); in ds278x_bat_update()
294 struct ds278x_info *info; in ds278x_bat_work() local
296 info = container_of(work, struct ds278x_info, bat_work.work); in ds278x_bat_work()
297 ds278x_bat_update(info); in ds278x_bat_work()
299 schedule_delayed_work(&info->bat_work, DS278x_DELAY); in ds278x_bat_work()
321 struct ds278x_info *info = i2c_get_clientdata(client); in ds278x_battery_remove() local
323 power_supply_unregister(info->battery); in ds278x_battery_remove()
324 kfree(info->battery_desc.name); in ds278x_battery_remove()
327 idr_remove(&battery_id, info->id); in ds278x_battery_remove()
330 cancel_delayed_work(&info->bat_work); in ds278x_battery_remove()
332 kfree(info); in ds278x_battery_remove()
341 struct ds278x_info *info = i2c_get_clientdata(client); in ds278x_suspend() local
343 cancel_delayed_work(&info->bat_work); in ds278x_suspend()
350 struct ds278x_info *info = i2c_get_clientdata(client); in ds278x_resume() local
352 schedule_delayed_work(&info->bat_work, DS278x_DELAY); in ds278x_resume()
382 struct ds278x_info *info; in ds278x_battery_probe() local
403 info = kzalloc(sizeof(*info), GFP_KERNEL); in ds278x_battery_probe()
404 if (!info) { in ds278x_battery_probe()
409 info->battery_desc.name = kasprintf(GFP_KERNEL, "%s-%d", in ds278x_battery_probe()
411 if (!info->battery_desc.name) { in ds278x_battery_probe()
417 info->rsns = pdata->rsns; in ds278x_battery_probe()
419 i2c_set_clientdata(client, info); in ds278x_battery_probe()
420 info->client = client; in ds278x_battery_probe()
421 info->id = num; in ds278x_battery_probe()
422 info->ops = &ds278x_ops[id->driver_data]; in ds278x_battery_probe()
423 ds278x_power_supply_init(&info->battery_desc); in ds278x_battery_probe()
424 psy_cfg.drv_data = info; in ds278x_battery_probe()
426 info->capacity = 100; in ds278x_battery_probe()
427 info->status = POWER_SUPPLY_STATUS_FULL; in ds278x_battery_probe()
429 INIT_DELAYED_WORK(&info->bat_work, ds278x_bat_work); in ds278x_battery_probe()
431 info->battery = power_supply_register(&client->dev, in ds278x_battery_probe()
432 &info->battery_desc, &psy_cfg); in ds278x_battery_probe()
433 if (IS_ERR(info->battery)) { in ds278x_battery_probe()
435 ret = PTR_ERR(info->battery); in ds278x_battery_probe()
438 schedule_delayed_work(&info->bat_work, DS278x_DELAY); in ds278x_battery_probe()
444 kfree(info->battery_desc.name); in ds278x_battery_probe()
446 kfree(info); in ds278x_battery_probe()