关机充电,会偶现电量50%
时间:10-02
整理:3721RD
点击:
关机模式下,插入USB充电,不管电量多少,都偶现电量显示50%
原因:
- int bat_thread_kthread(void *x)
- {
- ktime_t ktime = ktime_set(3, 0); /* 10s, 10* 1000 ms */
- #ifdef Battery_CDP_WORKAROUND
- if(is_charger_detection_rdy()==KAL_FALSE){
- battery_log(BAT_LOG_CRTI, "CDP, block\n");
- wait_event(bat_thread_wq, (is_charger_detection_rdy()==KAL_TRUE));
- battery_log(BAT_LOG_CRTI, "CDP, free\n");
- }else{
- battery_log(BAT_LOG_CRTI, "CDP, PASS\n");
- }
- #endif
battery capacity时加个小延迟,
解决方法:
修改如下:
在alps\vendor\mediatek\proprietary\external\charger\charging_control.cpp中的static int get_capacity()
- static int get_capacity()
- {
- #if defined(mtk_PUMP_EXPRESS_SUPPORT) || defined(MTK_PUMP_EXPRESS_PLUS_SUPPORT)
- while(get_int_value(BATT_CAPACITY_PATH)==-1);
- #endif
- return get_int_value(BATT_CAPACITY_PATH);
- }
改为:
- static int get_capacity()
- {
- statice int is_first_get_bat_capacity = 1;
- int count = 0;
- #if defined(MTK_PUMP_EXPRESS_SUPPORT) || defined(MTK_PUMP_EXPRESS_PLUS_SUPPORT)
- while(get_int_value(BATT_CAPACITY_PATH)==-1);
- #endif
- if(is_first_get_bat_capacity == 1)
- {
- while(get_int_value(BATT_CAPACITY_PATH)==50)
- {
- count++;
- if(count >=10)
- break;
- usleep(100*1000);
- }
- is_first_get_bat_capacity = 0;
- return get_int_value(BATT_CAPACITY_PATH);
- }
- return get_int_value(BATT_CAPACITY_PATH);
- }
