首先软件上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)
{
----;
}
以后慢慢完善;