Lines Matching refs:bat

189 static int da9052_read_chgend_current(struct da9052_battery *bat,  in da9052_read_chgend_current()  argument
194 if (bat->status == POWER_SUPPLY_STATUS_DISCHARGING) in da9052_read_chgend_current()
197 ret = da9052_reg_read(bat->da9052, DA9052_ICHG_END_REG); in da9052_read_chgend_current()
206 static int da9052_read_chg_current(struct da9052_battery *bat, int *current_mA) in da9052_read_chg_current() argument
210 if (bat->status == POWER_SUPPLY_STATUS_DISCHARGING) in da9052_read_chg_current()
213 ret = da9052_reg_read(bat->da9052, DA9052_ICHG_AV_REG); in da9052_read_chg_current()
222 static int da9052_bat_check_status(struct da9052_battery *bat, int *status) in da9052_bat_check_status() argument
237 ret = da9052_group_read(bat->da9052, DA9052_STATUS_A_REG, 2, v); in da9052_bat_check_status()
253 bat->charger_type = DA9052_CHARGER; in da9052_bat_check_status()
259 ret = da9052_read_chg_current(bat, &chg_current); in da9052_bat_check_status()
262 ret = da9052_read_chgend_current(bat, &chg_end_current); in da9052_bat_check_status()
267 bat->status = POWER_SUPPLY_STATUS_CHARGING; in da9052_bat_check_status()
269 bat->status = POWER_SUPPLY_STATUS_NOT_CHARGING; in da9052_bat_check_status()
274 bat->status = POWER_SUPPLY_STATUS_CHARGING; in da9052_bat_check_status()
277 bat->charger_type = DA9052_CHARGER; in da9052_bat_check_status()
278 bat->status = POWER_SUPPLY_STATUS_NOT_CHARGING; in da9052_bat_check_status()
280 bat->charger_type = DA9052_NOCHARGER; in da9052_bat_check_status()
281 bat->status = POWER_SUPPLY_STATUS_DISCHARGING; in da9052_bat_check_status()
285 *status = bat->status; in da9052_bat_check_status()
289 static int da9052_bat_read_volt(struct da9052_battery *bat, int *volt_mV) in da9052_bat_read_volt() argument
293 volt = da9052_adc_manual_read(bat->da9052, DA9052_ADC_MAN_MUXSEL_VBAT); in da9052_bat_read_volt()
302 static int da9052_bat_check_presence(struct da9052_battery *bat, int *illegal) in da9052_bat_check_presence() argument
306 bat_temp = da9052_adc_read_temp(bat->da9052); in da9052_bat_check_presence()
357 static int da9052_bat_read_capacity(struct da9052_battery *bat, int *capacity) in da9052_bat_read_capacity() argument
370 ret = da9052_bat_read_volt(bat, &bat_voltage); in da9052_bat_read_capacity()
374 adc_temp = da9052_adc_read_temp(bat->da9052); in da9052_bat_read_capacity()
410 static int da9052_bat_check_health(struct da9052_battery *bat, int *health) in da9052_bat_check_health() argument
416 ret = da9052_bat_check_presence(bat, &bat_illegal); in da9052_bat_check_health()
421 bat->health = POWER_SUPPLY_HEALTH_UNKNOWN; in da9052_bat_check_health()
425 if (bat->health != POWER_SUPPLY_HEALTH_OVERHEAT) { in da9052_bat_check_health()
426 ret = da9052_bat_read_capacity(bat, &capacity); in da9052_bat_check_health()
430 bat->health = POWER_SUPPLY_HEALTH_DEAD; in da9052_bat_check_health()
432 bat->health = POWER_SUPPLY_HEALTH_GOOD; in da9052_bat_check_health()
435 *health = bat->health; in da9052_bat_check_health()
442 struct da9052_battery *bat = data; in da9052_bat_irq() local
445 virq = regmap_irq_get_virq(bat->da9052->irq_data, irq); in da9052_bat_irq()
449 bat->status = POWER_SUPPLY_STATUS_FULL; in da9052_bat_irq()
451 da9052_bat_check_status(bat, NULL); in da9052_bat_irq()
455 power_supply_changed(bat->psy); in da9052_bat_irq()
468 struct da9052_battery *bat = container_of(nb, struct da9052_battery, in da9052_USB_current_notifier() local
471 if (bat->status == POWER_SUPPLY_STATUS_DISCHARGING) in da9052_USB_current_notifier()
474 ret = da9052_reg_read(bat->da9052, DA9052_CHGBUCK_REG); in da9052_USB_current_notifier()
478 if (bat->da9052->chip_id == DA9052) in da9052_USB_current_notifier()
492 return da9052_reg_update(bat->da9052, DA9052_ISET_REG, in da9052_USB_current_notifier()
502 struct da9052_battery *bat = power_supply_get_drvdata(psy); in da9052_bat_get_property() local
504 ret = da9052_bat_check_presence(bat, &illegal); in da9052_bat_get_property()
513 ret = da9052_bat_check_status(bat, &val->intval); in da9052_bat_get_property()
517 (bat->charger_type == DA9052_NOCHARGER) ? 0 : 1; in da9052_bat_get_property()
520 ret = da9052_bat_check_presence(bat, &val->intval); in da9052_bat_get_property()
523 ret = da9052_bat_check_health(bat, &val->intval); in da9052_bat_get_property()
529 ret = da9052_bat_read_volt(bat, &val->intval); in da9052_bat_get_property()
532 ret = da9052_read_chg_current(bat, &val->intval); in da9052_bat_get_property()
535 ret = da9052_bat_read_capacity(bat, &val->intval); in da9052_bat_get_property()
538 val->intval = da9052_adc_read_temp(bat->da9052); in da9052_bat_get_property()
592 struct da9052_battery *bat; in da9052_bat_probe() local
597 bat = devm_kzalloc(&pdev->dev, sizeof(struct da9052_battery), in da9052_bat_probe()
599 if (!bat) in da9052_bat_probe()
602 psy_cfg.drv_data = bat; in da9052_bat_probe()
604 bat->da9052 = dev_get_drvdata(pdev->dev.parent); in da9052_bat_probe()
605 bat->charger_type = DA9052_NOCHARGER; in da9052_bat_probe()
606 bat->status = POWER_SUPPLY_STATUS_UNKNOWN; in da9052_bat_probe()
607 bat->health = POWER_SUPPLY_HEALTH_UNKNOWN; in da9052_bat_probe()
608 bat->nb.notifier_call = da9052_USB_current_notifier; in da9052_bat_probe()
610 pdata = bat->da9052->dev->platform_data; in da9052_bat_probe()
617 ret = da9052_request_irq(bat->da9052, in da9052_bat_probe()
619 da9052_bat_irq, bat); in da9052_bat_probe()
622 dev_err(bat->da9052->dev, in da9052_bat_probe()
629 bat->psy = power_supply_register(&pdev->dev, &psy_desc, &psy_cfg); in da9052_bat_probe()
630 if (IS_ERR(bat->psy)) { in da9052_bat_probe()
631 ret = PTR_ERR(bat->psy); in da9052_bat_probe()
635 platform_set_drvdata(pdev, bat); in da9052_bat_probe()
640 da9052_free_irq(bat->da9052, da9052_bat_irq_bits[i], bat); in da9052_bat_probe()
647 struct da9052_battery *bat = platform_get_drvdata(pdev); in da9052_bat_remove() local
650 da9052_free_irq(bat->da9052, da9052_bat_irq_bits[i], bat); in da9052_bat_remove()
652 power_supply_unregister(bat->psy); in da9052_bat_remove()