记一次gpio按键驱动调试经历

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

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>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值