概述
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 50 230
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 = %dn",
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 = %dn", i,
tpd_dts_data
.tpd_key_dim_local[i]
.key_x);
pr_debug("[tpd]key[%d].key_y = %dn", i,
tpd_dts_data
.tpd_key_dim_local[i]
.key_y);
pr_debug("[tpd]key[%d].key_W = %dn", i,
tpd_dts_data
.tpd_key_dim_local[i]
.key_width);
pr_debug("[tpd]key[%d].key_H = %dn", 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)))
最后
以上就是合适手套为你收集整理的MT6761 Android P平台TP按键无效问题分析及解决方法的全部内容,希望文章能够帮你解决MT6761 Android P平台TP按键无效问题分析及解决方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复