i2c_add_driver函数无效
时间: 2023-08-14 13:05:30 浏览: 52
可能多种原因导致i2c_add_driver函数无效,以下是一些可能的解决方法:
1. 确保你的i2c驱动程序已经正确地编写并且已经被编译成内核模块或者静态链接到内核中。
2. 确保你的i2c驱动程序与i2c子系统的版本兼容。
3. 检查是否有其他i2c设备或驱动程序已经占用了你的i2c总线,如果有,需要先卸载或禁用这些设备或驱动程序。
4. 检查i2c总线是否已经正确地初始化并且已经被注册到内核中。
5. 检查i2c驱动程序的probe()函数是否被正确地实现,是否能够正确地识别和初始化你的i2c设备。
6. 如果你使用的是设备树,需要确认你的i2c设备在设备树中已经正确地描述并且已经被正确地绑定到i2c总线上。
希望以上解决方法能够帮助你解决问题。
相关问题
i2c_add_driver
i2c_add_driver() 是 Linux 内核中注册 I2C 设备驱动的函数。它的作用是向 I2C 子系统注册一个 I2C 设备驱动,使得 I2C 子系统能够识别并调用该驱动中的相应函数,完成对 I2C 设备的操作。函数的原型如下:
```c
int i2c_add_driver(struct i2c_driver *driver);
```
其中,参数 driver 是一个指向 i2c_driver 结构体的指针,该结构体中定义了 I2C 设备驱动的相关信息,例如驱动名称、设备 ID、设备探测函数、设备匹配函数等等。在调用 i2c_add_driver() 函数之前,需要先填充好该结构体。
调用成功时,函数返回 0;否则返回负值,表示注册失败。
i2c_add_driver 位置
i2c_add_driver() 函数的定义位于 Linux 内核源码树的文件 drivers/i2c/i2c-core.c 中。在该文件中,i2c_add_driver() 函数被定义为一个公共函数,可以被其他模块调用。在 Linux 内核中,i2c_add_driver() 函数是由 i2c 核心模块提供的,因此在使用该函数之前需要确保已经加载了 i2c 核心模块。