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 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 = %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)))

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪的名字叫麦兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值