读书人

i2c装置加载驱动后没有执行probe

发布时间: 2012-09-09 09:27:54 作者: rapoo

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), },}; 

读书人网 >UNIXLINUX

热点推荐