};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...
gpio-keys-polled是gpio-button-hotplug库可识别的关键字。这里就相当于告诉gpio-keys-polled,这是一组GPIO按键,它们的检测方式是轮询。 - 兼容性声明:compatible = "gpio-keys-polled"声明了这些按键与GPIO按键轮询驱动的兼容性。 - 轮询间隔:poll-interval = <20>设置了按键状态检测的轮询间隔时间20毫秒。 -...
(3)去抖定时器超时后会调用gpio_keys_gpio_timer定时器超时处理函数,该函数的实现十分的简单,其就做一件事,即调度key/button的workqueue。 中断处理-bottom level 上文提到过gpio-keys中断下半部的处理方式为workqueue,中断上半部的去抖定时器如果超时的话,会触发workqueue调度,workqueue会在合适的时间点执行。下面...
1 static int __devinit gpio_keys_probe(struct platform_device *pdev) 2 { 3 struct gpio_keys_platform_data *pdata = pdev->dev.platform_data; //相关的结构体以及宏定义在本c文件和include/linux/input.h include/linux/gpio_keys.h里面找。 4 struct gpio_keys_drvdata *ddata; 5 struct devic...
关键词:gpiolib、pinctrl、gpio-keys等。 在了解pinctrl基础上,分析GPIO子系统按照如下几方面进行: GPIO总体框架、gpiolib主要文件、menuconfig配置GPIO。 了解gpiolib的主要数据结构和API(GPIO Controller和Consumer)。 GPIO相关DTS,包括GPIO Controller和GPIO Consumer。
vi drivers/input/keyboard/gpio_keys.c: 首先init进去会根据名字匹配这个驱动 static int __init gpio_keys_init(void) { return platform_driver_register(&gpio_keys_device_driver); } static struct platform_driver gpio_keys_device_driver = {
gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。 本文目录: 登录后复制一、gpio 与 pinctrl 二、内核里如何引用 gpio 三、gpio 子系统框架 四、应用层如何访问 gpio
注意,针对通用“LED和按钮”的标准内核驱动存在对应的GPIO任务“leds-gpio”和“gpio-keys”。使用它们代替直接与GPIO通话,它们集成在内核架构比你的用户态代码可能更好。 Paths in Sysfs Sysfs路径 There are three kinds of entry in /sys/class/gpio: ...
: pdev->name;input->phys = "gpio-keys/input0";input->dev.parent = &pdev->dev;input->open = gpio_keys_open;input->close = gpio_keys_close;... .../* Enable auto repeat feature of Linux input subsystem */if (pdata->rep)__set_bit(EV_REP, input->evbit);for (i = 0; i ...
Linux 内核下的 drivers/input/keyboard/gpio_keys.c实现了一个体系结构无关的GPIO按键驱动,使用此按键驱动,只需在相应的板级支持包中(imx6q的是board-mx6q-sabresd.c)定义相关的数据即可。驱动的实现非常简单,但是较适合于实现独立式按键驱动。 gpio-keys是基于input架构实现的一个通用GPIO按键驱动。该驱动基于plat...