1 i2c基本协议和时序
i2c基础的知识这里就不提了,直接从时序开始,直接来看看i2c的波形
2 i2c子系统软件框架
先来看看i2c总线的分层思想:
在分层图中我们可以看到,driver和device在核心层中分别成为了2条链表,核心层会按一定的规则匹配两条链表中的元素。
查看内核源码 i2c-core.c ,找到了匹配的函数如下:
static int i2c_device_match(struct device *dev, struct device_driver *drv)
{
struct i2c_client *client = i2c_verify_client(dev);
struct i2c_driver *driver;
if (!client)
return 0;
/* Attempt an OF style match */
if (of_driver_match_device(dev, drv))
return 1;
/* Then ACPI style match */
if (acpi_driver_match_device(dev, drv))
return