(开发记录)海思gt911触摸屏幕移植 (安卓驱动->DV300)
4896 打赏
SONG 2020-08-27 10:20:57

声明:因为在开发过程中不同设备会搭载同一芯片,不同设备会有各种不同的硬件设备,因此本文移植的gt911驱动也是以动态加载的方式载入内核的。


gt9xx是一款很常用的触摸屏ic,网上对它在安卓和stm32平台上的使用调试教程较多,但是在海思平台的调试教程较少,下面记录一些我自己移植gt9xx安卓驱动碰到的问题。


开始调试时给到的资料有一份gt9xx的安卓驱动代码,一份移植说明书,一份gt9xx的数据手册(网上都有)。


浏览下代码,使用i2c_add_driver函数添加一个i2c驱动,通过probe函数初始化屏幕,中断,工作队列等等,但是probe函数需要在设备和驱动名字匹配时才会调用,通过查阅驱动移植说明书:
移植说明书
因为我没有改动kernel的代码,所以这边是通过i2c_new_device函数添加i2c设备,注意设备名称要和驱动一样。


#ifdef CONFIG_ARCH_HISI
static struct i2c_board_info hi_info = {
I2C_BOARD_INFO("Goodix-TS", 0x5d),
};
static struct i2c_client *gt_client;
#endif
...
#ifdef CONFIG_ARCH_HISI
struct i2c_adapter *adapter;

adapter = i2c_get_adapter(tp_param[2]);
if (!adapter) {
GTP_ERROR("%s : can't get i2c adapter %d\n", __func__, __LINE__);
}

gt_client = i2c_new_device(adapter, &hi_info);
if (!gt_client) {
GTP_ERROR("%s : i2c_new_device failed!\n", __func__);
}
gt_client->irq = 45;

i2c_put_adapter(adapter);
#endif
ret = i2c_add_driver(&goodix_ts_driver);

如果运气好的话,添加完上面的内容,根据硬件选择正确的复位、中断,i2c控制器(这些可以直接在gt9xx.h文件中配置,注意管脚复用),触摸屏应该就可以正常使用了。


然而,我在调试的时候遇到各种问题,下面做个记录,如果有人和我一样碰到这些问题,希望下面的内容能有帮助。


1.<linux/earlysuspend.h>头文件找不到,这个去网上查了好像是安卓的一种降低功耗的模块,直接用删掉,或者为了代码的美观用宏控制去掉,其他和该模块相关的地方都可以直接去掉。


#ifdef CONFIG_HAS_EARLYSUSPEND
#include <linux/earlysuspend.h>
#endif

2.各种没有见过的宏


安卓驱动的宏
这里按照#define定义的名称,结合代码看就是普通的定义复位、中断管脚序号,配置gpio口状态的操作,我这里把下面三个框的内容全删除,把第一个框内按照硬件原理图直接写上gpio口的序号。


3.gt9xx.h里面的CTP_CFG_GROUP配置,造成的问题:


  1)屏幕时而有中断,时而没有。


  2)屏幕只能点击一部分,点击左边和上边区域没有中断。


仔细阅读代码,在probe函数中有个gtp_init_panel(ts)函数,会从ic内部读取信息,打开GTP_DEBUG_ON就可以看到读取的硬件信息了,驱动会根据读取到的sensor_ID 号去选择对应的CTP_CFG_GROUP配置。


但是gt9xx有个固化配置,就是只有发送的配置信息大于芯片中保存的配置时才会使用你发送的CTP_CFG_GROUP配置(不是很懂为什么,但是真的很k eng)。所以这里要注意如果厂家给的CTP_CFG_GROUP配置信息的版本号小于芯片中保存的配置版本,那么CTP_CFG_GROUP配置就不会生效,就会产生各种问题,贴个图说明下:


CTP_CFG_GROUP配置


第一个就是配置版本号了(根据调试信息得出的),第二个和第三个框的是分辨率,我这边是800*1280,十六进制就是 0x320和0x500,可以直接在这里改,用来适配tslib。


在调试的时候就是因为ic中的配置版本比这个0x42大,一直有问题,总是点不到屏幕的左边和上边区域,后来把这个0x42改成0x65(好像比这个大就行),最后终于正常了.

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
评论
2个
时间排序
内容存在敏感词
    0 条记录 第 0 /
    相关专栏
    打赏作者
    易百纳技术社区
    SONG
    您的支持将鼓励我继续创作!
    打赏金额:
    ¥1 易百纳技术社区
    ¥5 易百纳技术社区
    ¥10 易百纳技术社区
    ¥50 易百纳技术社区
    ¥100 易百纳技术社区
    支付方式:
    微信支付
    支付宝支付
    易百纳技术社区 微信支付
    易百纳技术社区
    打赏成功!

    感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

    举报反馈

    举报类型

    • 内容涉黄/赌/毒
    • 内容侵权/抄袭
    • 政治相关
    • 涉嫌广告
    • 侮辱谩骂
    • 其他

    详细说明

    审核成功

    发布时间设置
    发布时间:
    是否关联周任务-专栏模块

    审核失败

    失败原因
    备注
    Loading...
    易百纳技术社区
    确定要删除此文章、专栏、评论吗?
    确定
    取消
    易百纳技术社区
    易百纳技术社区
    在专栏模块发布专栏,可获得其他E友的打赏
    易百纳技术社区
    回答悬赏问答,被题主采纳后即可获得悬赏金
    易百纳技术社区
    在上传资料时,有价值的资料可设置为付费资源
    易百纳技术社区
    达到一定金额,收益即可提现~
    收益也可用来充值ebc,下载资料、兑换礼品更容易
    易百纳技术社区
    活动规则
    • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
    • 2.发布的专栏与资料需要与平台的板块有相关性,禁止注水,专栏/资料任务以审核通过的篇数为准,专栏需为原创文章且首次在社区发布
    • 3.任务完成后,现金奖励直接打款到微信账户;EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换
    易百纳技术社区
    升级提醒
    升级

    恭喜您的社区称号由 升级为 “社区游民”

    同时为了感谢您对社区的支持,我们将送出xxx礼品一份, 记得领取哦~

    升级提醒
    易百纳技术社区