和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、驱动通过GPIO连接的按键
二、Framework 层添加按键响应方法
三、参考文献
一、驱动通过GPIO连接的按键
此类按键采用GPIO来连接,通过监测其中断来判断按键的动作,需要根据具体硬件设计在项目对应的dts文件配置gpio_keys节点。
底层驱动主要修改以下两个文件上报键值。
1.修改 sp9863a-3c10.dts
修改方法如下:
bsp/kernel/kernel4.14/arch/arm64/boot/dts/sprd/sp9863a-3c10.dts
gpio-keys {
compatible = "gpio-keys";
key-power {
label = "Power Key";
linux,code = <KEY_POWER>;
gpios = <&pmic_eic 1 GPIO_ACTIVE_LOW>;
debounce-interval = <2>;
wakeup-source;
};
+
+ key-smart {
+ label = "Smart Key";
+ linux,code = <KEY_OK>;/* linux下的key code,linux下input.h中有定义键值 */
+ gpios = <&ap_gpio 53 GPIO_ACTIVE_LOW>;/* 按键连接的GPIO */
+ debounce-interval = <2>;/* 按键去抖时间,单位ms,如果出现按键不稳定,请适当加大 */
+ wakeup-source;
+ };
};
2. 修改pinmap-sp9863a.c文件
修改方法如下:
+++ /bsp/bootloader/u-boot15/board/spreadtrum/sp9863a_3c10/pinmap-sp9863a.c
@@ -348,8 +348,8 @@ static pinmap_t pinmap[]={
{REG_MISC_P