Linux有标准的gpio按键驱动
sprd平台只需配置下dts,在mt6761平台(gpio配置成gpio模式)也验证了该驱动。
gpio-keys {
key-volumedown {
label = "Volume Down Key";
linux,code = <KEY_VOLUMEDOWN>;
gpios = <&ap_gpio 124 GPIO_ACTIVE_LOW>;
debounce-interval = <2>;
wakeup-source;
}
};
在mt6580也按相同的方式配置后,dws中将gpio配置成irq模式,发现触发不了按键中断。cat pin查下gpio模式,发现gpio不是irq模式,那需要改造gpio_keys.c文件了。加入如下修改
gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "up_cfg","down_cfg";
pinctrl-0 = <&up_cfg>;
pinctrl-1 = <&down_cfg>;
key-volumeup {
label = "Volume Up Key";
linux,code = <115>;
debounce-interval = <5>;
gpios = <&pio 67 1>;
};
key-volumedown {
label = "Volume Down Key";
linux,code = <114>;
debounce-interval = <5>;
gpios = <&pio 64 1>

本文详细介绍了在Linux环境下,针对sprd和mt6761平台如何配置gpio按键驱动,以及在mt6580平台上遇到的按键中断触发问题。通过修改dts配置和gpio_keys.c文件,实现了按键的中断模式,并解决了硬件去抖问题。
最低0.47元/天 解锁文章
971

被折叠的 条评论
为什么被折叠?



