微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 关机充电动画显示异常

关机充电动画显示异常

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

关机充电动画显示异常:关机插入usb充电时显示充电动画后屏灭过2s之后屏会自动
亮起show动画

关机插入usb充电时显示充电动画后屏灭,过2s之后屏又自动亮起,动画又再次出现一次,此次灭屏后正常
User版本较容易复现,Eng版本不太容易复现

解决方法:
原因:ENG版本和USER版本bootup的流程不太一样引起的:
USER版本 bootup流程会比较快,很快走到bat_thread_kthread, 并updata Battery 和Charger的 status到上层,IPOD在init流程会收到 charger online,会show 充电画面,接着休眠,bat_thread_kthread的流程是10S调度一次,IPOD收到 charger online的 UEVENT 也会再次 show 充电画面;综上,在之前的user版本所看到是两次show 充电画面; 现在的solution是将第一次uevent 放在第一次show 充电画产生,两次就叠加为一次;

ENG版本 bootup流程会比较慢,IPOD在init流程检测充电器插入时,底层还没有把updata battery 和Charger的status upadte到上层,所以init流程是不会画的,直到UEVENT 上报,才会show 充电画面,所以只会有一次充电画面。
修改方法:修改battery_common.c文件中的函数bat_thread_kthread()如下:

  1. int bat_thread_kthread(void *x)
  2. {
  3. //ktime_t ktime = ktime_set(BAT_TASK_PERIOD, 0); // 10s, 10* 1000 ms//<==Delete this line
  4. ktime_t ktime = ktime_set(3, 0); // 10s, 10* 1000 ms//<==Add this line
  5. /* Run on a process content */
  6. while (1) {
  7. mutex_lock(&bat_mutex);
  8. if(chargin_hw_init_done == KAL_TRUE)
  9. BAT_thread();
  10. mutex_unlock(&bat_mutex);
  11. battery_xlog_printk(BAT_LOG_FULL, "wait event \n" );
  12. wait_event(bat_thread_wq, (bat_thread_timeout == KAL_TRUE));
  13. bat_thread_timeout = KAL_FALSE;
  14. hrtimer_start(&battery_kthread_timer, ktime, HRTIMER_MODE_REL);
  15. ktime = ktime_set(BAT_TASK_PERIOD, 0); // 10s, 10* 1000 ms//<==Add this line
  16. if( chr_wake_up_bat == KAL_TRUE)// for charger plug in/ out
  17. {
  18. battery_meter_reset();
  19. chr_wake_up_bat = KAL_FALSE;
  20. battery_xlog_printk(BAT_LOG_CRTI, "[BATTERY] Charger plug in/out, Call battery_meter_reset. (%d)\n", BMT_status.UI_SOC);
  21. }
  22. }
  23. return 0;
  24. }

复制代码



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

网站地图

Top