linux中I2C驱动框架

本文详细介绍了Linux系统中I2C驱动框架的组成部分,包括控制器的struct i2c_adapter和i2c_algorithm,以及触摸屏芯片部分的struct i2c_client和i2c_driver。通过平台总线方式实现灵活的模块化设计,如i2c_core.c中的接口,以及控制器adapter部分和设备芯片部分的注册过程。驱动程序通过i2c_add_adapter和i2c_register_driver等接口注册,并有静态和动态两种方式构建i2c_client并将其注册到i2c总线上。
摘要由CSDN通过智能技术生成

一、总体介绍
四个结构体:
控制器部分:
struct i2c_adapter    i2c控制器(对应SOC部分)
struct i2c_agorithm   i2c算法(对应i2c怎样穿数据,包括在i2c_adapter中)
触摸屏芯片部分:
struct i2c_client     i2c设备(具有i2c接口的设备)
struct i2c_driver     i2c设备的驱动(与i2c_client配对)


几个部分的文件,每个部分的文件可以看成是一个模块,都可以以平台总线
的方式来实现,非常灵活,一般需要获取硬件资源的模块会设计成平台总线
式的结构,这样可以程序与数据分离,便于移植。是很好的一种设计理念。

接口文件i2c-core.c:
1、定义了i2c总线
i2c_bus_type
    mach
    probe
    
2、提供了一些驱动开发的接口
i2c_add_adapter/i2c_add_numbered_adapter   注册adapter(控制器部分)
i2c_register_driver                        注册driver
i2c_new_device                             注册client


二、控制器adapter部分(在文件i2c-s3c2410.c):

其采用的平台总线的方式实现,platform_driver部分是对SOC的I2C控制器
部分进行操作的程序;platform_device是SOC的I2C控制器部分的硬件资源
采取数据与程序分离的思想。
platform_driver:
platform_driver_register(&a

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值