1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MT6761 Android P平台TP按键无效问题分析及解决方法

MT6761 Android P平台TP按键无效问题分析及解决方法

时间:2022-11-14 13:32:06

相关推荐

MT6761 Android P平台TP按键无效问题分析及解决方法

MT6761 Android P平台的一项目,需要调试TP按键,按照调试经验很快就找到需要修改的地方了,如下:

dts文件内修改

use-tpd-button = <1>;

tpd-key-num = <1>;

tpd-key-local= <172 158 139 0>;

tpd-key-dim-local = <4000 4000 50 50230

883 100 40 370 883 100 40 0 0 0 0>;

TP driver文件内修改:

init函数添加:

if (tpd_dts_data.use_tpd_button)

{

tpd_button_setting(tpd_dts_data.tpd_key_num, tpd_dts_data.tpd_key_local,

tpd_dts_data.tpd_key_dim_local);

}

报点函数里添加report key的代码,一切就绪,编译下载验证,发现TP按键无功能。

添加关键log,抓log分析,最终发现是MTK挖的坑,以下请大家细品:

mtk-tpd.c文件的void tpd_get_dts_info(void)函数:

{

node1 = of_find_matching_node(node1, touch_of_match);

if (node1) {

of_property_read_u32(node1,

“use-tpd-button”, &tpd_dts_data.use_tpd_button);

pr_debug("[tpd]use-tpd-button = %d\n",

tpd_dts_data.use_tpd_button);

if (tpd_dts_data.use_tpd_button) {

if (of_property_read_u32_array(node1,

“tpd-key-dim-local”,

key_dim_local, ARRAY_SIZE(key_dim_local))) {

memcpy(tpd_dts_data.tpd_key_dim_local,

key_dim_local, sizeof(key_dim_local));

for (i = 0; i < 4; i++) {

pr_debug("[tpd]key[%d].key_x = %d\n", i,

tpd_dts_data

.tpd_key_dim_local[i]

.key_x);

pr_debug("[tpd]key[%d].key_y = %d\n", i,

tpd_dts_data

.tpd_key_dim_local[i]

.key_y);

pr_debug("[tpd]key[%d].key_W = %d\n", i,

tpd_dts_data

.tpd_key_dim_local[i]

.key_width);

pr_debug("[tpd]key[%d].key_H = %d\n", i,

tpd_dts_data

.tpd_key_dim_local[i]

.key_height);

}

}

}

}

解释:

of_property_read_u32_array(node1,“tpd-key-dim-local”,key_dim_local, ARRAY_SIZE(key_dim_local)))

这个函数当正确获取值时,返回的为0,否则为非0值,所以if()语句下的 memcpy(tpd_dts_data.tpd_key_dim_local,key_dim_local, sizeof(key_dim_local))没有执行,tpd_dts_data.tpd_key_dim_local[][]数组的值并不是我们设定的期望值。

TP按键无功能的原因找到了,修改方法如下:

if (!of_property_read_u32_array(node1,“tpd-key-dim-local”,key_dim_local, ARRAY_SIZE(key_dim_local)))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。