Linux 触摸屏 (IIC驱动详解)

本文介绍了Linux系统中IIC总线驱动和设备驱动的概念,强调了在设备树环境下如何进行设备与驱动的匹配,主要通过of_driver_match_device和i2c_match_id函数。通常,驱动开发者无需关注总线驱动,只需关注设备驱动,尤其是i2c_driver的构建和注册。设备驱动的匹配可通过设备树的compatible属性或传统的name字段对比实现。
摘要由CSDN通过智能技术生成

前言:

本文使用触摸屏iic驱动,驱动编写中要使用总线,设备,驱动分层的思想,IIC总线,触摸屏驱动,触摸屏设备,
 

IIC总线驱动

一般 SOC 的 I2C 总线驱动都是由半导体厂商编写的,比如 I.MX6U 的 I2C 适配器驱动 NXP 已经编写好了,这个不需要用户去编写。因此 I2C 总线驱动对我们这些 SOC 使用者来说是被屏蔽掉的,我们只要专注于 I2C 设备驱动即可。除非你是在半导体公司上班,工作内容就是写 I2C 适配器驱动。对于我们 I2C 设备驱动编写人来说,重点工作就是构建 i2c_driver,构建完成以后需要向,Linux 内核注册这个 i2c_driver。i2c_add_driver(&xxx_driver);用来注册IIC设备。

IIC设备驱动

        在使用设备树的时候,linux系统可以获取设备树,完成设备和驱动的匹配。不需要编写设备驱动,驱动中的 compatible 属性和设备中的 compatible 属性相匹配,因此驱动中对应的 probe 函数就会执行。
 

IIC驱动模板 

iic结构体:

 

 IIC匹配

设备和驱动的匹配过程也是由 I2C 总线完成的,由IIC总线调用match函数完成匹配,以下是匹配的几种方式:

常用的是有设备树(of_driver_match_device)和无设备( i2c_match_id)

1.of_driver_match_device 函数用于完成设备树设备和驱动匹配。比较 I2C 设备点的 compatible 属性和 of_device_id 中的 compatible 属性是否相等,如果相当的话就表示 I2C设备和驱动匹配。 

2.i2c_match_id 函数用于传统的、无设备树的 I2C 设备和驱动匹配过程。比较 I2C设备名字和 i2c_device_id 的 name 字段是否相等,相等的话就说明 I2C 设备和驱动匹配。

一般设备驱动为了兼容性都支持设备树和无设备树两种匹配方式。也就是第一种匹配方式一般都会存在,第三种和第四种只要存在一种就可以,一般用的最多的还是第四种,也就是直接比较驱动和设备的 name 字段,毕竟这种方式最简单了。name 属性用于传统的驱动与设备匹配,也就是检查驱动和设备的 name 字段是不是相同。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值