gpio-keys:drivers/input/keyboard/gpio_keys.c用于处理GPIO线产生的中断,例如按键事件,同时支持去抖动。 gpio-keys-polled:drivers/input/keyboard/gpio_keys_polled.c用于轮询GPIO线状态,当GPIO线无法产生中断时使用,需要通过定时器进行轮询。 gpio_mouse:drivers/input/mouse/gpio_mouse.c用于通过GPIO提供具有最多三...
1>首先来查看驱动源码,在/mnt/workspace/osrc-lab/source/drivers/input/keyboard/gpio_keys_polled.c,我们可以看到驱动的源码并不大,大家可以自己仔细阅读,对开发驱动会有很大的好处。 2> 在这个驱动源码里我们可以看到设备树的驱动就是根据“gpio-keys-polled“进行匹配的,当我们设备树里的compatible对应的名字和驱动...
同理WRTNODE2P.dts文件中将GPIO#5注册为名为"reset"的KEY,通过调试状态查看KEY值,hi 表示高电平,lo 表示低电平。 gpio-keys-polled { compatible = "gpio-keys-polled"; #address-cells = <1>; #size-cells = <0>; poll-interval = <20>; reset { label = "reset"; gpios = <&gpio0 5 1>; ...
Dev: input0, Type: 0, Code: 0, Value: 0[ 0.386999] evbug: Connected device: input0 (gpio-keys0 at gpio-keys-polled/input0)[ 0.394686] evbug: Event. Dev: input0, Type: 1, Code: 304, Value: 0[ 0.400939] evbug: Event. Dev: input0, Type: 0, Code: 0, Value: 0[ 0.410306] ...
└─>Polled GPIO buttons 图3-2: linux4.4/4.9 轮询按键配置图 3.1.2 普通GPIO 采用中断方式 跟采用poll 方式一样,也需要完成如下步骤: 修改设备树文件 可见普通gpio 采用poll 方式,不一样的是这里gpio 采用中断的方式。 gpio-keys {
确认gpio_keys_polled.c 是否编译进系统,在tina 目录下执行make kernel_menuconfig,需要将Polled GPIO buttons 选成“[*]”。 代码语言:javascript 复制 Device Drivers └─>Input device support └─>Keyboards └─>PolledGPIObuttons 图3-2: linux4.4/4.9 轮询按键配置图 ...
• gpios:GPIO 口配置。 • linux,code:这个按键对应的input 键值。 • label:单个按键对应的标签。 • debounce-interval:消抖时间,单位为us。 • wakeup-source:是否作为唤醒源,配置了这个项的按键可以作为唤醒源唤醒系统。 2. 确认驱动是否被选中 确认gpio_keys_polled.c 是否编译进系统,在tina 目录...
└─>Polled GPIO buttons 复制代码 3.2 普通GPIO 采用中断方式 1. 修改设备树文件 gpio-keys { comp...
gpio-keys-polled { compatible = "gpio-keys-polled"; poll-interval = <20>; button { label = "power"; linux,code = <KEY_POWER>; gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; }; }; leds { compatible = "gpio-leds"; led-system { label = "system-status"; color = <LED_COLOR...
实现了KEY device的注册。此函数调用后,会创建platform类型的设备,并和gpio-keys-polled驱动(gpio-button-hotplug.c )实现了绑定。 B. 当按键时,则触发button_hotplug_event函数(gpio-button-hotplug.c):调用button_hotplug_create_event产生uevent事件,调用button_hotplug_fill_even填充事件(JSON格式),并最终调用butto...