驱动源码路径:
drivers/input/keyboard/gpio_keys.c
文档路径:
Documentation/devicetree/bindings/input/gpio-keys.yaml
设备树配置:
gpio-keys {
compatible = "gpio-keys"; // 绑定内核 drivers/input/keyboard/gpio_keys.c
pinctrl-names = "default"; // 使用 default 状态的 pinmux 配置
pinctrl-0 = <&soc_gpio_bell>; // 引用下面的 pinmux 定义
bell-key {
label = "SOC_GPIO_BELL"; // 名字,debug 时能看到
linux,code = <KEY_POWER>; // 按键码 116,上报给 input 子系统
gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>; // GPIO0_A3,低电平触发
debounce-interval = <10>; // 10ms 消抖
wakeup-source; // 休眠时这个键能唤醒 SoC
};
};
&pinctrl {
bell { // 分组名,方便管理
soc_gpio_bell: soc-gpio-bell { // 标签 + 节点名
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; #对应引脚和模式,驱动方式
};
};
};