根据项目需要,现在需要将项目中的power按键原有的控制方式改成GPIO86口。
在原有的项目中,GPIO86原本是用来控制矩阵键盘中的一行,现在需要将dws文件进行相应的修改,需要将GPIO86的初始模式设定为GPIO模式,同时,选择相应的功能名称,根据电路图中POWER按键的原理,得出该GPIO口需要设定为输出模式,并且是按键是低电平触发。最后,在设定键盘功能的界面,将GPIO86所控制的键盘功能删除。
在进行修改之后,键值仍然上报,并且出现了一次性上报多个键值,键值不定的问题,经过排查之后发现是由于对GPIO86这个按键的键值没有进行设定造成的,由于这个键盘模式并不是通过矩阵键盘的模式来进行操作的,因此,需要在驱动中进行相应的修改。
drivers/misc/mediatek/keypad/kpd.c
在这个目录中,查找到了一个函数
static void kpd_keymap_handler(unsigned long data)
这个函数的作用是扫描矩阵键盘,同时通过HW_keycode来配对相应的按键的键值,经过log中的排查,以及该GPIO未设置键值前进行的动作,可以找到相应的HW_keycode,在ADAS项目中,HW_keycode=20。
由于在这个函数中,HW_keycode会绑定相应的上报的键值,因此,需要在这个函数中添加一个判断语句,这个判断语句可以强制性的将上报的键值改成power键的键值。
或者也可以通过添加kernel-3.10\drivers\misc\mediatek\keypad\mt6735\hal_kpd.c这个文件中的void kpd_pmic_pwrkey_hal(unsigned long pressed)函数,这个函数主要是用来进行power按键的与hw_keycode的绑定。
修改mtk平台power按键的gpio控制口
最新推荐文章于 2024-05-23 10:08:08 发布