微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 关机充电,会偶现电量50%

关机充电,会偶现电量50%

时间:10-02 整理:3721RD 点击:

关机模式下,插入USB充电,不管电量多少,都偶现电量显示50%
原因:

  1. int bat_thread_kthread(void *x)
  2. {
  3. ktime_t ktime = ktime_set(3, 0); /* 10s, 10* 1000 ms */
  4. #ifdef Battery_CDP_WORKAROUND
  5. if(is_charger_detection_rdy()==KAL_FALSE){
  6. battery_log(BAT_LOG_CRTI, "CDP, block\n");
  7. wait_event(bat_thread_wq, (is_charger_detection_rdy()==KAL_TRUE));
  8. battery_log(BAT_LOG_CRTI, "CDP, free\n");
  9. }else{
  10. battery_log(BAT_LOG_CRTI, "CDP, PASS\n");
  11. }
  12. #endif

复制代码

应为打开了BATTERY_CDP_WORKAROUND这个宏,当在charger detect时由于usb没有ready的情况下,会导致在read battery 节点在update之前,所以读出来的值是默认的50,所以应该在get
battery capacity时加个小延迟,
解决方法:
修改如下:
在alps\vendor\mediatek\proprietary\external\charger\charging_control.cpp中的static int get_capacity()

  1. static int get_capacity()
  2. {
  3. #if defined(mtk_PUMP_EXPRESS_SUPPORT) || defined(MTK_PUMP_EXPRESS_PLUS_SUPPORT)
  4. while(get_int_value(BATT_CAPACITY_PATH)==-1);
  5. #endif
  6. return get_int_value(BATT_CAPACITY_PATH);
  7. }

复制代码


改为:

  1. static int get_capacity()
  2. {
  3. statice int is_first_get_bat_capacity = 1;
  4. int count = 0;
  5. #if defined(MTK_PUMP_EXPRESS_SUPPORT) || defined(MTK_PUMP_EXPRESS_PLUS_SUPPORT)
  6. while(get_int_value(BATT_CAPACITY_PATH)==-1);
  7. #endif
  8. if(is_first_get_bat_capacity == 1)
  9. {
  10. while(get_int_value(BATT_CAPACITY_PATH)==50)
  11. {
  12. count++;
  13. if(count >=10)
  14. break;
  15. usleep(100*1000);
  16. }
  17. is_first_get_bat_capacity = 0;
  18. return get_int_value(BATT_CAPACITY_PATH);
  19. }
  20. return get_int_value(BATT_CAPACITY_PATH);
  21. }

复制代码

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top