linux输入子系统键值,输入子系统之gpio-keys

本文介绍如何在Linux系统下配置GPIO按键驱动,包括修改设备树、内核配置、键值映射,并分析了驱动工作原理,特别讨论了电平毛刺导致的事件上报问题及其解决方案。
摘要由CSDN通过智能技术生成

目录

开发环境:msm8953、安卓7.1、linux3.18

一、gpio-keys使用

gpio-keys.c 是linux内核中的驱动文件,添加gpio按键不需要自己去实现驱动。

参考链接:高通平台如何添加没有定义的按键

1.修改设备树

先在设备树中添加设备节点,然后添加pinctrl。

label 是按键的名称。gpios 表明使用的是那个gpio。 linux,input-type的0x1是EV_KEY。linux,code 是按键上报的键值。wakeup 按键按下可以唤醒系统。debounce-interval 是按键的消抖时间。

// msm8953-nopmi-qrd.dtsi

gpio_keys {

compatible = "gpio-keys";

input-name = "gpio-keys";

pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";

pinctrl-0 = ;

pinctrl-1 = ;

vol_up {

label = "volume_up";

gpios = ;

linux,input-type = <1>;

linux,code = <0x73>;

gpio-key,wakeup;

debounce-interval = <15>;

};

volume_down {

label = "volume_down";

gpios = ;

linux,input-type = <1>;

linux,code = <0x72>;

gpio-key,wakeup;

debounce-interval = <15>;

};

...

}

添加pinctrl

tlmm_gpio_key {

gpio_key_active: gpio_key_active {

mux {

pins = "gpio48", "gpio135";

function = "gpio";

};

config {

pins = "gpio48", "gpio135";

drive-strength = <2>;

bias-pull-up;

};

};

gpio_key_suspend: gpio_key_suspend {

mux {

pins = "gpio48", "g

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值