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 = power_supply_get_drvdata(psy); in pmic_usb_get_property() local
410 pmic_battery_read_status(pbi); in pmic_usb_get_property()
414 val->intval = pbi->usb_is_present; in pmic_usb_get_property()
417 val->intval = pbi->usb_health; in pmic_usb_get_property()
446 struct pmic_power_module_info *pbi = power_supply_get_drvdata(psy); in pmic_battery_get_property() local
449 pmic_battery_read_status(pbi); in pmic_battery_get_property()
453 val->intval = pbi->batt_status; in pmic_battery_get_property()
456 val->intval = pbi->batt_health; in pmic_battery_get_property()
459 val->intval = pbi->batt_is_present; in pmic_battery_get_property()
462 val->intval = mAStouAh(pbi->batt_charge_now); in pmic_battery_get_property()
465 val->intval = mAStouAh(pbi->batt_prev_charge_full); in pmic_battery_get_property()
484 struct pmic_power_module_info *pbi = container_of(work, in pmic_battery_monitor() local
488 pmic_battery_read_status(pbi); in pmic_battery_monitor()
489 queue_delayed_work(pbi->monitor_wqueue, &pbi->monitor_battery, HZ * 10); in pmic_battery_monitor()
501 static int pmic_battery_set_charger(struct pmic_power_module_info *pbi, in pmic_battery_set_charger() argument
515 dev_warn(pbi->dev, "%s(): out of range usb charger " in pmic_battery_set_charger()
521 dev_warn(pbi->dev, "%s(): ipc pmic read failed\n", in pmic_battery_set_charger()
539 struct pmic_power_module_info *pbi = dev; in pmic_battery_interrupt_handler() local
541 schedule_work(&pbi->handler); in pmic_battery_interrupt_handler()
558 struct pmic_power_module_info *pbi = container_of(work, in pmic_battery_handle_intrpt() local
564 dev_warn(pbi->dev, "%s(): ipc pmic read failed\n", in pmic_battery_handle_intrpt()
570 pbi->batt_is_present = PMIC_BATT_PRESENT; in pmic_battery_handle_intrpt()
572 pbi->batt_is_present = PMIC_BATT_NOT_PRESENT; in pmic_battery_handle_intrpt()
573 pbi->batt_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
574 pbi->batt_status = POWER_SUPPLY_STATUS_UNKNOWN; in pmic_battery_handle_intrpt()
579 pbi->batt_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
580 pbi->batt_status = POWER_SUPPLY_STATUS_NOT_CHARGING; in pmic_battery_handle_intrpt()
581 pbi->usb_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
585 pbi->batt_health = POWER_SUPPLY_HEALTH_GOOD; in pmic_battery_handle_intrpt()
586 pbi->usb_health = POWER_SUPPLY_HEALTH_GOOD; in pmic_battery_handle_intrpt()
591 pbi->batt_status = POWER_SUPPLY_STATUS_FULL; in pmic_battery_handle_intrpt()
594 dev_warn(pbi->dev, "%s(): ipc config cmd " in pmic_battery_handle_intrpt()
598 pbi->batt_prev_charge_full = ccval & in pmic_battery_handle_intrpt()
604 pbi->usb_is_present = PMIC_USB_PRESENT; in pmic_battery_handle_intrpt()
606 pbi->usb_is_present = PMIC_USB_NOT_PRESENT; in pmic_battery_handle_intrpt()
607 pbi->usb_health = POWER_SUPPLY_HEALTH_UNKNOWN; in pmic_battery_handle_intrpt()
617 dev_warn(pbi->dev, in pmic_battery_handle_intrpt()
630 if (pmic_battery_set_charger(pbi, chrg)) { in pmic_battery_handle_intrpt()
631 dev_warn(pbi->dev, in pmic_battery_handle_intrpt()
636 dev_dbg(pbi->dev, in pmic_battery_handle_intrpt()
672 struct pmic_power_module_info *pbi; in probe() local
677 pbi = kzalloc(sizeof(*pbi), GFP_KERNEL); in probe()
678 if (!pbi) { in probe()
684 pbi->dev = dev; in probe()
685 pbi->irq = irq; in probe()
686 dev_set_drvdata(dev, pbi); in probe()
687 psy_cfg.drv_data = pbi; in probe()
690 INIT_WORK(&pbi->handler, pmic_battery_handle_intrpt); in probe()
691 INIT_DELAYED_WORK(&pbi->monitor_battery, pmic_battery_monitor); in probe()
692 pbi->monitor_wqueue = in probe()
694 if (!pbi->monitor_wqueue) { in probe()
701 retval = request_irq(pbi->irq, pmic_battery_interrupt_handler, in probe()
702 0, DRIVER_NAME, pbi); in probe()
709 pbi->batt = power_supply_register(dev, &pmic_usb_desc, &psy_cfg); in probe()
710 if (IS_ERR(pbi->batt)) { in probe()
714 retval = PTR_ERR(pbi->batt); in probe()
722 queue_delayed_work(pbi->monitor_wqueue, &pbi->monitor_battery, HZ * 1); in probe()
725 pbi->usb = power_supply_register(dev, &pmic_batt_desc, &psy_cfg); in probe()
726 if (IS_ERR(pbi->usb)) { in probe()
730 retval = PTR_ERR(pbi->usb); in probe()
742 power_supply_unregister(pbi->batt); in probe()
744 cancel_delayed_work_sync(&pbi->monitor_battery); in probe()
746 destroy_workqueue(pbi->monitor_wqueue); in probe()
748 kfree(pbi); in probe()
770 struct pmic_power_module_info *pbi = platform_get_drvdata(pdev); in platform_pmic_battery_remove() local
772 free_irq(pbi->irq, pbi); in platform_pmic_battery_remove()
773 cancel_delayed_work_sync(&pbi->monitor_battery); in platform_pmic_battery_remove()
774 destroy_workqueue(pbi->monitor_wqueue); in platform_pmic_battery_remove()
776 power_supply_unregister(pbi->usb); in platform_pmic_battery_remove()
777 power_supply_unregister(pbi->batt); in platform_pmic_battery_remove()
779 cancel_work_sync(&pbi->handler); in platform_pmic_battery_remove()
780 kfree(pbi); in platform_pmic_battery_remove()