Lines Matching full:bat

419 static int hidinput_scale_battery_capacity(struct hid_battery *bat,  in hidinput_scale_battery_capacity()  argument
422 if (bat->min < bat->max && in hidinput_scale_battery_capacity()
423 value >= bat->min && value <= bat->max) in hidinput_scale_battery_capacity()
424 value = ((value - bat->min) * 100) / in hidinput_scale_battery_capacity()
425 (bat->max - bat->min); in hidinput_scale_battery_capacity()
430 static int hidinput_query_battery_capacity(struct hid_battery *bat) in hidinput_query_battery_capacity() argument
438 ret = hid_hw_raw_request(bat->dev, bat->report_id, buf, 4, in hidinput_query_battery_capacity()
439 bat->report_type, HID_REQ_GET_REPORT); in hidinput_query_battery_capacity()
443 return hidinput_scale_battery_capacity(bat, buf[1]); in hidinput_query_battery_capacity()
450 struct hid_battery *bat = power_supply_get_drvdata(psy); in hidinput_get_battery_property() local
451 struct hid_device *dev = bat->dev; in hidinput_get_battery_property()
461 val->intval = bat->present; in hidinput_get_battery_property()
465 if (bat->status != HID_BATTERY_REPORTED && in hidinput_get_battery_property()
466 !bat->avoid_query) { in hidinput_get_battery_property()
467 value = hidinput_query_battery_capacity(bat); in hidinput_get_battery_property()
471 value = bat->capacity; in hidinput_get_battery_property()
482 if (bat->status != HID_BATTERY_REPORTED && in hidinput_get_battery_property()
483 !bat->avoid_query) { in hidinput_get_battery_property()
484 value = hidinput_query_battery_capacity(bat); in hidinput_get_battery_property()
488 bat->capacity = value; in hidinput_get_battery_property()
489 bat->status = HID_BATTERY_QUERIED; in hidinput_get_battery_property()
492 if (bat->status == HID_BATTERY_UNKNOWN) in hidinput_get_battery_property()
495 val->intval = bat->charge_status; in hidinput_get_battery_property()
513 struct hid_battery *bat; in hidinput_find_battery() local
515 list_for_each_entry(bat, &dev->batteries, list) { in hidinput_find_battery()
516 if (bat->report_id == report_id) in hidinput_find_battery()
517 return bat; in hidinput_find_battery()
525 struct hid_battery *bat; in hidinput_setup_battery() local
545 bat = devm_kzalloc(&dev->dev, sizeof(*bat), GFP_KERNEL); in hidinput_setup_battery()
546 if (!bat) in hidinput_setup_battery()
582 bat->dev = dev; in hidinput_setup_battery()
583 bat->min = min; in hidinput_setup_battery()
584 bat->max = max; in hidinput_setup_battery()
585 bat->report_type = report_type; in hidinput_setup_battery()
586 bat->report_id = field->report->id; in hidinput_setup_battery()
587 bat->charge_status = POWER_SUPPLY_STATUS_DISCHARGING; in hidinput_setup_battery()
588 bat->status = HID_BATTERY_UNKNOWN; in hidinput_setup_battery()
595 bat->avoid_query = report_type == HID_INPUT_REPORT && in hidinput_setup_battery()
599 bat->avoid_query = true; in hidinput_setup_battery()
601 bat->present = (quirks & HID_BATTERY_QUIRK_DYNAMIC) ? false : true; in hidinput_setup_battery()
603 psy_cfg.drv_data = bat; in hidinput_setup_battery()
604 bat->ps = devm_power_supply_register(&dev->dev, psy_desc, &psy_cfg); in hidinput_setup_battery()
605 if (IS_ERR(bat->ps)) { in hidinput_setup_battery()
606 error = PTR_ERR(bat->ps); in hidinput_setup_battery()
611 power_supply_powers(bat->ps, &dev->dev); in hidinput_setup_battery()
612 list_add_tail(&bat->list, &dev->batteries); in hidinput_setup_battery()
620 devm_kfree(&dev->dev, bat); in hidinput_setup_battery()
624 static bool hidinput_update_battery_charge_status(struct hid_battery *bat, in hidinput_update_battery_charge_status() argument
629 bat->charge_status = value ? in hidinput_update_battery_charge_status()
641 struct hid_battery *bat; in hidinput_update_battery() local
644 bat = hidinput_find_battery(dev, report_id); in hidinput_update_battery()
645 if (!bat) in hidinput_update_battery()
648 if (hidinput_update_battery_charge_status(bat, usage, value)) { in hidinput_update_battery()
649 bat->present = true; in hidinput_update_battery()
650 power_supply_changed(bat->ps); in hidinput_update_battery()
657 if (value < bat->min || value > bat->max) in hidinput_update_battery()
660 capacity = hidinput_scale_battery_capacity(bat, value); in hidinput_update_battery()
662 if (bat->status != HID_BATTERY_REPORTED || in hidinput_update_battery()
663 capacity != bat->capacity || in hidinput_update_battery()
664 ktime_after(ktime_get_coarse(), bat->ratelimit_time)) { in hidinput_update_battery()
665 bat->present = true; in hidinput_update_battery()
666 bat->capacity = capacity; in hidinput_update_battery()
667 bat->status = HID_BATTERY_REPORTED; in hidinput_update_battery()
668 bat->ratelimit_time = in hidinput_update_battery()
670 power_supply_changed(bat->ps); in hidinput_update_battery()