error=gpio_keys_get_devtree_pdata(dev,&alt_pdata);pdata=&alt_pdata; 看一下gpio_keys_get_devtree_pdata里是怎么拿的: 注:容易进入误区的一点,驱动设备树of _xxAPI并不都是直接从设备树里直接拿到属性的,而是先将设备树节点属性值转化为device_node数据结构体成员值,然后驱动通过of_xx API从device_nod...
};staticint__initgpio_keys_init(void){returnplatform_driver_register(&gpio_keys_device_driver); } 当发现有设备匹配时(compatible = "gpio-keys"),执行gpio_keys_probe函数。 适配 在适配的时候,就会用到下面的对象。 structgpio_keys_button_data{structgpio_desc*gpiod;intlast_state;intcount;intthresho...
15.2 gpio_keys设备树驱动 1>首先来查看驱动源码,在/mnt/workspace/osrc-lab/source/drivers/input/keyboard/gpio_keys_polled.c,我们可以看到驱动的源码并不大,大家可以自己仔细阅读,对开发驱动会有很大的好处。 2> 在这个驱动源码里我们可以看到设备树的驱动就是根据“gpio-keys-polled“进行匹配的,当我们设备树里...
gpio_keys_platform_data:描述按键/按钮的平台配置参数。 gpio_keys_drvdata:作为platform data注册到platform设备总线的配置参数。 四、设备注册与probe流程 gpio-key驱动以platform_driver的身份注册到系统中,因此需要定义platform_driver结构。在probe阶段,驱动会获取设备树属性,初始化input设备,设置GPIO并注册。此外,驱动...
Linux kernel驱动,针对gpio-keys实现了一个专用驱动,在使用GPIO模拟按键的场合时,只需配置设备树即可实现相应的按键功能,其中kernel driver对应的文件路为drivers\input\keyboard\gpio_keys.c,对应的设备树描…
我们需要阅读源码来确定设备树的上述4点内容。 1.2 ICM20608设备树 100ASK_IMX6ULL开发板上,ICM20608接在哪一个SPI控制器上? ?...1.3 SPI控制器驱动程序 1.3.1 找到驱动程序根据上述设备树信息,在Linux内核源码目录下搜"fsl,imx6ul-ecspi",就可以...
首先,要使用gpio-keys,你需要确保你的Linux内核已经启用了相应的配置选项。在内核配置中,你需要启用CONFIG_INPUT_GPIO_KEYS选项。这个选项通常位于"Device Drivers" -> "Input device support" -> "Keyboards"下。启用这个选项后,重新编译内核并将其烧录到你的嵌入式设备上。 接下来,你需要在设备树中配置GPIO按键的...
在使用gpio-keys子系统时,用户需要在设备树中进行相应的配置。通过设备树的描述,用户可以指定哪些GPIO引脚被配置为按键输入,以及按键的一些属性如上拉/下拉电阻等。配置完成后,系统会在启动时自动识别这些GPIO引脚,并将它们注册为输入设备,以便用户可以在系统中使用。
一般按键驱动,都是基于gpio-keys进行开发的。驱动文件如下: vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c 二、测试方法 终端窗口输入evtest,选择 7。 从上图红框可以看出,通过evtest测试工具将内核设备读取并打印设备描述的事件,到这里,GPIO按键就做完了,可以用它来实现很多的功能,...
gpio-keys是基于input子系统实现的一个通用按键驱动,该驱动基于platform_driver架构,实现了驱动和设备分离,符合Linux设备驱动模型的思想,也符合linux驱动实现模型,即driver和device分离模型。 一般按键驱动,都是基于gpio-keys进行开发的。驱动文件如下: vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio...