几个基本概念 1
设备模型 由 总线(bu s_ty pe) + 设备(dev ice) + 驱动(dev ice_driv er) 组成,在该模型下,所有的设备通过总线连接起来,即使有些设备没有连接到一根物理总线上,linu x 为其设置了一个内部的、虚拟的platform 总线,用以维持总线、驱动、设备的关系
因此,对于实现一个linu x 下的设备驱动,可以划分为两大步: 1、设备注册; 2、驱动注册
当然,其中还有一些细节问题: 1、驱动的probe 函数 2、驱动和设备是怎么进行绑定的
i2c 设备驱动的几个数据结构 i2c_adapter: 每一个i2c_adapter 对应一个物理上的i2c 控制器,在i2c 总线驱动probe 函数中动态创建
通过i2c_add_adapter 注册到i2c_core
i2c_algorithm: i2c_algorithm 中的关键函数 master_x fer(),以 i2c_msg 为单位产生 i2c 访问需要的信号
不同的平台所对应的master_x fer()是不同的,需要根据所用平台的硬件特性实现自己的x x x _x fer()方法以填充 i2c_algorithm 的master_x fer 指针;在A31 上即是 su n6i_i2c_algorithm 函数
i2c_client: 代表一个挂载到i2c 总线上的i2c 从设备,包含该设备所需要的数据: 该i2c 从设备所依附的i2c 控制器 stru ct i2c_adapter *adapter 该i2c 从设备的驱动程序 stru ct i2c_driv er *driv er 该i2c 从设备的访问地址 addr, name 该i2c 从设备的名称 name
i2c 总线驱动 2
功能划分 从硬件功能上