Lines Matching refs:battery

108 	struct acpi_battery battery[MAX_SBS_BAT];  member
118 static int acpi_battery_get_state(struct acpi_battery *battery);
128 static inline int acpi_battery_vscale(struct acpi_battery *battery) in acpi_battery_vscale() argument
130 return battery_scale((battery->spec & 0x0f00) >> 8); in acpi_battery_vscale()
133 static inline int acpi_battery_ipscale(struct acpi_battery *battery) in acpi_battery_ipscale() argument
135 return battery_scale((battery->spec & 0xf000) >> 12); in acpi_battery_ipscale()
138 static inline int acpi_battery_mode(struct acpi_battery *battery) in acpi_battery_mode() argument
140 return (battery->mode & 0x8000); in acpi_battery_mode()
143 static inline int acpi_battery_scale(struct acpi_battery *battery) in acpi_battery_scale() argument
145 return (acpi_battery_mode(battery) ? 10 : 1) * in acpi_battery_scale()
146 acpi_battery_ipscale(battery); in acpi_battery_scale()
164 static int acpi_battery_technology(struct acpi_battery *battery) in acpi_battery_technology() argument
166 if (!strcasecmp("NiCd", battery->device_chemistry)) in acpi_battery_technology()
168 if (!strcasecmp("NiMH", battery->device_chemistry)) in acpi_battery_technology()
170 if (!strcasecmp("LION", battery->device_chemistry)) in acpi_battery_technology()
172 if (!strcasecmp("LiP", battery->device_chemistry)) in acpi_battery_technology()
181 struct acpi_battery *battery = to_acpi_battery(psy); in acpi_sbs_battery_get_property() local
183 if ((!battery->present) && psp != POWER_SUPPLY_PROP_PRESENT) in acpi_sbs_battery_get_property()
186 acpi_battery_get_state(battery); in acpi_sbs_battery_get_property()
189 if (battery->rate_now < 0) in acpi_sbs_battery_get_property()
191 else if (battery->rate_now > 0) in acpi_sbs_battery_get_property()
197 val->intval = battery->present; in acpi_sbs_battery_get_property()
200 val->intval = acpi_battery_technology(battery); in acpi_sbs_battery_get_property()
203 val->intval = battery->cycle_count; in acpi_sbs_battery_get_property()
206 val->intval = battery->design_voltage * in acpi_sbs_battery_get_property()
207 acpi_battery_vscale(battery) * 1000; in acpi_sbs_battery_get_property()
210 val->intval = battery->voltage_now * in acpi_sbs_battery_get_property()
211 acpi_battery_vscale(battery) * 1000; in acpi_sbs_battery_get_property()
215 val->intval = abs(battery->rate_now) * in acpi_sbs_battery_get_property()
216 acpi_battery_ipscale(battery) * 1000; in acpi_sbs_battery_get_property()
217 val->intval *= (acpi_battery_mode(battery)) ? in acpi_sbs_battery_get_property()
218 (battery->voltage_now * in acpi_sbs_battery_get_property()
219 acpi_battery_vscale(battery) / 1000) : 1; in acpi_sbs_battery_get_property()
223 val->intval = abs(battery->rate_avg) * in acpi_sbs_battery_get_property()
224 acpi_battery_ipscale(battery) * 1000; in acpi_sbs_battery_get_property()
225 val->intval *= (acpi_battery_mode(battery)) ? in acpi_sbs_battery_get_property()
226 (battery->voltage_now * in acpi_sbs_battery_get_property()
227 acpi_battery_vscale(battery) / 1000) : 1; in acpi_sbs_battery_get_property()
230 val->intval = battery->state_of_charge; in acpi_sbs_battery_get_property()
234 val->intval = battery->design_capacity * in acpi_sbs_battery_get_property()
235 acpi_battery_scale(battery) * 1000; in acpi_sbs_battery_get_property()
239 val->intval = battery->full_charge_capacity * in acpi_sbs_battery_get_property()
240 acpi_battery_scale(battery) * 1000; in acpi_sbs_battery_get_property()
244 val->intval = battery->capacity_now * in acpi_sbs_battery_get_property()
245 acpi_battery_scale(battery) * 1000; in acpi_sbs_battery_get_property()
248 val->intval = battery->temp_now - 2730; // dK -> dC in acpi_sbs_battery_get_property()
251 val->strval = battery->device_name; in acpi_sbs_battery_get_property()
254 val->strval = battery->manufacturer_name; in acpi_sbs_battery_get_property()
357 static int acpi_battery_get_info(struct acpi_battery *battery) in acpi_battery_get_info() argument
362 result = acpi_smbus_read(battery->sbs->hc, in acpi_battery_get_info()
366 (u8 *) battery + in acpi_battery_get_info()
374 static int acpi_battery_get_state(struct acpi_battery *battery) in acpi_battery_get_state() argument
378 if (battery->update_time && in acpi_battery_get_state()
379 time_before(jiffies, battery->update_time + in acpi_battery_get_state()
383 result = acpi_smbus_read(battery->sbs->hc, in acpi_battery_get_state()
387 (u8 *)battery + in acpi_battery_get_state()
393 battery->update_time = jiffies; in acpi_battery_get_state()
397 static int acpi_battery_get_alarm(struct acpi_battery *battery) in acpi_battery_get_alarm() argument
399 return acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, in acpi_battery_get_alarm()
401 (u8 *)&battery->alarm_capacity); in acpi_battery_get_alarm()
404 static int acpi_battery_set_alarm(struct acpi_battery *battery) in acpi_battery_set_alarm() argument
406 struct acpi_sbs *sbs = battery->sbs; in acpi_battery_set_alarm()
407 u16 value, sel = 1 << (battery->id + 12); in acpi_battery_set_alarm()
428 0x01, (u8 *)&battery->alarm_capacity, 2); in acpi_battery_set_alarm()
459 struct acpi_battery *battery = to_acpi_battery(dev_get_drvdata(dev)); in acpi_battery_alarm_show() local
460 acpi_battery_get_alarm(battery); in acpi_battery_alarm_show()
461 return sprintf(buf, "%d\n", battery->alarm_capacity * in acpi_battery_alarm_show()
462 acpi_battery_scale(battery) * 1000); in acpi_battery_alarm_show()
470 struct acpi_battery *battery = to_acpi_battery(dev_get_drvdata(dev)); in acpi_battery_alarm_store() local
472 battery->alarm_capacity = x / in acpi_battery_alarm_store()
473 (1000 * acpi_battery_scale(battery)); in acpi_battery_alarm_store()
474 if (battery->present) in acpi_battery_alarm_store()
475 acpi_battery_set_alarm(battery); in acpi_battery_alarm_store()
488 static int acpi_battery_read(struct acpi_battery *battery) in acpi_battery_read() argument
490 int result = 0, saved_present = battery->present; in acpi_battery_read()
493 if (battery->sbs->manager_present) { in acpi_battery_read()
494 result = acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, in acpi_battery_read()
497 battery->present = state & (1 << battery->id); in acpi_battery_read()
499 state |= 1 << (battery->id + 12); in acpi_battery_read()
500 acpi_smbus_write(battery->sbs->hc, SMBUS_WRITE_WORD, in acpi_battery_read()
502 } else if (battery->id == 0) in acpi_battery_read()
503 battery->present = 1; in acpi_battery_read()
505 if (result || !battery->present) in acpi_battery_read()
508 if (saved_present != battery->present) { in acpi_battery_read()
509 battery->update_time = 0; in acpi_battery_read()
510 result = acpi_battery_get_info(battery); in acpi_battery_read()
512 battery->present = 0; in acpi_battery_read()
516 result = acpi_battery_get_state(battery); in acpi_battery_read()
518 battery->present = 0; in acpi_battery_read()
525 struct acpi_battery *battery = &sbs->battery[id]; in acpi_battery_add() local
526 struct power_supply_config psy_cfg = { .drv_data = battery, }; in acpi_battery_add()
529 battery->id = id; in acpi_battery_add()
530 battery->sbs = sbs; in acpi_battery_add()
531 result = acpi_battery_read(battery); in acpi_battery_add()
535 sprintf(battery->name, ACPI_BATTERY_DIR_NAME, id); in acpi_battery_add()
536 battery->bat_desc.name = battery->name; in acpi_battery_add()
537 battery->bat_desc.type = POWER_SUPPLY_TYPE_BATTERY; in acpi_battery_add()
538 if (!acpi_battery_mode(battery)) { in acpi_battery_add()
539 battery->bat_desc.properties = sbs_charge_battery_props; in acpi_battery_add()
540 battery->bat_desc.num_properties = in acpi_battery_add()
543 battery->bat_desc.properties = sbs_energy_battery_props; in acpi_battery_add()
544 battery->bat_desc.num_properties = in acpi_battery_add()
547 battery->bat_desc.get_property = acpi_sbs_battery_get_property; in acpi_battery_add()
548 battery->bat = power_supply_register(&sbs->device->dev, in acpi_battery_add()
549 &battery->bat_desc, &psy_cfg); in acpi_battery_add()
550 if (IS_ERR(battery->bat)) { in acpi_battery_add()
551 result = PTR_ERR(battery->bat); in acpi_battery_add()
552 battery->bat = NULL; in acpi_battery_add()
556 result = device_create_file(&battery->bat->dev, &alarm_attr); in acpi_battery_add()
559 battery->have_sysfs_alarm = 1; in acpi_battery_add()
563 battery->name, battery->present ? "present" : "absent"); in acpi_battery_add()
569 struct acpi_battery *battery = &sbs->battery[id]; in acpi_battery_remove() local
571 if (battery->bat) { in acpi_battery_remove()
572 if (battery->have_sysfs_alarm) in acpi_battery_remove()
573 device_remove_file(&battery->bat->dev, &alarm_attr); in acpi_battery_remove()
574 power_supply_unregister(battery->bat); in acpi_battery_remove()
625 bat = &sbs->battery[id]; in acpi_sbs_callback()