/* check for charger status bit */ if (val & CHARGER_STATUS_PRESENT) {
ret = tps65217_enable_charging(charger); if (ret) {
dev_err(charger->dev, "failed to enable charger: %d\n", ret); return IRQ_HANDLED;
}
} else {
charger->online = 0;
}
if (charger->prev_online != charger->online)
power_supply_changed(charger->psy);
ret = tps65217_reg_read(charger->tps, TPS65217_REG_CHGCONFIG0, &val); if (ret < 0) {
dev_err(charger->dev, "%s: Error in reading reg 0x%x\n",
__func__, TPS65217_REG_CHGCONFIG0); return IRQ_HANDLED;
}
if (val & TPS65217_CHGCONFIG0_ACTIVE)
dev_dbg(charger->dev, "%s: charger is charging\n", __func__); else
dev_dbg(charger->dev, "%s: charger is NOT charging\n", __func__);
ret = tps65217_config_charger(charger); if (ret < 0) {
dev_err(charger->dev, "charger config failed, err %d\n", ret); return ret;
}
/* Create a polling thread if an interrupt is invalid */ if (irq[0] < 0 || irq[1] < 0) {
poll_task = kthread_run(tps65217_charger_poll_task,
charger, "ktps65217charger"); if (IS_ERR(poll_task)) {
ret = PTR_ERR(poll_task);
dev_err(charger->dev, "Unable to run kthread err %d\n", ret); return ret;
}
charger->poll_task = poll_task; return0;
}
/* Create IRQ threads for charger interrupts */ for (i = 0; i < NUM_CHARGER_IRQS; i++) {
ret = devm_request_threaded_irq(&pdev->dev, irq[i], NULL,
tps65217_charger_irq,
IRQF_SHARED, "tps65217-charger",
charger); if (ret) {
dev_err(charger->dev, "Unable to register irq %d err %d\n", irq[i],
ret); return ret;
}
/* Check current state */
tps65217_charger_irq(-1, charger);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.