https://gitee.com/weiqifa/gpio_key/blob/master/gpio_keys.c 1. 驱动代码流程,从probe处开始 刚开始的时候,我连dts文件都不会写,因为之前没有接触过这个驱动。然后看了gpio_keys_get_devtree_pdata函数,之后又看了内核代码下其他项目其他平台的dts文件,才知道怎么写这个驱动的dts文件。 实话...
1 static int __devinit gpio_keys_setup_key(struct platform_device *pdev, 2 struct gpio_button_data *bdata, 3 struct gpio_keys_button *button) 4 { 5 const char *desc = button->desc ? button->desc : "gpio_keys"; 6 struct device *dev = &pdev->dev; 7 unsigned long irqflags; 8...
gpio_keys_setup_key主要完成gpio的申请、配置以及gpio所关联的irq的申请、初始化配置功能,具体执行流程如下。 static int gpio_keys_setup_key(struct platform_device *pdev, struct input_dev *input, struct gpio_button_data *bdata, const struct gpio_keys_button *button) { ... if (gpio_is_valid(bu...
: EV_KEY;4849bdata->input =input;50bdata->button =button;5152error =gpio_keys_setup_key(pdev, bdata, button); //这个是具体实现,下面分析53if(error)54gotofail2;5556if(button->wakeup)57wakeup =1;58 /*设置设备对事件的支持,比如设置对键1和键2的支持*/59input_set_capability(input, type,...
L3. gpio_key按键驱动 1.gpio_key.c介绍 1.1 功能介绍 Linux内核下的 drivers/input/keyboard/gpio_keys.c实现了一个体系结构无关的GPIO按键驱动,使用此按键驱动,只需在设备树gpio-key节点添加需要的按键子节点即可。驱动的实现非常简单,但是较适合于实现独立式按键驱动。
gpio_keys_setup_key主要完成gpio的申请、配置以及gpio所关联的irq的申请、初始化配置功能,具体执行流程如下。 static int gpio_keys_setup_key(struct platform_device *pdev,struct input_dev *input,struct gpio_button_data *bdata,const struct gpio_keys_button *button){...if (gpio_is_valid(button-...
Linux Driver : gpio-keys的解析 背景 在阅读高通设备树配置一个按键的时候,没有找到按键是在什么时候进行处理的。因此根据仅有的线索gpio-key.c进行分析,发现根据之前的学习积累,很快就看懂了。 介绍 gpio-keys是基于platform来实现实现的一个通用的GPIO按键驱动,对上可以提供input子系统的event。
即设备树中gpios = 第三个参数。...4.2使用input架构 (1) 申请input设备 input = input_allocate_device(); (2) 填充input结构体成员 (3) 设置GPIO按键主要负责申请GPIO...管脚,设置状态,输出方向,中断申请等 API: gpio_keys_setup_key(pdev, input, bdata, button); (4) 注册input设备 input_register...
gpio-key,light;};};具体实现是在 /kernel/drivers/input/keyboard/rk_keys.c 中,并参照其中的相关...
linux,code = <114>; /* KEY_VOLUMEDOWN */ }; }; 里的compatible匹配到。则会调用platform里的probe成员函数 static int gpio_keys_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; const struct gpio_keys_platform_data *pdata = dev_get_platdata(dev); ...