Lines Matching refs:charger

3  * MP2629 battery charger driver
155 static int mp2629_read_adc(struct mp2629_charger *charger,
162 ret = iio_read_channel_processed(charger->iiochan[ch], &chval);
171 static int mp2629_get_prop(struct mp2629_charger *charger,
178 ret = regmap_field_read(charger->regmap_fields[fld], &rval);
187 static int mp2629_set_prop(struct mp2629_charger *charger,
197 return regmap_field_write(charger->regmap_fields[fld], rval);
200 static int mp2629_get_battery_capacity(struct mp2629_charger *charger,
206 ret = mp2629_read_adc(charger, MP2629_BATT_VOLT, &vnow);
210 ret = mp2629_get_prop(charger, CHARGE_VLIM, &vlim);
224 struct mp2629_charger *charger = dev_get_drvdata(psy->dev.parent);
230 ret = mp2629_read_adc(charger, MP2629_BATT_VOLT, val);
234 ret = mp2629_read_adc(charger, MP2629_BATT_CURRENT, val);
246 ret = mp2629_get_battery_capacity(charger, val);
250 ret = mp2629_get_prop(charger, TERM_CURRENT, val);
254 ret = mp2629_get_prop(charger, PRECHARGE, val);
258 ret = mp2629_get_prop(charger, CHARGE_VLIM, val);
262 ret = mp2629_get_prop(charger, CHARGE_ILIM, val);
266 if (!charger->fault)
268 if (MP2629_FAULT_BATTERY & charger->fault)
270 else if (MP2629_FAULT_THERMAL & charger->fault)
272 else if (MP2629_FAULT_INPUT & charger->fault)
277 ret = regmap_read(charger->regmap, MP2629_REG_STATUS, &rval);
296 ret = regmap_read(charger->regmap, MP2629_REG_STATUS, &rval);
327 struct mp2629_charger *charger = dev_get_drvdata(psy->dev.parent);
331 return mp2629_set_prop(charger, TERM_CURRENT, val);
334 return mp2629_set_prop(charger, PRECHARGE, val);
337 return mp2629_set_prop(charger, CHARGE_VLIM, val);
340 return mp2629_set_prop(charger, CHARGE_ILIM, val);
351 struct mp2629_charger *charger = dev_get_drvdata(psy->dev.parent);
357 ret = regmap_read(charger->regmap, MP2629_REG_STATUS, &rval);
365 ret = regmap_read(charger->regmap, MP2629_REG_STATUS, &rval);
390 ret = mp2629_read_adc(charger, MP2629_INPUT_VOLT, val);
394 ret = mp2629_read_adc(charger, MP2629_INPUT_CURRENT, val);
398 ret = mp2629_get_prop(charger, INPUT_VLIM, val);
402 ret = mp2629_get_prop(charger, INPUT_ILIM, val);
416 struct mp2629_charger *charger = dev_get_drvdata(psy->dev.parent);
420 return mp2629_set_prop(charger, INPUT_VLIM, val);
423 return mp2629_set_prop(charger, INPUT_ILIM, val);
448 struct mp2629_charger *charger = dev_id;
452 mutex_lock(&charger->lock);
454 ret = regmap_read(charger->regmap, MP2629_REG_FAULT, &rval);
459 charger->fault = rval;
461 dev_err(charger->dev, "Battery fault OVP\n");
463 dev_err(charger->dev, "Thermal shutdown fault\n");
465 dev_err(charger->dev, "no input or input OVP\n");
467 dev_err(charger->dev, "VIN overloaded\n");
472 ret = regmap_read(charger->regmap, MP2629_REG_STATUS, &rval);
477 power_supply_changed(charger->usb);
479 power_supply_changed(charger->battery);
482 mutex_unlock(&charger->lock);
513 struct mp2629_charger *charger = dev_get_drvdata(dev->parent);
517 ret = regmap_read(charger->regmap, MP2629_REG_IMPEDANCE_COMP, &rval);
530 struct mp2629_charger *charger = dev_get_drvdata(dev->parent);
543 ret = regmap_update_bits(charger->regmap, MP2629_REG_IMPEDANCE_COMP,
561 struct mp2629_charger *charger = data;
563 regmap_update_bits(charger->regmap, MP2629_REG_CHARGE_CTRL,
571 struct mp2629_charger *charger;
575 charger = devm_kzalloc(dev, sizeof(*charger), GFP_KERNEL);
576 if (!charger)
579 charger->regmap = ddata->regmap;
580 charger->dev = dev;
581 platform_set_drvdata(pdev, charger);
590 charger->regmap_fields[i] = devm_regmap_field_alloc(dev,
591 charger->regmap, mp2629_reg_fields[i]);
592 if (IS_ERR(charger->regmap_fields[i])) {
594 return PTR_ERR(charger->regmap_fields[i]);
599 charger->iiochan[i] = devm_iio_channel_get(dev,
601 if (IS_ERR(charger->iiochan[i])) {
603 return PTR_ERR(charger->iiochan[i]);
607 ret = devm_add_action_or_reset(dev, mp2629_charger_disable, charger);
611 charger->usb = devm_power_supply_register(dev, &mp2629_usb_desc, NULL);
612 if (IS_ERR(charger->usb)) {
614 return PTR_ERR(charger->usb);
617 psy_cfg.drv_data = charger;
619 charger->battery = devm_power_supply_register(dev,
621 if (IS_ERR(charger->battery)) {
623 return PTR_ERR(charger->battery);
626 ret = regmap_update_bits(charger->regmap, MP2629_REG_CHARGE_CTRL,
633 regmap_update_bits(charger->regmap, MP2629_REG_TIMER_CTRL,
636 mutex_init(&charger->lock);
640 "mp2629-charger", charger);
646 regmap_update_bits(charger->regmap, MP2629_REG_INTERRUPT,