Linux驱动开发十六.input系统——3.系统自带的input驱动

2022-08-30 00:00:00 文件 配置 按键 设备 内核

前面两章我们通过input子系统构建了一个按键类型的输入设备的驱动,其实Linux的内核还提供了一套基于GPIO的按键驱动程序,和LED设备一样,我们只需要在编译内核的过程中进行配置然后在设备树中定义好设备节点就可以直接使用了。

配置内核

在使用内核提供的input子系统驱动前要将驱动使能,可以按照下面说明中的路径进行配置


 从上面的介绍可以看到,这个配置在.config里时CONFIG_KEYBOARD_GPIO,在该配置被使能以后,.config文件下的这个配置值就会变成y


并且可以从定位下面哪行Defined看到具体的配置(drivers/input/keyboard/Kconfig)

 


 并且在drivers/input/keyboard路径下的Makefile里,可以看到我们配置的CONFIG_KEYBOARD_GPIO对应的规则文件

 


 也就是说我们需要关注的就是gpio_keys.c这个文件。

从这个gpio_keys.c文件里,我们可以看出来,其实这个驱动也是一个platform驱动,和platform_dev设备的匹配规则也可以在文件中找到


 

上面就是platform_driver的定义,在没有设备树的情况下我们可以直接定义一个platform设备,设备的name属性的值就是gpio-keys。如果在设备树下,匹配的规则要去找of_match_table里面的gpio_keys_of_match变量

 


也就是说,我们这个设备树的节点必须是gpio-keys。

设备树配置

设备树的配置我们可以先看下参考文档Documentation/devicetree/bindings/input/gpio-keys.txt

相关文章