Lines Matching defs:pchg

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