日期:2014-05-16  浏览次数:20695 次

i2c设备加载驱动后没有执行probe
向大家请教下,
一个i2c设备执行i2c_add_driver()后返回值是0,但是却没有调用相应的probe函数,可能是什么原因导致的呢?

------解决方案--------------------
可能原理:
1.没有定义i2c device.
2.没有i2c host驱动.
------解决方案--------------------
ls说的对,在你的i2c驱动程序注册到系统的时候,系统会对每一个注册的i2c_client调用i2c总线的match函数,match函数通过id_table來判断这个驱动是否支持这个设备,如果支持则会调用i2c_drvier的probe函数,当然如果你没有注册i2c_client或者id_table写的不对,就不会调用probe函数。
------解决方案--------------------
把从设备的地址等信息加入到总线控制器数组里。

例如:
C/C++ code

static struct i2c_board_info i2c_devs0[] __initdata = {
    { I2C_BOARD_INFO("24c08", 0x50), },
    { I2C_BOARD_INFO("ov965x", 0x30), },
};