微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 睡眠后短按pwrkey偶现点亮不了屏幕 (唤醒系统)

睡眠后短按pwrkey偶现点亮不了屏幕 (唤醒系统)

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

使用PMIC 6323的平台,诸如MT6582/72等,偶现深度睡眠后, 短按pwrkey键无法点亮屏幕的情况。通过查看log可发现,短按pwrkeyu时,并没有上报key press。

解决方法:
针对以上问题,可采用以下两种优化方法(可单独使用也可一起使用):
1.上层修改
下面从php?mod=tag&id=6090" target="_blank" class="relatedlink">Framework的角度给一个workaround的方法:
在/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中添加一个变量标记是否按下power key:
Private Boolean isPressedPwrkey;
然后在public int interceptKeyBeforeQueueing(KeyEvent event, int
policyFlags)方法中添加以下代码:

  1. // Handle special keys.
  2. switch (keyCode) {

  3. case KeyEvent.KEYCODE_POWER: {
  4. result &= ~ACTION_PASS_TO_USER;
  5. isWakeKey = false; // wake-up will be handled separately
  6. if (down) {
  7. isPressedPwrkey = true;
  8. interceptPowerKeyDown(event, interactive);
  9. } else {
  10. If(!isPressedPwrkey && !isScreenOn(){
  11. interceptPowerKeyDown(event, interactive);
  12. isPressedPwrkey = true;
  13. }
  14. interceptPowerKeyUp(event, interactive, canceled);
  15. }
  16. break;
  17. }

复制代码


2.driver层修改
在PMIC_MT6323.c中创建一个全局变量keyispressed,在函数pwrkey_int_handler中作如下逻辑判断:如果按键未被按下的情况下,收到release,先上报press再上报release.

  1. if(upmu_get_pwrkey_deb()==1)
  2. {
  3. ……
  4. If(keyispressed==false) //add
  5. {
  6. kpd_pwrkey_pmic_handler(0x1); //add
  7. }
  8. kpd_pwrkey_pmic_handler(0x0);
  9. ……
  10. keyispressed=false; //add
  11. }
  12. Else
  13. {
  14. ……
  15. keyispressed=true ;//add
  16. }

复制代码



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

网站地图

Top