首先,要使用gpio-keys,你需要确保你的Linux内核已经启用了相应的配置选项。在内核配置中,你需要启用CONFIG_INPUT_GPIO_KEYS选项。这个选项通常位于"Device Drivers" -> "Input device support" -> "Keyboards"下。启用这个选项后,重新编译内核并将其烧录到你的嵌入式设备上。 接下来,你需要在设备树中配置GPIO按键的...
在Linux系统中,GPIO键盘子系统(gpio-keys)是一种用于将GPIO引脚作为按键输入的子系统。通过gpio-keys子系统,用户可以将普通的GPIO引脚配置为按键输入,以便在Linux系统中进行相应的操作。 在嵌入式系统中,往往会有一些外部按键或开关用于用户交互或控制。通过gpio-keys子系统,这些外部按键或开关可以通过GPIO引脚与系统进行...
我们可以使用gpios属性,描述我们需要使用的GPIO管脚,或者使用interrupts属性,来描述按键对应的GPIO管脚,此时驱动代码使用中断形式触发。需要注意的是,两者不可并存,二者选其一。 正点原子的imx6ull开发板,同样使用了gpio_keys.c驱动代码,实现GPIO模拟按键,观察其设备树,可以得知,正点原子使用了gpios属性,来描述管脚信息。...
staticintgpio_keys_probe(structplatform_device *pdev){structdevice*dev=&pdev->dev;conststructgpio_keys_platform_data*pdata=dev_get_platdata(dev);structfwnode_handle*child=NULL;structgpio_keys_drvdata*ddata;structinput_dev*input;size_tsize;inti, error;intwakeup =0;if(!pdata) {// 获取设备...
gpio_keys 驱动使用 of_get_gpio_flags() 获取 dts 里面 gpio 配置信息。 但是of_get_gpio_flags() 传入 enum of_gpio_flags 类型来获取配置信息。 of_get_gpio_flags() 的最终实现由具体的 SOC 厂商实现,这里是全志厂商实现。 实现的函数为:drivers/pinctrl/sunxi/pinctrl-sunxi.c --> sunxi_pinctrl_gpio...
摘要: 15.1概述 在上一节课中我们学习了gpio_leds设备树驱动,认识了设备树的语法规范、修改方法,执行顺序,在这节课中我们将进一步学习设备树驱动,gpio_keys设备树驱动。15.2 gpio_keys设备树驱动1首先来查看驱动源码 ... 15.1概述 在上一节课中我们学习了gpio_leds设备树驱动,认识了设备树的语法规范、修改方法,执行顺...
3.1 gpio_keys_get_devtree_pdata 函数解析dts文件 这个文件解析的dts 有两种方式,一种是直接传入irq的,一种是只传入gpio口的。 我们的这个项目,就只传入了gpio口。 3.2 gpio_keys_setup_key 函数 这个函数用来设置gpio口的中断的,直接看代码会比较清楚。
gpio_keys_get_devtree_pdata(struct device *dev) { struct device_node *node, *pp; struct gpio_keys_platform_data *pdata; struct gpio_keys_button *button; int error; int nbuttons; int i; node = dev->of_node; if (!node) {
xlnx,gpio2-width = <0x20>; xlnx,interrupt-present = <0x0>; xlnx,is-dual = <0x0>; xlnx,tri-default = <0xffffffff>; xlnx,tri-default-2 = <0xffffffff>; }; }; ... keypad { compatible = "gpio-keys"; #address-cells = <1>; ...
63.button->desc ? button->desc : "gpio_keys", 64.pdev); 65.if (error) { 66.pr_err("gpio-keys: Unable to claim irq %d; error %d\n", 67.irq, error); 68.gpio_free(button->gpio); 69.goto fail; 70.} 71. 72.if (button->wakeup) ...