linux 触摸屏驱动编写

早在诺基亚手机还比较流行的时候,那时候触摸屏用的还不多。但是随着触摸屏手机、即智能手机的流行,触摸屏基本成了手机的标配。所以,今天可以看看触摸屏驱动在linux上是如何进行的。

1、驱动目录

drivers/input 

2、看看这个目录的Makefile如何设计

obj-$(CONFIG_INPUT)   += input-core.o
input-core-y := input.o input-compat.o input-mt.o ff-core.o 

obj-$(CONFIG_INPUT_TOUCHSCREEN) += touchscreen/ 

3、除了input-core.o这个文件外,只需要看touchscreen目录就可以了

config TOUCHSCREEN_S3C2410
  tristate "Samsung S3C2410/generic touchscreen input driver"
  depends on ARCH_S3C24XX || SAMSUNG_DEV_TS
  depends on S3C_ADC
  help
   Say Y here if you have the s3c2410 touchscreen. 

   If unsure, say N. 

   To compile this driver as a module, choose M here: the
   module will be called s3c2410_ts. 

4、看懂了Kconfig之后,再阅读Makefile,注意S3C_ADC宏可以参考arch/arm/plat-samsung/adc.c

obj-$(CONFIG_TOUCHSCREEN_S3C2410)  += s3c2410_ts.o 

5、继续阅读s3c2410_ts.c文件

static const struct platform_device_id s3cts_driver_ids[] = {
  { "s3c2410-ts", 0 },
  { "s3c2440-ts", 0 },
  { "s3c64xx-ts", FEAT_PEN_IRQ },
  { }
};
MODULE_DEVICE_TABLE(platform, s3cts_driver_ids); 

static struct platform_driver s3c_ts_driver = {
  .driver     = {
    .name  = "samsung-ts",
#ifdef CONFIG_PM
    .pm = &s3c_ts_pmops,
#endif
  },
  .id_table  = s3cts_driver_ids,
  .probe   = s3c2410ts_probe,
  .remove   = s3c2410ts_remove,
};
module_platform_driver(s3c_ts_driver);

6、根据probe函数,看看有什么需要注意的内容

ts.client = s3c_adc_register(pdev, s3c24xx_ts_select,
         s3c24xx_ts_conversion, 1);
if (IS_ERR(ts.client)) {
  dev_err(dev, "failed to register adc client\n");
  ret = PTR_ERR(ts.client);
  goto err_iomap;
} 

7、接着,查看是否有中断函数被注册

ret = request_irq(ts.irq_tc, stylus_irq, 0,
     "s3c2410_ts_pen", ts.input);

8、最后

很明显,触摸屏驱动本质上还是由TOUCHSCREEN_S3C2410和S3C_ADC两个macro一起完成的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 详解linux lcd驱动编写
  • 详解linux pwm驱动编写
  • linux 驱动之Kconfig文件和Makefile文件实例
  • Linux 字符设备驱动框架详细介绍
  • Linux安装PHP MongoDB驱动
  • Linux下如何安装Run文件格式NVIDIA显卡驱动
  • 如何编写Linux设备驱动程序
  • Linux内核模块和驱动的编写
  • 详解linux dma驱动编写
(0)

相关推荐

  • 详解linux lcd驱动编写

    有些嵌入式设备是不需要lcd的,比如路由器.但是,还有些设备是需要lcd显示内容的,比如游戏机.测试仪.智能手表等等.所以,今天我们就看看lcd驱动在linux上是怎么进行的. 1.代码目录 drivers/video 2.查看video下的Makefile文件 # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_VGASTATE) += vgastate.o obj-$(CONFIG_HDMI) += hdmi.o obj-$(CONFIG_VT)

  • Linux 字符设备驱动框架详细介绍

    Linux 字符设备驱动框架 字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标.键盘.显示器.串口等等,当我们执行ls -l /dev的时候,就能看到大量的设备文件,c就是字符设备,b就是块设备,网络设备没有对应的设备文件.编写一个外部模块的字符设备驱动,除了要实现编写一个模块所需要的代码之外,还需要编写作为一个字符设备的代码. 驱动模型 Linux一切皆文件,那么作为一个设备文件,它的操作方

  • linux 驱动之Kconfig文件和Makefile文件实例

    linux 驱动之Kconfig文件和Makefile文件实例 在Linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的.这其中,一个是Kconfig文件,另外一个是Makefile文件.如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌生,在.config文件中,我们发现有的模块被编译进了内核,有的只是生成了一个module.这中间,我们如何让内核发现我们编写的模块呢,这就需要在Kconfig中进行说明.至于如何生成模块,那么就需要利用Makefile告诉编译器,怎么

  • 如何编写Linux设备驱动程序

    Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别.在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便.本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,获得了一些经验,愿与Linux fans共享,有不当之处,请予指正. 以下的一些文字主要来源于khg,johnsonm的W

  • Linux内核模块和驱动的编写

    Linux内核是一个整体是结构,因此向内核添加任何东西,或者删除某些功能,都十分困难.为了解决这个问题引入了内核机制.从而可以动态的想内核中添加或者删除模块. 模块不被编译在内核中,因而控制了内核的大小.然而模块一旦被插入内核,他就和内核其他部分一样.这样一来就会曾家一部分系统开销.同时,如果模块出现问题,也许会带来系统的崩溃. 模块的实现机制: 启动时,由函数 void inti_modules() 来初始化模块,因为启动事很多时候没有模块.这个函数往往把内核自身当作一个虚模块. 如由系统需要

  • 详解linux dma驱动编写

    linux下面的驱动虽然什么样的情形都有,但是dma驱动却并不少见.dma可以有很多的好处,其中最重要的功能就是能够帮助我们将数据搬来搬去,这个时候cpu就由时间去做别的事情了,提高了设备效率. 1.dma驱动在什么地方 drivers/dma 2.如何看s3c的dma驱动,先看Kconfig config S3C24XX_DMAC bool "Samsung S3C24XX DMA support" depends on ARCH_S3C24XX || COMPILE_TEST se

  • Linux下如何安装Run文件格式NVIDIA显卡驱动

    本文给大家介绍的非常详细,具体详情请看下文吧. 开始安装首先修改/etc/inittab文件将: id:5:initdefault: 改为: id:3:initdefault: #vi /etc/inittab 然后重启电脑 系统进入字符模式并用root登录,随后运行NVIDIA-linux-x86-1.0-5336-pkg1.run # sh NVIDIA-linux-x86-1.0-5336-pkg1.run 然后根据提示作出选择,安装大概用时5分钟. 接着修改XF86Config文件把Dr

  • 详解linux pwm驱动编写

    pwm方波可以用来控制很多的设备,比如它可以被用来控制电机.简单来说,就是单位时间内的方波越多,那么电机的转速就会越快:反之就越慢.通过这个特性,soc就可以轻松地利用pwm对外设进行自动控制.所以,今天的主题就是pwm驱动. 1.驱动目录 drivers/pwm 2.查看对应目录下的Kconfig config PWM_SAMSUNG tristate "Samsung PWM support" depends on PLAT_SAMSUNG || ARCH_EXYNOS help

  • Linux安装PHP MongoDB驱动

    PHP利于学习,使用广泛,主要适用于Web开发领域. MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身. 在php中使用mongodb你必须使用 mongodb 的 php驱动. 本文是小编在部署生产环境的时候简单记录. 1. 下载PHP的mongodb驱动安装包mongodb-1.1.9.tgz wget https://pecl.php.net/get/mongodb-1.1.9.tgz 2. 解压驱

  • linux 触摸屏驱动编写

    早在诺基亚手机还比较流行的时候,那时候触摸屏用的还不多.但是随着触摸屏手机.即智能手机的流行,触摸屏基本成了手机的标配.所以,今天可以看看触摸屏驱动在linux上是如何进行的. 1.驱动目录 drivers/input 2.看看这个目录的Makefile如何设计 obj-$(CONFIG_INPUT) += input-core.o input-core-y := input.o input-compat.o input-mt.o ff-core.o obj-$(CONFIG_INPUT_TOU

  • 详解linux 摄像头驱动编写

    对于现代嵌入式设备,特别是手机来说,摄像头是很重要的一个设备.很多同学买手机,一看颜值,第二就看摄像头拍照如何.所以,从某个角度来说,摄像头是各个厂家主打的应用功能.那么,linux是如何支持摄像头的,我们可以来看一下? 1.代码目录地址 drivers/media 2.v4l2框架 目前linux上的camera都是按照v4l2框架来设计,它的地址位于drivers/media/v4l2-core 3.查看三星soc是如何支持camera的,可以查看drviers/media/platform

  • 详解linux驱动编写(入门)

    在我离职之前,工作内容几乎不涉及到驱动方面的知识.我所要做的内容就是把客户对设备的请求拆分成一个一个的接口,调用驱动的设置进行配置就可以了.当然,至于驱动下面是怎么实现那就要根据具体情况而定了.比如说,有的驱动是芯片厂商直接写好的,假设芯片厂商提供了对应平台的sdk函数,那么驱动的工作就是对这些sdk函数进行封装就可以了,另外一种就是自己编写具体平台的驱动接口了.比如说,现在你需要编写串口.i2c.i2s.FLASH.网卡.LCD.触摸屏.USB驱动了.这个时候,你手里面除了一堆芯片手册,啥也没

  • 详解linux 驱动编写(sd卡驱动)

    随着sd卡的流行,sd卡在嵌入式设备上使用的场景也越来越多.那下面我们可以看一下,linux驱动框架上是怎么处理sd卡驱动的? 1.代码目录地址 drivers/mmc 2.基本结构 从mmc的代码结构可以看得出,主要分为两个部分,其中core为协议部分,host为各个soc的适配部分 host是我们需要真正关心的代码 3.以s3c为例,观察makefile obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o ...... obj-$(CONFIG_MMC_S3

  • 详解linux usb host驱动编写入门

    usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0.大家如果打开kernel usb host目录,就会发现下面包含了ohci,uhci,ehci,xhci,whci等多种形式的控制器驱动.那么,对于我们这些不是很了解usb的开发人员,如何了解usb的代码结构呢? 1.代码分布 drivers/usb目录下面,host目录包括了host驱动代码,core目录包含了主要的api接口代码,而其他目录则主要是device驱动代码. 2.device驱动怎么看

  • 详解linux电源管理驱动编写

    对于嵌入式设备来说,合适的电源管理,不仅可以延长电池的寿命,而且可以省电,延长设备运行时间,在提高用户体验方面有很大的好处.所以,各个soc厂家在这方面花了很多的功夫.下面,我们可以看看linux是如何处理电源管理驱动的. 1.代码目录 drivers/regulator 2.查看目录下的Kconfig文件 menuconfig REGULATOR bool "Voltage and Current Regulator Support" help Generic Voltage and

  • linux 驱动编写之虚拟字符设备的编写实例详解

     linux 驱动编写 前言: 昨天我们说了一些简单模块编写方法,但是终归没有涉及到设备的编写内容,今天我们就可以了解一下相关方面的内容,并且用一个实例来说明在Linux上面设备是如何编写的.虽然我不是专门做linux驱动的,却也经常收到一些朋友们的来信.在信件中,很多做驱动的朋友对自己的工作不是很满意,认为自己的工作就是把代码拷贝来拷贝去,或者说是改来改去,没有什么技术含量.有这种想法的朋友不在少数,我想这主要还是因为他们对自己的工作缺少了解导致.如果有可能,我们可以问问自己这样几个问题: (

随机推荐