Android 5.1高通方案增加​​GPIO按鍵

出處: http://blog.csdn.net/tdstds/article/details/50920443

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了。

未經允許不得轉載:GoMCU » Android 5.1高通方案增加​​GPIO按鍵