驱动源码路径:

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>; #对应引脚和模式,驱动方式
        };
    };
};