Android 5.1高通方案增加GPIO按键

Android的linux kernel本身有GPIO-keys驱动,代码结构和Android 4.x差异较大,在我的MSM8909上,测试表明增加GPIO按键需要如下操作:

(转载请注明原文网址 http://blog.csdn.net/tdstds/article/details/50920443


1. 平台相关配置文件msm8909-qrd-skue-项目名.dtsi文件中找到gpio_keys节,增加蓝字相关内容
    gpio_keys {
        compatible = "gpio-keys";
        input-name = "gpio-keys";
        pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
        pinctrl-0 = <&gpio_key_active>;
        pinctrl-1 = <&gpio_key_suspend>;

        ...
        key_xxx {
            label = "key_ptt";
            gpios = <&msm_gpio 36 0x1>;  // GPIO口一定要选带中断功能的引脚
            linux,input-type = <1>;
            linux,code = <77>;           // 这是驱动发出的键盘扫描码
            gpio-key,wakeup;
            debounce-interval = <15>;
        };

    };
    
2. 引脚相关配置文件msm8909-pinctrl-项目名.dtsi文件中找到tlmm_gpio_key节,增加或更改红字相关内容
        tlmm_gpio_key {
            qcom,pins = <&gp 90>, <&gp 91> , <&gp 36> ;
            qcom,pin-func = <0>;
            qcom,num-grp-pins = < 3 >;
            label = "tlmm_gpio_key";
            gpio_key_active: gpio_key_active {
                drive-strength = <2>;
                bias-pull-up;
            };
            gpio_key_suspend: gpio_key_suspend {
                drive-strength = <2>;
                bias-pull-up;
            };
        };

3. device\qcom\msm8909\gpio-keys.kl中增加键盘扫描码对应的键盘码
键盘码是Android系统收到底层驱动提交的扫描码后,向App发送的键盘码,比如本例
key 77    F7   
#扫描码对应给App的键盘码是F7,F7对应的值在frameworks\base\core\java\android\view\KeyEvent.java有现成定义: public static final int KEYCODE_F7 = 137 ;
另外,在root过的Android设备上直接更改system\usr\keylayout\gpio-keys.kl文件,可以为设备的按键直接更改功能。

总结:  Android 5.1.1中增加GPIO按键设计得还是很容易的,先选定带中断的GPIO口,设备树增加相关的项目,键盘映射文件增加相关键盘映射项就OK了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值