首先软件上Pmic CHGVAL中断触发,pm8058_chg_chgval_handler函数被调用,即表明pmic检测到usb_vbus,说明有usb或者dc的插入,接着进入充电流程;
之后调用msm_charger_notify_event(),
在该函数中调度工作队列msm_chg.queue_work;之后调用到工作队列处理函数process_events();再之后逐步调用到pmic8058中的pm8058_start_charging()。pm8058_chg_chgval_handler()
——>msm_charger_notify_event()
——>process_events()
——>handle_event()
——>handle_charger_ready()
——>msm_enable_system_current()
——>msm_start_charging()
——>pm8058_start_charging()
在pm8058_start_charging()中会调度end of charge的一个工作队列,要是判断充满电则结束充电,否则继续调度该工作队列;
static void eoc_worker(struct work_struct *work)
{
----;
}
以后慢慢完善;
本文详细解析了PM8058芯片在检测到USB或DC插入后的充电流程,从PmicCHGVAL中断触发开始,经过一系列函数调用,最终启动充电过程,并介绍如何通过工作队列监测电池状态。
&spm=1001.2101.3001.5002&articleId=8836970&d=1&t=3&u=941a983ce7394fbd9ae18d49ad49cc1f)
2600

被折叠的 条评论
为什么被折叠?



