Android 5.1高通方案增加GPIO按鍵

Android 5.1高通方案增加GPIO按鍵

218人閱讀 評論(0) 收藏 舉報
分類:

AndroidLinux 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了。
發佈了52 篇原創文章 · 獲贊 19 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章