Goodix电容触摸屏驱动在210 Android平台的实现

需积分: 10 19 下载量 146 浏览量 更新于2024-09-13 收藏 124KB PDF 举报
"210+android平台电容触摸屏驱动.pdf" 在Android平台上,电容触摸屏的驱动设计是至关重要的,因为它直接影响到用户的交互体验。这篇文档详细介绍了基于210开发平台的Goodix ICG801电容触摸屏驱动的实现。Goodix ICG801是一款支持五点触摸的驱动IC,它利用Linux操作系统中的多种子系统模型进行高效运作。 首先,硬件接口部分,电容触摸屏通过I2C协议与主控芯片通信,此外还需要一个复位口(CAP_WAKE)和一个中断口(CAP_INT)。在210开发平台中,CAP_WAKE映射为GPJ2_6,CAP_INT对应于EINT8,而I2C通信则使用通道1。这种硬件配置使得触摸数据能够准确、实时地被采集。 驱动代码主要位于`kernel/drivers/input/touchscreen/goodix_touch.c`文件中。在驱动加载时,会调用`goodix_ts_init`函数进行初始化。这个函数的主要任务包括设置GPIO(通用输入/输出)以控制触摸屏的工作状态,注册平台设备以及注册平台驱动。 在`goodix_ts_init`函数中,`have_cap_touchscreen`全局变量用于防止同时加载多个电容触摸屏驱动。初始化GPIO的步骤是为了确保电容屏在启动后能正常工作,这包括设置GPIO的拉低状态和功能模式。例如,通过`s3c_gpio_setpull`和`s3c_gpio_cfgpin`函数配置GPIO的上拉电阻和功能模式,然后通过`gpio_set_value`设置GPIO的初始值,等待一段时间后,设备进入工作状态。 注册平台设备和平台驱动是通过`platform_device_register`和`platform_driver_register`函数完成的。这两个函数分别用于注册设备对象和驱动对象,使得内核可以识别并管理该触摸屏设备。如果注册过程中出现错误,函数会打印相应的错误信息。 电容触摸屏驱动的其他关键组件包括: 1. **I2C模型**:驱动通过I2C子系统与Goodix ICG801通信,发送命令和接收触摸事件。 2. **输入子系统模型**:驱动会注册为Linux输入子系统的设备,这样它可以处理来自触摸屏的输入事件,并将它们转换为可理解的用户输入。 3. **定时器模型**:用于定期轮询或在特定时间间隔内读取触摸屏状态,以确保连续和及时的触摸响应。 4. **工作队列模型**:处理与触摸事件相关的异步操作,确保这些操作不会阻塞主线程,提高系统的响应性。 这个文档深入解析了210开发平台上的Android电容触摸屏驱动的架构和实现细节,对理解Linux驱动开发和Android系统如何与硬件交互有极大的帮助。通过这种方式,开发者可以更好地定制和优化设备的触摸体验。