转载: linux2.6.37.4内核在XC2440开发板上移植(六)之触摸屏驱动移植

来自:http://blog.chinaunix.net/uid-22030783-id-3023527.html

内核自带s3c2440的触摸屏控制器驱动,属于input子系统的驱动,触摸屏驱动需要ADC驱动的支持,触摸屏驱动文件为:drivers/input/touchscreen/s3c2410_ts.c

在mach-xc2440.c文件中加入对触摸屏驱动的支持, 创建s3c2410_ts_mach_info平台数据

加入必要的头文件:

#include <plat/ts.h>

xc2440_devices[ ]结构体中加入:

&s3c_device_ts,

构建触摸屏设备的平台数据:

  1. /* TouchPanel */
  2. static struct s3c2410_ts_mach_info xc2440_ts_cfg __initdata = {
  3. .delay = 10000,
  4. .presc = 49,
  5. .oversampling_shift = 2,
  6. };

在xc2440_machine_init函数中加入:

s3c24xx_ts_set_platdata(&xc2440_ts_cfg);

修改s3c2410_ts.c文件:

在s3c2410ts_probe函数中,318行开始

  1. ts.input = input_dev;
  2. ts.input->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_SYN);
  3. ts.input->keybit[BITS_TO_LONGS(BTN_TOUCH)] = BIT(BTN_TOUCH);
  4. input_set_abs_params(ts.input, ABS_X, 0, 0x3FF, 0, 0);
  5. input_set_abs_params(ts.input, ABS_Y, 0, 0x3FF, 0, 0);
  6. input_set_abs_params(ts.input, ABS_PRESSURE, 0, 1, 0, 0);

touch_timer_fire函数中:

  1. input_report_abs(ts.input, ABS_X, ts.xp);
  2. input_report_abs(ts.input, ABS_Y, ts.yp);
  3. input_report_key(ts.input, BTN_TOUCH, 1);
  4. input_report_abs(ts.input, ABS_PRESSURE, 1);
  5. input_sync(ts.input);
  6. input_report_key(ts.input, BTN_TOUCH, 0);
  7. input_report_abs(ts.input, ABS_PRESSURE, 0);
  8. input_sync(ts.input);
  9. writel(WAIT4INT | INT_DOWN, ts.io + S3C2410_ADCTSC);

配置内核,支持触摸屏:

  1. Device Drivers --->
  2. Input devices support --->
  3. <*> Event interface
  4. [*] Touchscreens --->
  5. <*> Samsung S3C2410/generic touchscreen input driver

启动时输出:

samsung-ts s3c2440-ts: driver attached, registering input device

input: S3C24XX TouchScreen as /devices/virtual/input/input0

查看设备:

/dev/event0

说明: 

1. 内核自带的触摸屏驱动有BUG,需要修改才能正常使用,具体修改内容请参考XC2440的linux源码包中的s3c2410_ts.c文件。

2. Input子系统设备的设备名可能会随着内核中input设备的增加而改变,比如内核中加入一个按键驱动,那么触摸屏的设备名可能会从event0变为event1。后面移植的input子系统驱动也是同样的原理,这点请注意。

时间: 2024-08-24 09:47:47

转载: linux2.6.37.4内核在XC2440开发板上移植(六)之触摸屏驱动移植的相关文章

针对TQ2440开发板上linux2.6.30.4内核的交叉编译和驱动程序的移植

最近由于要做TQ2440(ARM9)开发板上的驱动实验,所以要在主机(ubuntu13.10)上针对前面的目标板上的系统内核进行交叉编译. 一,内核的交叉编译: 1.准备2.6.30.4版本的内核源码包,这个我使用的是天嵌公司提供的内核源码包linux-2.6.30.4_20121214.tar.bz2. 2.打开终端输入指令:tar vxjf linux-2.6.30.4_20121214.tar.bz2 解压内核源码包得到一个名字为opt的文件夹,然后输入指令:sudo mv opt /us

jz2440烧写内核和文件系统,将虚拟机上的文件通过nfs挂载到开发板上。

1.内核和文件系统要匹配好. 2.文件系统的格式,yaffs2,jaffs nand write.yaffs2... ...$(filesize) a.安装nfs 下面介绍具体操作:1.执行命令:sudo apt-get install nfs-kernel-server ;2.执行命令:mkdir /home/share/NFS 建立一个nfs服务的专有的文件夹;3.建立好文件夹后,接着执行命令:sudo vi /etc/exports 配置nfs;4.在文章的最后一行添加:/home/sha

【Android 系统开发】 编译 Android 系统 u-boot 内核 源码 并烧写到 OK-6410A 开发板上

博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813  本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 Android 光盘 下载地址 : http://pan.baidu.com/share/link?shareid=3662728609&uk=2754759285 ; -- 光盘所含内容 : Android 引导 u-boot 源码, Android 内核 源码, Android 系统源码, 交叉编

linux-2.6.32在mini2440开发板上移植(1)之移植Nand驱动并修改分区信息

编者:linux中的nand的移植由于使用了MTD技术,所以就没有想象的那么复杂了. 1 Linux-2.6.32.2 内核所支持的Nand Flash 类型 Linux2.6.32.2 已经自带了大部分Nand Flash 驱动, 在linux-2.6.32.2/drivers/mtd/nand/nand_ids.c 文件中,定义了所支持的各种Nand Flash 类型. 2 修改Nand Flash 分区表 但是系统默认的分区不是我们所需的,所以要自已修改,除此之外,还有Nand Flash

linux-2.6.32在mini2440开发板上移植之DM9000网卡移植

   移植DM9000 网卡驱动1 设备资源初始化      Linux-2..6.32.2 已经自带了完善的DM9000 网卡驱动驱动(源代码位置:linux-2.6.32.2/drivers/net/dm9000.c),它也是一个平台设备,因此在目标平台初始化代码中,只要填写好相应的结构表即可,具体步骤如下: 首先添加驱动所需的头文件dm9000.h:#include <linux/dm9000.h> 再定义DM9000 网卡设备的物理基地址,以便后面用到:/* DM9000AEP 10/

FL2440移植LINUX-3.4.2 -- 内核自带的触摸屏驱动移植

修改两个文件/arch/arm/mach-s3c2440/mach-smdk2440.c 和 linux-3.0-s3c2440/drivers/input/touchscreen/s3c2410_ts.c 1 /arch/arm/mach-s3c2440/mach-smdk2440.c 2 3 +#include <plat/ts.h> /*Add by guowenxue to support Touch screen, 2011.09.06*/ 4 5 +/*Touch Screen d

[转载]在iTOP-4412开发板上调试helloworld应用

本文转自迅为论坛:http://www.topeetboard.com 1.安装ADB驱动 在开发板上调试 Android 应用,首先要安装 ADB 驱动. 通过“SDK Manager.exe”来安装.如下图所示.另外需要注意的是,如果要使用 SDK Manager 安装软件,需要将 Eclipse 关闭. 安装完成后,打开文件夹中“USB_fastboot_tool\platform-tools”的命令行 cmd.exe, 如下图所示,输入命令“#adb”,然后回车.这里集成了 adb 命令

Linux驱动学习之Linux-2.6.20.4内核移植

最近一段时间一直在学习向TQ2440开发板移植内核.移植驱动.真心觉得这方面的知识有很大的难度.但是从另一角度去看,难度越大,能力提升的空间就越大!! 1.解压源码 从网上下载一个Linux 内核,我是用的是Linux-2.6.20.4.然后用命令解压.建议解压到"/home/用户名"目录下.我的内核源码存放在: 2.添加对ARM的支持 因为所用的是TQ2440开发板,属于ARM9.因此要在系统中添加对ARM的支持. 方法:进入内核源码目录, 修改"Makefile"

DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一

关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基于linux3.14.78,用设备树匹配,移植过程中调试和整体理解很重要,一路上幸有良师益友指点,下面详细介绍: 1.物理时序分析相关 DM9000芯片是DAVICOM公司生产的一款以太网处理芯片,提供一个通用的处理器接口.一个10/100M自适应的PHY芯片和4K双字的SRAM.内部框架如下,涉及