为什么i2c子系统中的i2c_do_add_adapter(data, to_i2c_adapter(dev));可以找到i2c_adapter
时间: 2023-08-11 16:05:26 浏览: 165
i2c_do_add_adapter() 是 i2c-core 中的一个函数,用于向 i2c 子系统中添加新的 i2c_adapter。它的第二个参数是一个指向 struct device 结构体的指针 dev,而 to_i2c_adapter() 则是一个宏定义,用于将该结构体转换为对应的 i2c_adapter 结构体。
在 i2c-core 中,i2c_adapter 结构体和 struct device 结构体共享同一个内存空间,因此通过 to_i2c_adapter() 宏定义可以将一个 struct device 结构体转换为对应的 i2c_adapter 结构体,并将转换后的结构体地址作为参数传递给 i2c_do_add_adapter() 函数。
这样,i2c_do_add_adapter() 就可以通过转换后的 i2c_adapter 结构体找到对应的 i2c 总线和设备了。
阅读全文