staticintgpio_keys_probe(structplatform_device *pdev){structdevice*dev=&pdev->dev;conststructgpio_keys_platform_data*pdata=dev_get_platdata(dev);structfwnode_handle*child=NULL;structgpio_keys_drvdata*ddata;structinput_dev*input;size_tsize;inti, error;intwakeup =0;if(!pdata) {// 获取设备...
在Linux系统中,GPIO键盘子系统(gpio-keys)是一种用于将GPIO引脚作为按键输入的子系统。通过gpio-keys子系统,用户可以将普通的GPIO引脚配置为按键输入,以便在Linux系统中进行相应的操作。 在嵌入式系统中,往往会有一些外部按键或开关用于用户交互或控制。通过gpio-keys子系统,这些外部按键或开关可以通过GPIO引脚与系统进行...
--- 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...
gpio_keys { compatible ="gpio-keys";input-name ="gpio-keys"; pinctrl-names ="default"; pinctrl-0= <&gpio_keys_default>; key_1 { label ="key_1"; gpios = <&gpio07GPIO_ACTIVE_HIGH>; linux,input-type= <1>; linux,code = <0x01>;/* KEY_1 */gpio-key,wakeup; debounce-interval ...
1>首先来查看驱动源码,在/mnt/workspace/osrc-lab/source/drivers/input/keyboard/gpio_keys_polled.c,我们可以看到驱动的源码并不大,大家可以自己仔细阅读,对开发驱动会有很大的好处。 2> 在这个驱动源码里我们可以看到设备树的驱动就是根据“gpio-keys-polled“进行匹配的,当我们设备树里的compatible对应的名字和驱动...
-gpio-key,wakeup:Boolean,标识该key可以唤醒系统,例如,Android系统的power-key。 Example nodes: gpio_keys_test {compatible = "gpio-keys";#address-cells = <1>;#size-cells = <0>;autorepeat;powerkey {label = "power key";linux,code = <116>;gpios = <&gpio0 GPIO_A5 GPIO_ACTIVE_LOW>;gpio...
一. GPIO-KEY的实现原理 1. 设备树定义GPIO按键: vi arch/arm/boot/dts/imx6qdl-sabresd.dtsi: gpio-keys { compatible = "gpio-keys";/*名字非常关键, 找驱动就靠它来匹配了*/ pinctrl-names = "default"; pinctrl-0 = 2.匹配驱动: vi drivers/input/keyboard/gpio_keys.c: ...
一般按键驱动,都是基于gpio-keys进行开发的。驱动文件如下: vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c 二、测试方法 终端窗口输入evtest,选择 7。 从上图红框可以看出,通过evtest测试工具将内核设备读取并打印设备描述的事件,到这里,GPIO按键就做完了,可以用它来实现很多的功能,...
1staticint__devinit gpio_keys_probe(structplatform_device *pdev)2{3structgpio_keys_platform_data *pdata = pdev->dev.platform_data; //相关的结构体以及宏定义在本c文件和include/linux/input.h include/linux/gpio_keys.h里面找。4structgpio_keys_drvdata *ddata;5structdevice *dev = &pdev->de...
staticstructgpio_keys_buttonomapl138_user_keys[] ={ [0] = { .type = EV_KEY, .active_low =1, .wakeup =0, .debounce_interval = OMAPL138_KEYS_BEBOUNCE, .code = KEY_PROG1, .desc ="user_key0", .gpio = OMAPL138_USER_KEY0