Lines Matching refs:pchg

137 static bool lp8788_is_charger_detected(struct lp8788_charger *pchg)  in lp8788_is_charger_detected()  argument
141 lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_is_charger_detected()
151 struct lp8788_charger *pchg = dev_get_drvdata(psy->dev.parent); in lp8788_charger_get_property() local
156 val->intval = lp8788_is_charger_detected(pchg); in lp8788_charger_get_property()
159 lp8788_read_byte(pchg->lp, LP8788_CHG_IDCIN, &read); in lp8788_charger_get_property()
170 static int lp8788_get_battery_status(struct lp8788_charger *pchg, in lp8788_get_battery_status() argument
177 ret = lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_get_battery_status()
203 static int lp8788_get_battery_health(struct lp8788_charger *pchg, in lp8788_get_battery_health() argument
209 ret = lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_get_battery_health()
223 static int lp8788_get_battery_present(struct lp8788_charger *pchg, in lp8788_get_battery_present() argument
229 ret = lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_get_battery_present()
237 static int lp8788_get_vbatt_adc(struct lp8788_charger *pchg, int *result) in lp8788_get_vbatt_adc() argument
239 struct iio_channel *channel = pchg->chan[LP8788_VBATT]; in lp8788_get_vbatt_adc()
247 static int lp8788_get_battery_voltage(struct lp8788_charger *pchg, in lp8788_get_battery_voltage() argument
250 return lp8788_get_vbatt_adc(pchg, &val->intval); in lp8788_get_battery_voltage()
253 static int lp8788_get_battery_capacity(struct lp8788_charger *pchg, in lp8788_get_battery_capacity() argument
256 struct lp8788 *lp = pchg->lp; in lp8788_get_battery_capacity()
257 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_get_battery_capacity()
280 ret = lp8788_get_vbatt_adc(pchg, &vbatt); in lp8788_get_battery_capacity()
291 static int lp8788_get_battery_temperature(struct lp8788_charger *pchg, in lp8788_get_battery_temperature() argument
294 struct iio_channel *channel = pchg->chan[LP8788_BATT_TEMP]; in lp8788_get_battery_temperature()
311 static int lp8788_get_battery_charging_current(struct lp8788_charger *pchg, in lp8788_get_battery_charging_current() argument
316 lp8788_read_byte(pchg->lp, LP8788_CHG_IBATT, &read); in lp8788_get_battery_charging_current()
324 static int lp8788_get_charging_termination_voltage(struct lp8788_charger *pchg, in lp8788_get_charging_termination_voltage() argument
329 lp8788_read_byte(pchg->lp, LP8788_CHG_VTERM, &read); in lp8788_get_charging_termination_voltage()
340 struct lp8788_charger *pchg = dev_get_drvdata(psy->dev.parent); in lp8788_battery_get_property() local
344 return lp8788_get_battery_status(pchg, val); in lp8788_battery_get_property()
346 return lp8788_get_battery_health(pchg, val); in lp8788_battery_get_property()
348 return lp8788_get_battery_present(pchg, val); in lp8788_battery_get_property()
350 return lp8788_get_battery_voltage(pchg, val); in lp8788_battery_get_property()
352 return lp8788_get_battery_capacity(pchg, val); in lp8788_battery_get_property()
354 return lp8788_get_battery_temperature(pchg, val); in lp8788_battery_get_property()
356 return lp8788_get_battery_charging_current(pchg, val); in lp8788_battery_get_property()
358 return lp8788_get_charging_termination_voltage(pchg, val); in lp8788_battery_get_property()
370 struct lp8788_charger *pchg) in lp8788_update_charger_params() argument
372 struct lp8788 *lp = pchg->lp; in lp8788_update_charger_params()
373 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_update_charger_params()
417 struct lp8788_charger *pchg) in lp8788_psy_register() argument
424 pchg->charger = power_supply_register(&pdev->dev, in lp8788_psy_register()
427 if (IS_ERR(pchg->charger)) in lp8788_psy_register()
430 pchg->battery = power_supply_register(&pdev->dev, in lp8788_psy_register()
432 if (IS_ERR(pchg->battery)) { in lp8788_psy_register()
433 power_supply_unregister(pchg->charger); in lp8788_psy_register()
440 static void lp8788_psy_unregister(struct lp8788_charger *pchg) in lp8788_psy_unregister() argument
442 power_supply_unregister(pchg->battery); in lp8788_psy_unregister()
443 power_supply_unregister(pchg->charger); in lp8788_psy_unregister()
448 struct lp8788_charger *pchg = in lp8788_charger_event() local
450 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_charger_event()
451 enum lp8788_charger_event event = lp8788_is_charger_detected(pchg); in lp8788_charger_event()
453 pdata->charger_event(pchg->lp, event); in lp8788_charger_event()
456 static bool lp8788_find_irq_id(struct lp8788_charger *pchg, int virq, int *id) in lp8788_find_irq_id() argument
461 for (i = 0; i < pchg->num_irqs; i++) { in lp8788_find_irq_id()
462 if (pchg->irqs[i].virq == virq) { in lp8788_find_irq_id()
463 *id = pchg->irqs[i].which; in lp8788_find_irq_id()
474 struct lp8788_charger *pchg = ptr; in lp8788_charger_irq_thread() local
475 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_charger_irq_thread()
478 if (!lp8788_find_irq_id(pchg, virq, &id)) in lp8788_charger_irq_thread()
487 power_supply_changed(pchg->charger); in lp8788_charger_irq_thread()
488 power_supply_changed(pchg->battery); in lp8788_charger_irq_thread()
499 schedule_work(&pchg->charger_work); in lp8788_charger_irq_thread()
506 struct lp8788_charger *pchg, const char *name) in lp8788_set_irqs() argument
509 struct irq_domain *irqdm = pchg->lp->irqdm; in lp8788_set_irqs()
526 nr_irq = pchg->num_irqs; in lp8788_set_irqs()
529 pchg->irqs[nr_irq].virq = virq; in lp8788_set_irqs()
530 pchg->irqs[nr_irq].which = i; in lp8788_set_irqs()
531 pchg->num_irqs++; in lp8788_set_irqs()
535 0, name, pchg); in lp8788_set_irqs()
546 for (i = 0; i < pchg->num_irqs; i++) in lp8788_set_irqs()
547 free_irq(pchg->irqs[i].virq, pchg); in lp8788_set_irqs()
552 struct lp8788_charger *pchg) in lp8788_irq_register() argument
560 INIT_WORK(&pchg->charger_work, lp8788_charger_event); in lp8788_irq_register()
561 pchg->num_irqs = 0; in lp8788_irq_register()
564 ret = lp8788_set_irqs(pdev, pchg, name[i]); in lp8788_irq_register()
571 if (pchg->num_irqs > LP8788_MAX_CHG_IRQS) { in lp8788_irq_register()
573 pchg->num_irqs); in lp8788_irq_register()
582 struct lp8788_charger *pchg) in lp8788_irq_unregister() argument
587 for (i = 0; i < pchg->num_irqs; i++) { in lp8788_irq_unregister()
588 irq = pchg->irqs[i].virq; in lp8788_irq_unregister()
592 free_irq(irq, pchg); in lp8788_irq_unregister()
597 struct lp8788_charger *pchg) in lp8788_setup_adc_channel() argument
599 struct lp8788_charger_platform_data *pdata = pchg->pdata; in lp8788_setup_adc_channel()
607 pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan; in lp8788_setup_adc_channel()
611 pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan; in lp8788_setup_adc_channel()
614 static void lp8788_release_adc_channel(struct lp8788_charger *pchg) in lp8788_release_adc_channel() argument
619 if (!pchg->chan[i]) in lp8788_release_adc_channel()
622 iio_channel_release(pchg->chan[i]); in lp8788_release_adc_channel()
623 pchg->chan[i] = NULL; in lp8788_release_adc_channel()
630 struct lp8788_charger *pchg = dev_get_drvdata(dev); in lp8788_show_charger_status() local
646 lp8788_read_byte(pchg->lp, LP8788_CHG_STATUS, &data); in lp8788_show_charger_status()
655 struct lp8788_charger *pchg = dev_get_drvdata(dev); in lp8788_show_eoc_time() local
660 lp8788_read_byte(pchg->lp, LP8788_CHG_EOC, &val); in lp8788_show_eoc_time()
670 struct lp8788_charger *pchg = dev_get_drvdata(dev); in lp8788_show_eoc_level() local
677 lp8788_read_byte(pchg->lp, LP8788_CHG_EOC, &val); in lp8788_show_eoc_level()
704 struct lp8788_charger *pchg; in lp8788_charger_probe() local
708 pchg = devm_kzalloc(dev, sizeof(struct lp8788_charger), GFP_KERNEL); in lp8788_charger_probe()
709 if (!pchg) in lp8788_charger_probe()
712 pchg->lp = lp; in lp8788_charger_probe()
713 pchg->pdata = lp->pdata ? lp->pdata->chg_pdata : NULL; in lp8788_charger_probe()
714 platform_set_drvdata(pdev, pchg); in lp8788_charger_probe()
716 ret = lp8788_update_charger_params(pdev, pchg); in lp8788_charger_probe()
720 lp8788_setup_adc_channel(&pdev->dev, pchg); in lp8788_charger_probe()
722 ret = lp8788_psy_register(pdev, pchg); in lp8788_charger_probe()
728 lp8788_psy_unregister(pchg); in lp8788_charger_probe()
732 ret = lp8788_irq_register(pdev, pchg); in lp8788_charger_probe()
741 struct lp8788_charger *pchg = platform_get_drvdata(pdev); in lp8788_charger_remove() local
743 flush_work(&pchg->charger_work); in lp8788_charger_remove()
744 lp8788_irq_unregister(pdev, pchg); in lp8788_charger_remove()
746 lp8788_psy_unregister(pchg); in lp8788_charger_remove()
747 lp8788_release_adc_channel(pchg); in lp8788_charger_remove()