当前位置: 首页 > news >正文

多个wordpress网站合并成品源码1688网站免费

多个wordpress网站合并,成品源码1688网站免费,一套vi设计多少钱,成都网站建设服务商20250731在荣品的PRO-RK3566开发板的Android13下调通敦泰的FT8206触控芯片的10点触控功能 20250731在荣品的PRO-RK3566开发板的Android13下解决敦泰的FT8206触控芯片的只有4点触控功能 2025/7/31 15:25缘起:敦泰的FT8206触控芯片最大只支持4点触控,再加一…

20250731在荣品的PRO-RK3566开发板的Android13下调通敦泰的FT8206触控芯片的10点触控功能
20250731在荣品的PRO-RK3566开发板的Android13下解决敦泰的FT8206触控芯片的只有4点触控功能
2025/7/31 15:25


缘起:敦泰的FT8206触控芯片最大只支持4点触控,再加一根手指到5点就会出现Android13没有响应的情况!

看一下驱动中有没有限制点数
正常是10点的

我也看见了。FT8206支持10点 144HZ。但是 所使用 TP最高支持多少呢?


最大是可以支持10点的
这个有DTS设置吗?
或者你直接读02寄存器,读一下多指触摸时的点数


你这个好像是没有点数设置的
参考的代码是有点数设置

10指,X,Y坐标沿着对角线调换过来了



缘起:本文只分析I2C的挂载问题。

1、敦泰FT的代理商说所有的FT的驱动程序都是兼容的,不同的就是不是对应的驱动就不能升级upgrade了。
反正我也不需要升级。直接使用以前调通的FT5X06的驱动程序了。
Y:\Android13.0\kernel-5.10\drivers\input\touchscreen\edt-ft5x06.c
原厂的edt-ft5x06.c不能用的。我用的是 飞凌魔改过的版本。
DTS也直接拷贝的飞凌的。

2、荣品的PRO-RK3566开发板的Android13的坐标原点在左上角。
但是TP得坐标原点是根据固件不同而异。
你需要在报点的地方进行处理,或者要求供应商/屏厂修改适合你的项目的固件并预烧录进去了。


如果你的TP/LCD屏的硬件接线正确,在Android13下使用i2cdetect扫描I2C1。
很容易得到0x38有设备,但是没有挂载驱动程序。

1、FT8206。使用 FT5X06的驱动程序。
2、I2C可以读了。请问 这些寄存器的值对不?
3、现在是 TP触摸没有反应?用示波器 点IRQ中断引脚吗?TP坏了?


Z:\Android13.0\kernel-5.10\drivers\input\touchscreen\edt-ft5x06.c

中断处理函数:
static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
{
struct edt_ft5x06_ts_data *tsdata = dev_id;
struct device *dev = &tsdata->client->dev;
u8 cmd;
u8 rdbuf[63];
int i, type, x, y, id;
int offset, tplen, datalen, crclen;
int error;

printk("**** wyb 2024/4/3 19:57 %s %s %d\n", __FILE__, __FUNCTION__, __LINE__);

    switch (tsdata->version) {
case EDT_M06:
cmd = 0xf9; /* tell the controller to send touch data */
offset = 5; /* where the actual touch data starts */
tplen = 4;  /* data comes in so called frames */
crclen = 1; /* length of the crc data */
break;

    case EDT_M09:
case EDT_M12:
case EV_FT:
case GENERIC_FT:
cmd = 0x0;
offset = 3;
tplen = 6;
crclen = 0;
break;

    default:
goto out;
}

    memset(rdbuf, 0, sizeof(rdbuf));
datalen = tplen * tsdata->max_support_points + offset + crclen;

    error = edt_ft5x06_ts_readwrite(tsdata->client,
sizeof(cmd), &cmd,
datalen, rdbuf);
if (error) {
dev_err_ratelimited(dev, "Unable to fetch data, error: %d\n",
error);
goto out;
}

    /* M09/M12 does not send header or CRC */
if (tsdata->version == EDT_M06) {
if (rdbuf[0] != 0xaa || rdbuf[1] != 0xaa ||
rdbuf[2] != datalen) {
dev_err_ratelimited(dev,
"Unexpected header: %02x%02x%02x!\n",
rdbuf[0], rdbuf[1], rdbuf[2]);
goto out;
}

        if (!edt_ft5x06_ts_check_crc(tsdata, rdbuf, datalen))
goto out;
}

    for (i = 0; i < tsdata->max_support_points; i++) {
u8 *buf = &rdbuf[i * tplen + offset];

        type = buf[0] >> 6;
/* ignore Reserved events */
if (type == TOUCH_EVENT_RESERVED)
continue;

        /* M06 sometimes sends bogus coordinates in TOUCH_DOWN */
if (tsdata->version == EDT_M06 && type == TOUCH_EVENT_DOWN)
continue;

        x = get_unaligned_be16(buf) & 0x0fff;
y = get_unaligned_be16(buf + 2) & 0x0fff;
/* The FT5x26 send the y coordinate first */
if (tsdata->version == EV_FT)
swap(x, y);

        id = (buf[2] >> 4) & 0x0f;

        input_mt_slot(tsdata->input, id);
if (input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER,
type != TOUCH_EVENT_UP))
{
//touchscreen_report_pos(tsdata->input, &tsdata->prop, x, y, true);
//printk("**** wyb 2024/4/3 19:57 %s %s %d x=%d, y=%d, x2=%d, y2=%d\n", __FILE__, __FUNCTION__, __LINE__, x, y, y, 1200-x);

            // system rotation : Counterclockwise rotation 90
touchscreen_report_pos(tsdata->input, &tsdata->prop, 1200-x, 1920-y, true);
//printk("**** wyb 2024/4/3 19:57 %s %s %d x=%d, y=%d, x2=%d, y2=%d\n", __FILE__, __FUNCTION__, __LINE__, x, y, 1200-x, 1920-y);
printk("**** wyb 2025/7/31 10:29 %s %s %d x=%d, y=%d, x2=%d, y2=%d i=%d, tsdata->max_support_points=%d\n", __FILE__, __FUNCTION__, __LINE__, x, y, 1200-x, 1920-y, i, tsdata->max_support_points);


//touchscreen_report_pos(tsdata->input, &tsdata->prop, 1920-y, 1200-x, true);
//printk("**** wyb 2024/4/3 19:57 %s %s %d x=%d, y=%d, x2=%d, y2=%d\n", __FILE__, __FUNCTION__, __LINE__, x, y, 1920-y, 1200-x);

//touchscreen_report_pos(tsdata->input, &tsdata->prop, 1200-x, 1920-y, true);
//printk("**** wyb 2024/4/3 19:57 %s %s %d x=%d, y=%d, x2=%d, y2=%d\n", __FILE__, __FUNCTION__, __LINE__, x, y, 1200-x, 1920-y);

//touchscreen_report_pos(tsdata->input, &tsdata->prop, 1920-x, 1200-y, true);
//touchscreen_report_pos(tsdata->input, &tsdata->prop, 1920-y, 1200-x, true);

//touchscreen_report_pos(tsdata->input, &tsdata->prop, y, 1200-x, true);
//printk("**** wyb 2024/4/3 19:57 %s %s %d x=%d, y=%d, x2=%d, y2=%d\n", __FILE__, __FUNCTION__, __LINE__, x, y, y, 1200-x);
}
}

    input_mt_report_pointer_emulation(tsdata->input, true);
input_sync(tsdata->input);

out:
return IRQ_HANDLED;
}


static SIMPLE_DEV_PM_OPS(edt_ft5x06_ts_pm_ops,
edt_ft5x06_ts_suspend, edt_ft5x06_ts_resume);

static const struct edt_i2c_chip_data edt_ft5x06_data = {
.max_support_points = 5,
};

static const struct edt_i2c_chip_data edt_ft5506_data = {
.max_support_points = 10,
};

static const struct edt_i2c_chip_data edt_ft6236_data = {
.max_support_points = 2,
};

static const struct i2c_device_id edt_ft5x06_ts_id[] = {
{ .name = "edt-ft5x06", .driver_data = (long)&edt_ft5x06_data },
{ .name = "edt-ft5506", .driver_data = (long)&edt_ft5506_data },
{ .name = "ev-ft5726", .driver_data = (long)&edt_ft5506_data },
/* Note no edt- prefix for compatibility with the ft6236.c driver */
{ .name = "ft6236", .driver_data = (long)&edt_ft6236_data },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(i2c, edt_ft5x06_ts_id);

修改为:

static SIMPLE_DEV_PM_OPS(edt_ft5x06_ts_pm_ops,
edt_ft5x06_ts_suspend, edt_ft5x06_ts_resume);

static const struct edt_i2c_chip_data edt_ft5x06_data = {
//.max_support_points = 5,
.max_support_points = 10,
};

static const struct edt_i2c_chip_data edt_ft5506_data = {
.max_support_points = 10,
};

static const struct edt_i2c_chip_data edt_ft6236_data = {
//.max_support_points = 2,
.max_support_points = 10,
};


static const struct i2c_device_id edt_ft5x06_ts_id[] = {
{ .name = "edt-ft5x06", .driver_data = (long)&edt_ft5x06_data },
{ .name = "edt-ft5506", .driver_data = (long)&edt_ft5506_data },
{ .name = "ev-ft5726", .driver_data = (long)&edt_ft5506_data },
/* Note no edt- prefix for compatibility with the ft6236.c driver */
{ .name = "ft6236", .driver_data = (long)&edt_ft6236_data },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(i2c, edt_ft5x06_ts_id);


Android13的开发者选项:默认自带的触摸屏测点工具:

APK测试触摸屏报点:

http://www.dtcms.com/a/430784.html

相关文章:

  • macOS/Linux ClaudeCode 安装指南及 Claude Sonnet 4.5 介绍
  • [创业之路-640]:通信行业供应链 - 通信网的发展趋势:IP化统一 、云网融合 、算网协同 、FMC(固定移动融合)、空天地一体化
  • IP 地址管理:IPv4 和 IPv6 地址规划、子网划分与 CIDR
  • router-id <ip-address> 概念及题目
  • Linux应用(6)——网络通信/TCP/IP
  • tcpdump总结
  • 小商品网站建设注册一个公司一年需要多少钱
  • 新奇特:神经网络的自洁之道,学会出淤泥而不染
  • tkinter+pymupdf开发的简单pdf查看编辑器
  • 给公司做网站和公众号需要多少钱如何注册网站名称
  • LeetCode 1039.多边形三角剖分的最低得分:记忆化搜索(深度优先搜索)
  • C# 循环
  • leetcode 22 括号生成
  • 从0死磕全栈之Next.js App Router 入门实战:5 分钟搭建一个待办事项(Todo List)应用
  • Nature 正刊:美国麻省理工学院团队开发了多模态机器人平台加速多元素催化剂的发现与优化
  • [Windows] 【2025.09.30更新】PotPlayer_ 64位Public版_v250909(1.7.22619)_精简绿化版
  • 【Java ArrayList】底层方法的自我实现
  • 安卓基础组件015--textinput
  • YDWE编辑器系列教程三:触发编辑器
  • [hpatch]差分算法学习笔记 -- lite解压
  • 【langgraph】conda创建3.13环境并运行langgraph dev
  • 免费企业建站模板wordpress媒体库一直加载
  • 自己建设公司网站免费建站网站 seo
  • web开发,在线%校园,论坛,社交管理%系统,基于html,css,python,django,mysql
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的引流爆款设计策略研究
  • Stable Diffusion里面Cross-Attention设计:为啥Q来自图像/噪声,K和V来自文本
  • 镇江网站关键字优化建立网站站点的过程中正确的是
  • 深度学习第九章 卷积神经网络
  • 【数据结构】堆、计数、桶、基数排序的实现
  • 【数据结构】数据结构秘籍:如何衡量“查找”的快慢?ASL是关键!