--- a/kernel-4.4/drivers/input/keyboard/gpio_keys.c+++ b/kernel-4.4/drivers/input/keyboard/gpio_keys.c@@ -32,6 +32,11 @@#include<linux/of_irq.h>#include<linux/spinlock.h>++#define LOG_TAG "[BUTTON]: %s() line: %d "+#define PRINTK_T(fmt, args...) printk(KERN_INFO LOG_TAG...
structgpio_keys_button_data{structgpio_desc*gpiod;intlast_state;intcount;intthreshold; };structgpio_button_data{conststructgpio_keys_button*button;structinput_dev*input;structgpio_desc*gpiod;unsignedshort*code;structtimer_listrelease_timer;unsignedintrelease_delay;/* in msecs, for IRQ-only buttons...
CONFIG_INPUT_GPIO_KEYS=y ``` 然后,通过设备树(DTS)文件描述GPIO键盘驱动: ```yaml gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&gpio_key_pins>; #address-cells = <1>; #size-cells = <0>; button@0 { label = "gpio-button 0"; linux,code = <KEY...
之前驱动这块使用的compatible = "gpio-keys"; 按键驱动 keys { compatible = "gpio-keys"; autorepeat ; DI_P1 { label = "DI_P1"; linux,code = <DI_P1>; gpios = <&gpio0 57 GPIO_ACTIVE_LOW>; linux,input-type = <EV_KEY>; }; DI_P2 { label = "DI_P2"; linux,code = <DI_P2>;...
[gpio-keys]compatible ="gpio-keys";[gpio-keys/up]linux,code =103linux,input-type =1gpios = port:PH11<6><default><default><default>[gpio-keys/down]linux,code =108linux,input-type =1gpios = port:PH08<0><default><default><default>[gpio-keys/enter]linux,code =28linux,input-type =...
gpio-keys-polled { compatible = "gpio-keys-polled"; #address-cells = <1>; #size-cells = <0>; poll-interval = <20>; reset { label = "reset"; gpios = <&gpio0 5 1>; linux,code = <KEY_RESTART>; }; }; 按键驱动文件 package/kernel/gpio-button-hotplug/src/gpio-button-hotplug....
gpio_keys: gpio_keys { status = "okay"; compatible = "gpio-keys"; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&leds_keys_gpio>; + key_sw1 { + debounce-interval = <100>; + gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>; + label = "GPIO Key sw1"; + linux,code = ;...
Show me the code: 从上述代码可看到,gpio_keys.c节点内定义两个按键节点: “key_power”、”key_headset”。每个按键节点包括一个gpio所用到的所有硬件属性。拿第一个设备节点解析: key_power { label = "Power Key"; //按键描述性名称 linux,code =<116>; //键值,即中断触发上报的键值与内核定义的保持...
(2)遍历DTS所有子节点,依次读取key/button的gpios、flags、linux,code、linux,input-type、gpio-key,wakeup、debounce-interval属性字段。 按键注册 gpio_keys_setup_key主要完成gpio的申请、配置以及gpio所关联的irq的申请、初始化配置功能,具体执行流程如下。
gpio_keys: volume_keys@0 { compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; autorepeat; switch@9 { label = "volume-up"; linux,code = <115>; gpios = <&gpio3 0 GPIO_ACTIVE_LOW>; gpio-key,wakeup;