;if (irq<0) {error=irq;dev_err(dev,@@ -540,8 +546,10 @@ static int gpio_keys_setup_key(struct platform_device *pdev,if (!button->can_disable)irqflags |= IRQF_SHARED;-error=devm_request_any_context_irq(&pdev->dev, bdata->irq,- isr, irqflags, desc, bdata);+ PRINTK_T("=...
当发现有设备匹配时(compatible = "gpio-keys"),执行gpio_keys_probe函数。 适配 在适配的时候,就会用到下面的对象。 structgpio_keys_button_data{structgpio_desc*gpiod;intlast_state;intcount;intthreshold; };structgpio_button_data{conststructgpio_keys_button*button;structinput_dev*input;structgpio_desc...
gpio-keys{compatible="gpio-keys";status="okay";vol-down-key{gpios=<&pioPH51221>;linux,code=<114>;label="volume down";debounce-interval=<10>;wakeup-source=<0x1>;};vol-up-key{gpios=<&pioPH61221>;linux,code=<115>;label="volume up";debounce-interval=<10>;};}; • compatible:用...
在gpio_keys_probe()函数中, 会注册一个input设备, 并创建相应的设备文件。 二. GPIO_KEY使用 使用方式比较简单,和普通的文件操作一样, 先打开设备文件, 再读文件获取键值即可: 1. 打开设备文件, 我的设备上gpio_key对应的设备文件是/dev/input/event0, 不同的平台设备文件可能会有差异, 如果不清楚对应的设...
GPIO键盘驱动允许使用GPIO引脚作为输入设备,将其视为键盘的按键或开关。使用gpio-keys驱动模块,可以将GPIO引脚映射为键盘按键,并通过读取输入设备节点来监视和控制GPIO引脚。 首先,确保内核配置中已启用gpio-keys支持: ``` CONFIG_INPUT_GPIO_KEYS=y ```
简介:Linux内核中的gpio-keys.c(driver/input/keyboard/gpio-keys.c)统一了所有关于按键的驱动实现方式。其良好的代码架构可以兼容几乎所有平台的关于按键的处理流程。如果需要在目标平台实现关于按键的驱动程序,完全可以直接使用该驱动,几乎不用自己实现任何代码。
下面对常见使用场景进行分别介绍。 5.1.1 配置通用 GPIO 功能/中断功能 用法一:配置 GPIO,中断,device tree 配置 demo 如下所示: soc{ ... gpiokey { device_type = "gpiokey"; compatible = "gpio-keys"; ok_key { device_type = "ok_key"; ...
1>首先来查看驱动源码,在/mnt/workspace/osrc-lab/source/drivers/input/keyboard/gpio_keys_polled.c,我们可以看到驱动的源码并不大,大家可以自己仔细阅读,对开发驱动会有很大的好处。 2> 在这个驱动源码里我们可以看到设备树的驱动就是根据“gpio-keys-polled“进行匹配的,当我们设备树里的compatible对应的名字和驱动...
linux gpio-keys 在Linux系统中,GPIO键盘子系统(gpio-keys)是一种用于将GPIO引脚作为按键输入的子系统。通过gpio-keys子系统,用户可以将普通的GPIO引脚配置为按键输入,以便在Linux系统中进行相应的操作。 在嵌入式系统中,往往会有一些外部按键或开关用于用户交互或控制。通过gpio-keys子系统,这些外部按键或开关可以通过...