看了一下log,确实有这种情况发生。发生时的log如下
03-20 01:28:42.830 393 0 I Kernel : <4>[ 141.326877] ------------[ cut here ]------------
03-20 01:28:42.830 393 0 I Kernel : <4>[ 141.326895] WARNING: at /media/7de581ca-4077-4fc3-875f-d444babb01be/M-bsp/kernel/sound/soc/codecs/wcd-mbhc-v2.c:1753 wcd_mbhc_btn_press_handler+0x22c/0x27c()
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326900] Button pressed twice without release event
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326907] Modules linked in: [last unloaded: wlan]
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326910] Call trace:
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326920] [<ffffffc00020622c>] dump_backtrace+0x0/0x290
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326928] [<ffffffc000bd48dc>] dump_stack+0x10/0x1c
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326935] [<ffffffc00021989c>] warn_slowpath_common+0x74/0x9c
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326941] [<ffffffc000219910>] warn_slowpath_fmt+0x4c/0x58
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326946] [<ffffffc000992004>] wcd_mbhc_btn_press_handler+0x228/0x27c
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326954] [<ffffffc0009bdc74>] wcd9xxx_spmi_irq_handler+0x160/0x1b8
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326960] [<ffffffc000265128>] irq_thread+0xd4/0x150
03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326967] [<ffffffc00023ad00>] kthread+0xac/0xb8
03-20 01:28:42.830 393 0 I Kernel : <4>[ 141.326971] ---[ end trace b8985662307e3b08 ]---
03-20 01:28:42.830 393 0 I Kernel : <7>[ 141.326977] wcd_mbhc_btn_press_handler: leave
03-20 01:28:42.831 393 0 I Kernel : <7>[ 141.327019] wcd_mbhc_release_handler: Reporting btn press
03-20 01:28:42.831 393 0 I Kernel : <7>[ 141.327064] wcd_mbhc_release_handler: Reporting btn release
03-20 01:28:42.831 393 0 I Kernel : <7>[ 141.327075] wcd_mbhc_release_handler: leave
03-20 01:28:42.830 3356 3356 D SMMI_TEST_V5.6.4: onKeyDown keyCode=79
03-20 01:28:42.836 3356 3356 D SMMI_TEST_V5.6.4: onKeyDown keyCode=189
03-20 01:28:42.838 3356 3356 D SMMI_TEST_V5.6.4: onKeyUp keyCode=79
03-20 01:28:42.840 3356 3356 D SMMI_TEST_V5.6.4: onKeyUp keyCode=189 //这里发生了错误
在发生这次错误之前,sound那边有报warming :03-20 01:28:42.830 393 0 I Kernel : <6>[ 141.326900] Button pressed twice without release event
这个报warming的文件是kernel/sounc/soc/codecs/Wcd-mbhc-v2.c
if (schedule_delayed_work(&mbhc->mbhc_btn_dwork,
msecs_to_jiffies(400)) == 0) {
WARN(1, "Button pressed twice without release event\n"); //看起来类似双击
mbhc->mbhc_cb->lock_sleep(mbhc, false);
}
而keycode对于的内容如下
/** Headset Hook key.
* Used to hang up calls and stop media. */
AKEYCODE_HEADSETHOOK = 79,
/** Generic Game Pad Button #2.*/
AKEYCODE_BUTTON_2 = 189,
在generical.kl中AKEYCODE_HEADSETHOOK对于的key是
key 226 HEADSETHOOK