目录
开发环境: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