本文档主要介绍了如何在TQ2440平台上的Linux系统中添加触摸屏功能。TQ2440是一款嵌入式处理器,文档详细地展示了在Linux内核2.6.35.3版本中进行触摸屏驱动的移植过程。主要涉及以下几个关键步骤和知识点:
1. **输入子系统配置**:
文档首先提到了需要在`drivers/input/touchscreen`目录下工作,这里包含了两个关键的源代码文件:`touchsmdk2440_ts.c` 和 `vismdk2440_ts.c`。这些文件是用于实现S3C2410系列触摸屏控制器(如S3C2410TS)的驱动程序。
2. **头文件引用**:
包含了Linux内核的相关头文件,如`errno.h`, `kernel.h`, `module.h`, `slab.h`, `input.h`, `init.h`, `serio.h`, `delay.h`, `platform_device.h`, `clk.h`, `io.h`, `irq.h`, 以及针对特定硬件的平台注册头文件和GPIO寄存器头文件。这些头文件提供了编译时所需的各种功能声明和宏定义。
3. **宏定义**:
文档中的`WAIT4INT`和`AUTOPST`宏定义用于控制触摸屏控制器的不同操作模式,比如等待中断(可能用于处理来自触摸屏的数据)和自动预置(可能用于设置传感器的默认工作状态)。
4. **设备变量**:
定义了一些全局变量,如`dev`(输入设备结构体指针)、`xp`和`yp`(用于存储X和Y坐标),以及`count`(可能用于计数触摸事件)。
5. **驱动函数**:
可能包括初始化函数、中断处理函数以及设备注册函数。这些函数负责设置触摸屏的中断处理、数据读取、设备注册等核心功能,确保触摸屏设备在Linux内核中正常工作。
6. **同步机制**:
提到了`DECLARE_MUTEX_ADC_LOCK`,这可能是对ADC(模拟数字转换器)访问的互斥锁,用于防止多个任务同时访问敏感的硬件资源。
7. **模块加载和卸载**:
驱动通常会作为模块加载到内核,这允许动态加载和卸载。因此,可能还包括了`module_init`和`module_exit`函数,用于在模块加载和卸载时执行必要的初始化和清理工作。
整个文档围绕着如何将一个特定的S3C2410系列触摸屏适配到Linux内核的输入子系统,并提供了必要的驱动代码结构。这对于想要在TQ2440平台集成触摸屏功能的开发者来说,是一份宝贵的参考资料。