声明:因为在开发过程中不同设备会搭载同一芯片,不同设备会有各种不同的硬件设备,因此本文移植的gt911驱动也是以动态加载的方式载入内核的。
gt9xx是一款很常用的触摸屏ic,网上对它在安卓和stm32平台上的使用调试教程较多,但是在海思平台的调试教程较少,下面记录一些我自己移植gt9xx安卓驱动碰到的问题。
开始调试时给到的资料有一份gt9xx的安卓驱动代码,一份移植说明书,一份gt9xx的数据手册(网上都有)。
浏览下代码,使用i2c_add_driver函数添加一个i2c驱动,通过probe函数初始化屏幕,中断,工作队列等等,但是probe函数需要在设备和驱动名字匹配时才会调用,通过查阅驱动移植说明书:
![e62b394c0cc5c49557d1be44182f296f.png](https://i-blog.csdnimg.cn/blog_migrate/b49854a751e47df0cba1f6ebaffdcf6c.jpeg)
因为我没有改动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_