没有调用i2c探测....不知道在哪里调用i2c_register_board_info

时间:2014-10-13 20:50:22

标签: linux-kernel linux-device-driver embedded-linux i2c

我有英特尔系统。我正在尝试加载at24.ko和i2c-mux-pca9541.ko。 两个模块都具有未被调用的探测功能。 根据文档,我需要在arch_init中调用i2c_registetr_board_info。 但我不知道在哪里为英特尔系统做这件事(即哪些文件)。 我在互联网上的任何地方都没有看到任何例子。 有人可以提供指向我添加此调用的文件的指针。 如果这不是正确的方法,请告诉我。

提前谢谢。

1 个答案:

答案 0 :(得分:3)

未调用探测器,因为"匹配"内核找不到可能与驱动程序关联的设备。有不同的方法可以向内核提供设备信息。它们讨论如下:

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

echo <device_name> <i2c_address> > /sys/bus/i2c/devices/i2c-0/new_device

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

i2c_address:i2c器件的地址,根据器件数据表

以上命令假定i2c总线&#39; 0&#39;是设备连接的那个。

除此之外,还有一些其他方法可以探测您的设备。您可以通过设备树或致电i2c_register_board_info()指定设备信息。您可以创建一个创建i2c_board_info结构的简单模块,并使用i2c_register_board_info()对其进行注册,然后插入模块,使设备成为“已知的”#34;到内核​​并使用其驱动程序绑定设备。它不需要在板初始化代码中。

我建议您阅读以下有关探测i2c设备的文档:http://lxr.free-electrons.com/source/Documentation/i2c/instantiating-devices