Lines Matching refs:pchg

133 static bool lp8788_is_charger_detected(struct lp8788_charger *pchg)  in lp8788_is_charger_detected()  argument
137 lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_is_charger_detected()
147 struct lp8788_charger *pchg = dev_get_drvdata(psy->dev.parent); in lp8788_charger_get_property() local
152 val->intval = lp8788_is_charger_detected(pchg); in lp8788_charger_get_property()
155 lp8788_read_byte(pchg->lp, LP8788_CHG_IDCIN, &read); in lp8788_charger_get_property()
166 static int lp8788_get_battery_status(struct lp8788_charger *pchg, in lp8788_get_battery_status() argument
173 ret = lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_get_battery_status()
199 static int lp8788_get_battery_health(struct lp8788_charger *pchg, in lp8788_get_battery_health() argument
205 ret = lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_get_battery_health()
219 static int lp8788_get_battery_present(struct lp8788_charger *pchg, in lp8788_get_battery_present() argument
225 ret = lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_get_battery_present()
233 static int lp8788_get_vbatt_adc(struct lp8788_charger *pchg, int *result) in lp8788_get_vbatt_adc() argument
235 struct iio_channel *channel = pchg->chan[LP8788_VBATT]; in lp8788_get_vbatt_adc()
243 static int lp8788_get_battery_voltage(struct lp8788_charger *pchg, in lp8788_get_battery_voltage() argument
246 return lp8788_get_vbatt_adc(pchg, &val->intval); in lp8788_get_battery_voltage()
249 static int lp8788_get_battery_capacity(struct lp8788_charger *pchg, in lp8788_get_battery_capacity() argument
252 struct lp8788 *lp = pchg->lp; in lp8788_get_battery_capacity()
253 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_get_battery_capacity()
276 ret = lp8788_get_vbatt_adc(pchg, &vbatt); in lp8788_get_battery_capacity()
287 static int lp8788_get_battery_temperature(struct lp8788_charger *pchg, in lp8788_get_battery_temperature() argument
290 struct iio_channel *channel = pchg->chan[LP8788_BATT_TEMP]; in lp8788_get_battery_temperature()
307 static int lp8788_get_battery_charging_current(struct lp8788_charger *pchg, in lp8788_get_battery_charging_current() argument
312 lp8788_read_byte(pchg->lp, LP8788_CHG_IBATT, &read); in lp8788_get_battery_charging_current()
320 static int lp8788_get_charging_termination_voltage(struct lp8788_charger *pchg, in lp8788_get_charging_termination_voltage() argument
325 lp8788_read_byte(pchg->lp, LP8788_CHG_VTERM, &read); in lp8788_get_charging_termination_voltage()
336 struct lp8788_charger *pchg = dev_get_drvdata(psy->dev.parent); in lp8788_battery_get_property() local
340 return lp8788_get_battery_status(pchg, val); in lp8788_battery_get_property()
342 return lp8788_get_battery_health(pchg, val); in lp8788_battery_get_property()
344 return lp8788_get_battery_present(pchg, val); in lp8788_battery_get_property()
346 return lp8788_get_battery_voltage(pchg, val); in lp8788_battery_get_property()
348 return lp8788_get_battery_capacity(pchg, val); in lp8788_battery_get_property()
350 return lp8788_get_battery_temperature(pchg, val); in lp8788_battery_get_property()
352 return lp8788_get_battery_charging_current(pchg, val); in lp8788_battery_get_property()
354 return lp8788_get_charging_termination_voltage(pchg, val); in lp8788_battery_get_property()
366 struct lp8788_charger *pchg) in lp8788_update_charger_params() argument
368 struct lp8788 *lp = pchg->lp; in lp8788_update_charger_params()
369 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_update_charger_params()
409 static void lp8788_psy_unregister(struct lp8788_charger *pchg) in lp8788_psy_unregister() argument
411 power_supply_unregister(pchg->battery); in lp8788_psy_unregister()
412 power_supply_unregister(pchg->charger); in lp8788_psy_unregister()
417 struct lp8788_charger *pchg = in lp8788_charger_event() local
419 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_charger_event()
420 enum lp8788_charger_event event = lp8788_is_charger_detected(pchg); in lp8788_charger_event()
422 pdata->charger_event(pchg->lp, event); in lp8788_charger_event()
425 static bool lp8788_find_irq_id(struct lp8788_charger *pchg, int virq, int *id) in lp8788_find_irq_id() argument
430 for (i = 0; i < pchg->num_irqs; i++) { in lp8788_find_irq_id()
431 if (pchg->irqs[i].virq == virq) { in lp8788_find_irq_id()
432 *id = pchg->irqs[i].which; in lp8788_find_irq_id()
443 struct lp8788_charger *pchg = ptr; in lp8788_charger_irq_thread() local
444 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_charger_irq_thread()
447 if (!lp8788_find_irq_id(pchg, virq, &id)) in lp8788_charger_irq_thread()
456 power_supply_changed(pchg->charger); in lp8788_charger_irq_thread()
457 power_supply_changed(pchg->battery); in lp8788_charger_irq_thread()
468 schedule_work(&pchg->charger_work); in lp8788_charger_irq_thread()
475 struct lp8788_charger *pchg, const char *name) in lp8788_set_irqs() argument
478 struct irq_domain *irqdm = pchg->lp->irqdm; in lp8788_set_irqs()
495 nr_irq = pchg->num_irqs; in lp8788_set_irqs()
498 pchg->irqs[nr_irq].virq = virq; in lp8788_set_irqs()
499 pchg->irqs[nr_irq].which = i; in lp8788_set_irqs()
500 pchg->num_irqs++; in lp8788_set_irqs()
504 IRQF_ONESHOT, name, pchg); in lp8788_set_irqs()
515 for (i = 0; i < pchg->num_irqs; i++) in lp8788_set_irqs()
516 free_irq(pchg->irqs[i].virq, pchg); in lp8788_set_irqs()
521 struct lp8788_charger *pchg) in lp8788_irq_register() argument
529 INIT_WORK(&pchg->charger_work, lp8788_charger_event); in lp8788_irq_register()
530 pchg->num_irqs = 0; in lp8788_irq_register()
533 ret = lp8788_set_irqs(pdev, pchg, name[i]); in lp8788_irq_register()
540 if (pchg->num_irqs > LP8788_MAX_CHG_IRQS) { in lp8788_irq_register()
542 pchg->num_irqs); in lp8788_irq_register()
551 struct lp8788_charger *pchg) in lp8788_irq_unregister() argument
556 for (i = 0; i < pchg->num_irqs; i++) { in lp8788_irq_unregister()
557 irq = pchg->irqs[i].virq; in lp8788_irq_unregister()
561 free_irq(irq, pchg); in lp8788_irq_unregister()
566 struct lp8788_charger *pchg) in lp8788_setup_adc_channel() argument
568 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_setup_adc_channel()
576 pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan; in lp8788_setup_adc_channel()
580 pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan; in lp8788_setup_adc_channel()
586 struct lp8788_charger *pchg = dev_get_drvdata(dev); in lp8788_show_charger_status() local
602 lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_show_charger_status()
611 struct lp8788_charger *pchg = dev_get_drvdata(dev); in lp8788_show_eoc_time() local
618 lp8788_read_byte(pchg->lp, LP8788_CHG_EOC, &val); in lp8788_show_eoc_time()
628 struct lp8788_charger *pchg = dev_get_drvdata(dev); in lp8788_show_eoc_level() local
639 lp8788_read_byte(pchg->lp, LP8788_CHG_EOC, &val); in lp8788_show_eoc_level()
662 struct lp8788_charger *pchg) in lp8788_psy_register() argument
670 pchg->charger = power_supply_register(&pdev->dev, in lp8788_psy_register()
673 if (IS_ERR(pchg->charger)) in lp8788_psy_register()
676 pchg->battery = power_supply_register(&pdev->dev, in lp8788_psy_register()
678 if (IS_ERR(pchg->battery)) { in lp8788_psy_register()
679 power_supply_unregister(pchg->charger); in lp8788_psy_register()
689 struct lp8788_charger *pchg; in lp8788_charger_probe() local
693 pchg = devm_kzalloc(dev, sizeof(struct lp8788_charger), GFP_KERNEL); in lp8788_charger_probe()
694 if (!pchg) in lp8788_charger_probe()
697 pchg->lp = lp; in lp8788_charger_probe()
698 pchg->pdata = lp->pdata ? lp->pdata->chg_pdata : NULL; in lp8788_charger_probe()
699 platform_set_drvdata(pdev, pchg); in lp8788_charger_probe()
701 ret = lp8788_update_charger_params(pdev, pchg); in lp8788_charger_probe()
705 lp8788_setup_adc_channel(&pdev->dev, pchg); in lp8788_charger_probe()
707 ret = lp8788_psy_register(pdev, pchg); in lp8788_charger_probe()
711 ret = lp8788_irq_register(pdev, pchg); in lp8788_charger_probe()
720 struct lp8788_charger *pchg = platform_get_drvdata(pdev); in lp8788_charger_remove() local
722 flush_work(&pchg->charger_work); in lp8788_charger_remove()
723 lp8788_irq_unregister(pdev, pchg); in lp8788_charger_remove()
724 lp8788_psy_unregister(pchg); in lp8788_charger_remove()