MTK Android 關機狀態下充電器接入檢測

關機時充電器檢測代碼在lk部分,當接入充電器時,PMIC會通過ADC採樣,檢測Vchrg(charger/usb電源)電壓,
判斷Vchrg的值如果在這個區間:4.4v~6.5v,系統就會開始進入充電過程,這個過程包括show low battery logo,接着
顯示充電電量logo。
相關代碼:
boottable/bbotloader/lk/platform/mt6735/platform.c

中查看函數void platform_init(void):

充電器檢測:
充電過程中,upmu_is_chr_det() 檢測Vchrg狀態,返回KAL_FALSE則power off。
#ifdef MTK_KERNEL_POWER_OFF_CHARGING
    if((g_boot_arg->boot_reason == BR_USB) && (upmu_is_chr_det() == KAL_FALSE))
    {
        printf("[%s] Unplugged Charger/Usb between Pre-loader and Uboot in Kernel Charging Mode, Power Off \n", __func__);
        mt6575_power_off();
    }
#endif

顯示LCM背光:
#ifndef DISABLE_FOR_BRING_UP
    mt65xx_backlight_on(); //[TODO] workaround
#endif

boot模式選擇,用於區分開機過程。
boot_mode_select();

顯示low battery logo,點亮充電指示燈:

        if(kernel_charging_boot() == 1) //關機充電狀態
        {
                mt_disp_power(TRUE);
                mt_disp_show_low_battery();
                mt_disp_wait_idle();
#ifndef DISABLE_FOR_BRING_UP
                mt65xx_leds_brightness_set(6, 110);
#endif
        }

kernel_charging_boot定義:
#if defined (MTK_KERNEL_POWER_OFF_CHARGING)
int kernel_charging_boot(void)
{
        if((g_boot_mode == KERNEL_POWER_OFF_CHARGING_BOOT || g_boot_mode == LOW_POWER_OFF_CHARGING_BOOT) && upmu_is_chr_det() == KAL_TRUE)
        {
                printf("[%s] Kernel Power Off Charging with Charger/Usb \n", __func__);
                return  1;
        }
        else if((g_boot_mode == KERNEL_POWER_OFF_CHARGING_BOOT || g_boot_mode == LOW_POWER_OFF_CHARGING_BOOT) && upmu_is_chr_det() == KAL_FALSE)
        {
                printf("[%s] Kernel Power Off Charging without Charger/Usb \n", __func__);
                return -1;
        }
        else
                return 0;
}
#endif
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章