Lines Matching defs:bat

421 static int hidinput_scale_battery_capacity(struct hid_battery *bat,
424 if (bat->min < bat->max &&
425 value >= bat->min && value <= bat->max)
426 value = ((value - bat->min) * 100) /
427 (bat->max - bat->min);
432 static int hidinput_query_battery_capacity(struct hid_battery *bat)
440 ret = hid_hw_raw_request(bat->dev, bat->report_id, buf, 4,
441 bat->report_type, HID_REQ_GET_REPORT);
445 return hidinput_scale_battery_capacity(bat, buf[1]);
452 struct hid_battery *bat = power_supply_get_drvdata(psy);
453 struct hid_device *dev = bat->dev;
463 val->intval = bat->present;
467 if (bat->status != HID_BATTERY_REPORTED &&
468 !bat->avoid_query) {
469 value = hidinput_query_battery_capacity(bat);
473 value = bat->capacity;
484 if (bat->status != HID_BATTERY_REPORTED &&
485 !bat->avoid_query) {
486 value = hidinput_query_battery_capacity(bat);
490 bat->capacity = value;
491 bat->status = HID_BATTERY_QUERIED;
494 if (bat->status == HID_BATTERY_UNKNOWN)
497 val->intval = bat->charge_status;
515 struct hid_battery *bat;
517 list_for_each_entry(bat, &dev->batteries, list) {
518 if (bat->report_id == report_id)
519 return bat;
526 struct hid_battery *bat = res;
528 list_del(&bat->list);
534 struct hid_battery *bat;
554 bat = devm_kzalloc(&dev->dev, sizeof(*bat), GFP_KERNEL);
555 if (!bat)
591 bat->dev = dev;
592 bat->min = min;
593 bat->max = max;
594 bat->report_type = report_type;
595 bat->report_id = field->report->id;
596 bat->charge_status = POWER_SUPPLY_STATUS_DISCHARGING;
597 bat->status = HID_BATTERY_UNKNOWN;
604 bat->avoid_query = report_type == HID_INPUT_REPORT &&
608 bat->avoid_query = true;
610 bat->present = (quirks & HID_BATTERY_QUIRK_DYNAMIC) ? false : true;
612 psy_cfg.drv_data = bat;
613 bat->ps = devm_power_supply_register(&dev->dev, psy_desc, &psy_cfg);
614 if (IS_ERR(bat->ps)) {
615 error = PTR_ERR(bat->ps);
620 power_supply_powers(bat->ps, &dev->dev);
621 list_add_tail(&bat->list, &dev->batteries);
624 hidinput_cleanup_battery, bat);
635 devm_kfree(&dev->dev, bat);
639 static bool hidinput_update_battery_charge_status(struct hid_battery *bat,
644 bat->charge_status = value ?
656 struct hid_battery *bat;
659 bat = hidinput_find_battery(dev, report_id);
660 if (!bat)
663 if (hidinput_update_battery_charge_status(bat, usage, value)) {
664 bat->present = true;
665 power_supply_changed(bat->ps);
672 if (value < bat->min || value > bat->max)
675 capacity = hidinput_scale_battery_capacity(bat, value);
677 if (bat->status != HID_BATTERY_REPORTED ||
678 capacity != bat->capacity ||
679 ktime_after(ktime_get_coarse(), bat->ratelimit_time)) {
680 bat->present = true;
681 bat->capacity = capacity;
682 bat->status = HID_BATTERY_REPORTED;
683 bat->ratelimit_time =
685 power_supply_changed(bat->ps);