MTK驱动-----充电管理及拔插充电器检测

mt6739使用mt6357pmic电源管理芯片,内核版本使用4.4,充电管理使用GM3.0

使用的代码kernel-4.4\drivers\power\mediatek

MTK驱动-----充电管理及拔插充电器检测_第1张图片

 

mtk_battery.c主要是电量计相关的代码类似于之前的battery_meter.c文件

mtk_charger.c相当于之前的battery_common.c文件

充电器流程检测:

主要涉及文件:

kernel-4.4\drivers\misc\mediatek\pmic\mt6357\v1\pmic_chr_type_det_v2.c

kernel-4.4\drivers\power\mediatek\charger\mtk_chg_type_det.c

kernel-4.4\drivers\power\mediatek\charger\mtk_charger.c

1.插入充电器检测:

插入时,模块VBUS上电,触发pmic中断

kernel-4.4/drivers/misc/mediatek/pmic/mt6356/v1/pmic_chr_type_det_v2.c
pmic_register_interrupt_callback(INT_CHRDET_EDGE, chrdet_int_handler);
pmic_enable_interrupt(INT_CHRDET_EDGE, 1, "PMIC");//触发PNIC中断
    
   chrdet_int_handler()
         调用 
        do_charger_detect() //判断是否为OTG模式(!mt_usb_is_device())
         调用
        chrdet_inform_psy_changed(g_chr_type, 1);
         调用
        power_supply_set_property(chrdet_psy, POWER_SUPPLY_PROP_ONLINE, &propval);
        power_supply_set_property(chrdet_psy, POWER_SUPPLY_PROP_CHARGE_TYPE, &propval);
                (上报系统充电器类型及状态状态)
然后调到:
kernel-4.4\drivers\power\mediatek\charger\mtk_chg_type_det.c文件的函数:
       mt_charger_get_property()和 mt_charger_set_property() 
最后调用
kernel-4.4\drivers\power\mediatek\charger\mtk_charger.c中
    函数mtk_charger_int_handler(void)

唤醒charger_thread :_wake_up_charger(pinfo);
        

MTK驱动-----充电管理及拔插充电器检测_第2张图片MTK驱动-----充电管理及拔插充电器检测_第3张图片

 

到此,充电器检测跟唤醒已经完成。

系统healthd线程显示底层状态:st=2时为充电状态,chg为充电器类型

system/core/healthd/BatteryMonitor.cpp 

 

你可能感兴趣的:(MTK驱动)