首先说明从驱动层的最上层的发送函数开始看
对于i2c协议的底层关键是i2c_adapter如下:
其核心又是i2c_algorithm如下:
对于非SMBus的数据发送则由master_xfer完成,下面即以此为例介绍如下:
另需说明:
对于i2c_adapter其是针对于实际的i2c总线所实现的,下面以imx芯片为例,且假设我有一个i2c1设备在设备树中描述为挂载在i2c@40012000上如下:
i2c总线与i2c_adapter的匹配在系统刚开始加载设备树时即匹配完成,然后再加载i2c1设备时可知其挂载在i2c@40012000总线上,所以其client自动会将对应i2c_adapter匹配,因此在驱动程序中对client(i2c从机设备)进行读写时会调用i2c_adapter中的算法。