Ubuntu 12.04,加载 i801 I2C 驱动程序

Ubuntu 12.04,加载 i801 I2C 驱动程序

我有一个设备连接到以下总线(我将在解释我想要实现的目标后讨论它),并且我正在尝试调试驱动程序本身(通常它适用于早期的规范和 ubuntu 版本,我正在尝试更新驱动程序以在最新规范下工作,为了做到这一点,我必须让它在较新版本的 ubuntu 上运行,一旦我有了基础架构,我就会开始开发)- 我正在尝试加载 i2c 总线驱动程序 i801,但没有成功。没有可用的 /dev/i2c-x,我尝试将其编译为内置模块 - 似乎都没有使它可用,也许它不应该在那里?我确实看到了“某些东西”,即 /sys/modules/i2c_i801/drivers/pci:i801_smbus。

我使用的主板是英特尔的 DB75EN。当我用示波器检查总线时,我可以看到每隔几秒钟就会有一次设备访问,而访问时间是 44 小时。我使用的是 Torvalds 的最新内核 (3.14)。

关于如何加载驱动程序以及如何选择和加载总线驱动程序,有什么建议吗?

谢谢你!

答案1

好吧,看来我的主要问题是我没有研究过的地址之间存在一些冲突。osl.c 中的 acpi_check_address_range() 发现了冲突。这导致 i2c-i801 探测器对 acpi_check_resource_conflict() 的调用失败。我对其进行了注释并进行了编译,它成功了。要注册我的驱动程序,我还必须通过以下方式明确发送它的地址:sudo su echo > /sys/bus/i2c/devices/i2c-0/new_device(i2c0 是 i801)

我认为解决这个问题的另一种方法是取消定义 ENFORCE_RESOURCES_STRICT,osl.c 中的 acpi_check_resource_conflict() 在决定失败之前会进行检查。

附言

现在,当我运行 i2cdetect 时,我看到设备 44h。

相关内容