生活随笔
收集整理的這篇文章主要介紹了
高通 8x12 添加 TP和按键
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 .在tp的驅動文件中添加以下代碼實現按鍵功能
[plain]?view plaincopy
static?ssize_t??ft5x06_virtual_keys_register(struct?kobject?*kobj,???????????????????struct?kobj_attribute?*attr,???????????????????char?*buf)??{??????return?snprintf(buf,?200,??????__stringify(EV_KEY)?":"?__stringify(KEY_HOME)??":120:840:80:60"??????":"?__stringify(EV_KEY)?":"?__stringify(KEY_BACK)???":360:840:80:60"??????"\n");??}????static?struct?kobj_attribute?ft5x06_virtual_keys_attr?=?{??????.attr?=?{??????????.name?=?"virtualkeys.ft5x06_ts",??????????.mode?=?S_IRUGO,??????},??????.show?=?&ft5x06_virtual_keys_register,??};????static?struct?attribute?*ft5x06_virtual_key_properties_attrs[]?=?{??????&ft5x06_virtual_keys_attr.attr,??????NULL,??};????static?struct?attribute_group?ft5x06_virtual_key_properties_attr_group?=?{??????.attrs?=?ft5x06_virtual_key_properties_attrs,??};????struct?kobject?*ft5x06_virtual_key_properties_kobj;??????static?void?__init?ft5x06_touchpad_setup(void)??{??????int?rc;??????ft5x06_virtual_key_properties_kobj?=??????????????kobject_create_and_add("board_properties",?NULL);??????????????if?(ft5x06_virtual_key_properties_kobj)??????????rc?=?sysfs_create_group(ft5x06_virtual_key_properties_kobj,??????????????????&ft5x06_virtual_key_properties_attr_group);????????if?(!ft5x06_virtual_key_properties_kobj?||?rc)??????????pr_err("%s:?failed?to?create?board_properties\n",?__func__);??????????}??另外需要在-mtp.dtsi文件中配置TP的參數和gen_vkeys
[plain]?view plaincopy
i2c@f9923000{??????focaltech@38{??????????compatible?=?"focaltech,5x06";??????????reg?=?<0x38>;??????????interrupt-parent?=?<&msmgpio>;??????????interrupts?=?<1?0x2>;??????????vdd-supply?=?<&pm8110_l19>;??????????vcc_i2c-supply?=?<&pm8110_l14>;??????????focaltech,family-id?=?<0x06>;??????????focaltech,reset-gpio?=?<&msmgpio?0?0x00>;??????????focaltech,irq-gpio?=?<&msmgpio?1?0x00>;??????????focaltech,display-coords?=?<0?0?480?854>;??????????focaltech,panel-coords?=?<0?0?480?946>;??????????focaltech,button-map=?<139?102?158>;??????????focaltech,no-force-update;??????????focaltech,i2c-pull-up;??
這里主要配置touch panel的按鍵:
[plain]?view plaincopy
gen-vkeys?{??????????compatible?=?"qcom,gen-vkeys";??????????label?=?"ft5x06_ts";??????????qcom,disp-maxx?=?<480>;??????????qcom,disp-maxy?=?<800>;??????????qcom,panel-maxx?=?<481>;??????????qcom,panel-maxy?=?<940>;??????????qcom,key-codes?=?<102?158?>;??//按鍵碼,TP需要幾個就寫幾個??????????qcom,y-offset?=?<0>;??????};??
key_codes究竟是多少,在頭文件kernel/include/linux/input.h 中定義,解析這些參數的函數是在driver/input/touchscreen/gen_vkeys.c,其中用的的函數還是這個
vkey_obj = kobject_create_and_add("board_properties", NULL);
if (!vkey_obj) {
dev_err(&pdev->dev, "unable to create kobject\n");
return -ENOMEM;
}
ret = sysfs_create_group(vkey_obj, &vkey_grp);
if (ret) {
dev_err(&pdev->dev, "failed to create attributes\n");
goto destroy_kobj;
}
這個實現的方法跟8x25的基本一樣,只不過這里注冊成了驅動。記住如果使能這個功能的話,在配置文件中CONFIG_TOUCHSCREEN_GEN_VKEYS=y
下面是成功添加后的截圖
頂
0踩
0
總結
以上是生活随笔為你收集整理的高通 8x12 添加 TP和按键的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。