Lines Matching refs:pbi

254 static void pmic_battery_read_status(struct pmic_power_module_info *pbi)  in pmic_battery_read_status()  argument
266 if (pbi->update_time && time_before(jiffies, pbi->update_time + in pmic_battery_read_status()
270 update_time_intrvl = jiffies_to_msecs(jiffies - pbi->update_time); in pmic_battery_read_status()
271 pbi->update_time = jiffies; in pmic_battery_read_status()
275 dev_warn(pbi->dev, "%s(): ipc config cmd failed\n", in pmic_battery_read_status()
281 dev_warn(pbi->dev, "%s(): ipc pmic read failed\n", in pmic_battery_read_status()
293 pbi->batt_is_present = PMIC_BATT_PRESENT; in pmic_battery_read_status()
296 pbi->batt_is_present = PMIC_BATT_NOT_PRESENT; in pmic_battery_read_status()
297 pbi->batt_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_read_status()
298 pbi->batt_status = POWER_SUPPLY_STATUS_UNKNOWN; in pmic_battery_read_status()
304 pbi->batt_health = POWER_SUPPLY_HEALTH_OVERVOLTAGE; in pmic_battery_read_status()
305 pbi->batt_status = POWER_SUPPLY_STATUS_NOT_CHARGING; in pmic_battery_read_status()
309 pbi->batt_health = POWER_SUPPLY_HEALTH_OVERHEAT; in pmic_battery_read_status()
310 pbi->batt_status = POWER_SUPPLY_STATUS_NOT_CHARGING; in pmic_battery_read_status()
314 pbi->batt_health = POWER_SUPPLY_HEALTH_GOOD; in pmic_battery_read_status()
324 pbi->usb_is_present = PMIC_USB_PRESENT; in pmic_battery_read_status()
327 pbi->usb_is_present = PMIC_USB_NOT_PRESENT; in pmic_battery_read_status()
328 pbi->usb_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_read_status()
333 pbi->usb_health = POWER_SUPPLY_HEALTH_OVERVOLTAGE; in pmic_battery_read_status()
336 pbi->usb_health = POWER_SUPPLY_HEALTH_GOOD; in pmic_battery_read_status()
343 if (!pbi->is_dev_info_updated) { in pmic_battery_read_status()
345 dev_warn(pbi->dev, "%s(): ipc config cmd failed\n", in pmic_battery_read_status()
349 pbi->batt_prev_charge_full = batt_prop.capacity; in pmic_battery_read_status()
355 pbi->batt_status = POWER_SUPPLY_STATUS_FULL; in pmic_battery_read_status()
356 pbi->batt_prev_charge_full = chrg_val; in pmic_battery_read_status()
358 pbi->batt_status = POWER_SUPPLY_STATUS_DISCHARGING; in pmic_battery_read_status()
360 pbi->batt_status = POWER_SUPPLY_STATUS_CHARGING; in pmic_battery_read_status()
365 if (pbi->is_dev_info_updated && batt_present && !batt_exception) { in pmic_battery_read_status()
366 if (pbi->batt_status == POWER_SUPPLY_STATUS_DISCHARGING) { in pmic_battery_read_status()
367 if (pbi->batt_charge_now - chrg_val) { in pmic_battery_read_status()
368 pbi->batt_charge_rate = ((pbi->batt_charge_now - in pmic_battery_read_status()
372 } else if (pbi->batt_status == POWER_SUPPLY_STATUS_CHARGING) { in pmic_battery_read_status()
373 if (chrg_val - pbi->batt_charge_now) { in pmic_battery_read_status()
374 pbi->batt_charge_rate = ((chrg_val - in pmic_battery_read_status()
375 pbi->batt_charge_now) * 1000 * 60) / in pmic_battery_read_status()
379 pbi->batt_charge_rate = 0; in pmic_battery_read_status()
381 pbi->batt_charge_rate = -1; in pmic_battery_read_status()
386 pbi->batt_charge_now = chrg_val; in pmic_battery_read_status()
388 pbi->batt_charge_now = -1; in pmic_battery_read_status()
390 pbi->is_dev_info_updated = PMIC_BATT_DRV_INFO_UPDATED; in pmic_battery_read_status()
407 struct pmic_power_module_info *pbi = container_of(psy, in pmic_usb_get_property() local
411 pmic_battery_read_status(pbi); in pmic_usb_get_property()
415 val->intval = pbi->usb_is_present; in pmic_usb_get_property()
418 val->intval = pbi->usb_health; in pmic_usb_get_property()
447 struct pmic_power_module_info *pbi = container_of(psy, in pmic_battery_get_property() local
451 pmic_battery_read_status(pbi); in pmic_battery_get_property()
455 val->intval = pbi->batt_status; in pmic_battery_get_property()
458 val->intval = pbi->batt_health; in pmic_battery_get_property()
461 val->intval = pbi->batt_is_present; in pmic_battery_get_property()
464 val->intval = mAStouAh(pbi->batt_charge_now); in pmic_battery_get_property()
467 val->intval = mAStouAh(pbi->batt_prev_charge_full); in pmic_battery_get_property()
486 struct pmic_power_module_info *pbi = container_of(work, in pmic_battery_monitor() local
490 pmic_battery_read_status(pbi); in pmic_battery_monitor()
491 queue_delayed_work(pbi->monitor_wqueue, &pbi->monitor_battery, HZ * 10); in pmic_battery_monitor()
503 static int pmic_battery_set_charger(struct pmic_power_module_info *pbi, in pmic_battery_set_charger() argument
517 dev_warn(pbi->dev, "%s(): out of range usb charger " in pmic_battery_set_charger()
523 dev_warn(pbi->dev, "%s(): ipc pmic read failed\n", in pmic_battery_set_charger()
541 struct pmic_power_module_info *pbi = dev; in pmic_battery_interrupt_handler() local
543 schedule_work(&pbi->handler); in pmic_battery_interrupt_handler()
560 struct pmic_power_module_info *pbi = container_of(work, in pmic_battery_handle_intrpt() local
566 dev_warn(pbi->dev, "%s(): ipc pmic read failed\n", in pmic_battery_handle_intrpt()
572 pbi->batt_is_present = PMIC_BATT_PRESENT; in pmic_battery_handle_intrpt()
574 pbi->batt_is_present = PMIC_BATT_NOT_PRESENT; in pmic_battery_handle_intrpt()
575 pbi->batt_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
576 pbi->batt_status = POWER_SUPPLY_STATUS_UNKNOWN; in pmic_battery_handle_intrpt()
581 pbi->batt_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
582 pbi->batt_status = POWER_SUPPLY_STATUS_NOT_CHARGING; in pmic_battery_handle_intrpt()
583 pbi->usb_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
587 pbi->batt_health = POWER_SUPPLY_HEALTH_GOOD; in pmic_battery_handle_intrpt()
588 pbi->usb_health = POWER_SUPPLY_HEALTH_GOOD; in pmic_battery_handle_intrpt()
593 pbi->batt_status = POWER_SUPPLY_STATUS_FULL; in pmic_battery_handle_intrpt()
596 dev_warn(pbi->dev, "%s(): ipc config cmd " in pmic_battery_handle_intrpt()
600 pbi->batt_prev_charge_full = ccval & in pmic_battery_handle_intrpt()
606 pbi->usb_is_present = PMIC_USB_PRESENT; in pmic_battery_handle_intrpt()
608 pbi->usb_is_present = PMIC_USB_NOT_PRESENT; in pmic_battery_handle_intrpt()
609 pbi->usb_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
619 dev_warn(pbi->dev, in pmic_battery_handle_intrpt()
632 if (pmic_battery_set_charger(pbi, chrg)) { in pmic_battery_handle_intrpt()
633 dev_warn(pbi->dev, in pmic_battery_handle_intrpt()
638 dev_dbg(pbi->dev, in pmic_battery_handle_intrpt()
655 struct pmic_power_module_info *pbi; in probe() local
659 pbi = kzalloc(sizeof(*pbi), GFP_KERNEL); in probe()
660 if (!pbi) { in probe()
666 pbi->dev = dev; in probe()
667 pbi->irq = irq; in probe()
668 dev_set_drvdata(dev, pbi); in probe()
671 INIT_WORK(&pbi->handler, pmic_battery_handle_intrpt); in probe()
672 INIT_DELAYED_WORK(&pbi->monitor_battery, pmic_battery_monitor); in probe()
673 pbi->monitor_wqueue = in probe()
675 if (!pbi->monitor_wqueue) { in probe()
682 retval = request_irq(pbi->irq, pmic_battery_interrupt_handler, in probe()
683 0, DRIVER_NAME, pbi); in probe()
690 pbi->batt.name = "pmic-batt"; in probe()
691 pbi->batt.type = POWER_SUPPLY_TYPE_BATTERY; in probe()
692 pbi->batt.properties = pmic_battery_props; in probe()
693 pbi->batt.num_properties = ARRAY_SIZE(pmic_battery_props); in probe()
694 pbi->batt.get_property = pmic_battery_get_property; in probe()
695 retval = power_supply_register(dev, &pbi->batt); in probe()
707 queue_delayed_work(pbi->monitor_wqueue, &pbi->monitor_battery, HZ * 1); in probe()
710 pbi->usb.name = "pmic-usb"; in probe()
711 pbi->usb.type = POWER_SUPPLY_TYPE_USB; in probe()
712 pbi->usb.properties = pmic_usb_props; in probe()
713 pbi->usb.num_properties = ARRAY_SIZE(pmic_usb_props); in probe()
714 pbi->usb.get_property = pmic_usb_get_property; in probe()
715 retval = power_supply_register(dev, &pbi->usb); in probe()
731 power_supply_unregister(&pbi->batt); in probe()
733 cancel_delayed_work_sync(&pbi->monitor_battery); in probe()
735 destroy_workqueue(pbi->monitor_wqueue); in probe()
737 kfree(pbi); in probe()
759 struct pmic_power_module_info *pbi = dev_get_drvdata(&pdev->dev); in platform_pmic_battery_remove() local
761 free_irq(pbi->irq, pbi); in platform_pmic_battery_remove()
762 cancel_delayed_work_sync(&pbi->monitor_battery); in platform_pmic_battery_remove()
763 destroy_workqueue(pbi->monitor_wqueue); in platform_pmic_battery_remove()
765 power_supply_unregister(&pbi->usb); in platform_pmic_battery_remove()
766 power_supply_unregister(&pbi->batt); in platform_pmic_battery_remove()
768 cancel_work_sync(&pbi->handler); in platform_pmic_battery_remove()
769 kfree(pbi); in platform_pmic_battery_remove()