Linux kernel 未调用i2c探测器…不确定在何处调用i2c\u寄存器\u板\u信息

Linux kernel 未调用i2c探测器…不确定在何处调用i2c\u寄存器\u板\u信息,linux-kernel,linux-device-driver,embedded-linux,i2c,Linux Kernel,Linux Device Driver,Embedded Linux,I2c,我有一个英特尔系统。我正在尝试加载24.ko和i2c-mux-pca9541.ko。 两个模块都有未调用的探测函数。 根据文档,我需要在arch_init中调用i2c_registetr_board_info。 但我不知道在哪里做英特尔系统ie的哪些文件。 我在互联网上没有看到任何例子。 有人能提供一个指向我添加这个调用的文件的指针吗。 如果这不是正确的方法,请让我知道 提前感谢。由于内核找不到可能与驱动程序关联的匹配设备,因此未调用探测器。有不同的方式向内核提供设备信息。讨论内容如下: 如果出

我有一个英特尔系统。我正在尝试加载24.ko和i2c-mux-pca9541.ko。 两个模块都有未调用的探测函数。 根据文档,我需要在arch_init中调用i2c_registetr_board_info。 但我不知道在哪里做英特尔系统ie的哪些文件。 我在互联网上没有看到任何例子。 有人能提供一个指向我添加这个调用的文件的指针吗。 如果这不是正确的方法,请让我知道


提前感谢。

由于内核找不到可能与驱动程序关联的匹配设备,因此未调用探测器。有不同的方式向内核提供设备信息。讨论内容如下:

如果出于测试目的,您可以通过sysfs探测i2c设备:

echo>/sys/bus/i2c/devices/i2c-0/new\u设备

设备名称:i2c设备的名称。应该是驱动程序中使用的

i2c_地址:根据设备数据表的i2c设备地址

上述命令假定i2c总线“0”是连接设备的总线

除此之外,还有其他一些方法可以探测您的设备。您可以通过设备树或调用i2c_寄存器_板_信息来指定设备信息。您可以创建一个简单的模块,该模块创建i2c_board_info结构,并使用i2c_register_board_info对其进行注册,然后插入模块,以便内核知道该设备,并将该设备与其驱动程序绑定。它不需要在线路板初始代码中


我建议您阅读以下有关探测i2c设备的文档:

您使用的内核版本是什么?您正在使用设备树吗?I2C接口是否在设备树中定义?您好,我使用的是3.14。我没有使用设备树。我尝试在i2c-i801下添加i2c_寄存器_板_信息,因为这是i2c适配器,但出现编译错误,称i2c_寄存器_板_信息“未定义”。我必须显式地导出函数以避开编译问题,但仍然无法调用探测。对于英特尔系统,似乎还应该做些别的事情。i2c_寄存器_板_信息是在drivers/i2c/i2c boardinfo.c中定义的,所以将其放入i2c-i1801并不像您所做的那样是一个解决方案。在.CONFIG文件中是否启用了CONFIG_I2C_BOARDINFO?您好。是的,它被启用了。我还检查了system.map,该函数列在文件中。您有什么英特尔系统?你有像arch/arm/mach-omap2/myboard.c这样的板文件吗?谢谢,这对我很有帮助。但是i2c板信息的平台数据在哪里传递