gpio-key驱动定义了几个关键的数据结构,用于描述按键的基本配置参数、控制逻辑配置参数以及平台配置参数。这些数据结构包括: gpio_keys_button:描述按键/按钮的基本配置参数。 gpio_button_data:描述按键/按钮的控制逻辑配置参数。 gpio_keys_platform_data:描述按键/按钮的平台配置参数。 gpio_keys_drvdata:作为platform...
gpio_keys_test {compatible = "gpio-keys";#address-cells = <1>;#size-cells = <0>;autorepeat;powerkey {label = "power key";linux,code = <116>;gpios = <&gpio0 GPIO_A5 GPIO_ACTIVE_LOW>;gpio-key,wakeup;debounce-interval = <5>;};}; 基本数据结构 /* key/button的基本配置参数 */st...
gpio-keys{compatible="gpio-keys";status="okay";vol-down-key{gpios=<&pioPH51221>;linux,code=<114>;label="volume down";debounce-interval=<10>;wakeup-source=<0x1>;};vol-up-key{gpios=<&pioPH61221>;linux,code=<115>;label="volume up";debounce-interval=<10>;};}; • compatible:用...
https://gitee.com/weiqifa/gpio_key/blob/master/gpio_keys.c 1. 驱动代码流程,从probe处开始 刚开始的时候,我连dts文件都不会写,因为之前没有接触过这个驱动。然后看了gpio_keys_get_devtree_pdata函数,之后又看了内核代码下其他项目其他平台的dts文件,才知道怎么写这个驱动的dts文件。 实话说,这个驱动完成...
上面是probe函数的一些简要说明,probe顾名思义,就是探测到设备注册时,驱动完成的工作。 下面的函数是probe里面重要的gpio_keys_setup_key()函数 1staticint__devinit gpio_keys_setup_key(structplatform_device *pdev,2structgpio_button_data *bdata,3structgpio_keys_button *button)4{5constchar*desc = butt...
arch/arm64/boot/dts/amlogic/xxx.dts gpio key dts 配置 : 代码语言:javascript 代码运行次数:0 运行 AI代码解释 gpio_keypad{ compatible = "amlogic, gpio_keypad"; status = "disable"; scan_period = <20>; key_num = <2>; key_name = "mute","Alexa_wakeup"; key_code = <115 116>; key...
1 gpio 子系统引入 如果pinctrl子系统将一个 PIN 复用为 GPIO 的话,那么接下来要用到 gpio 子系统了。gpio 子系统顾名思义,就是用于初始化 GPIO 并且提供相应的 API 函数,比如设置 GPIO为输入输出,设置读取 GPIO 的值等。 gpio 子系统的主要目的就是方便驱动开发者使用 gpio,驱动开发者在设备树中添加 gpio ...
一. GPIO-KEY的实现原理 1. 设备树定义GPIO按键: vi arch/arm/boot/dts/imx6qdl-sabresd.dtsi: gpio-keys { compatible = "gpio-keys";/*名字非常关键, 找驱动就靠它来匹配了*/ pinctrl-names = "default"; pinctrl-0 = 2.匹配驱动: vi drivers/input/keyboard/gpio_keys.c: ...
首先,确保内核配置中已启用gpio-keys支持: ``` CONFIG_INPUT_GPIO_KEYS=y ``` 然后,通过设备树(DTS)文件描述GPIO键盘驱动: ```yaml gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&gpio_key_pins>; #address-cells = <1>; ...