【发布时间】:2021-12-22 01:29:43
【问题描述】:
我为 Linux 构建了一个特定的驱动程序作为模块 (m),NXP 的 spi-imx。尽管如此,Linux 在引导时会探测此驱动程序。我正在努力找出哪些进程/其他模块/驱动程序请求这个 spi-imx 驱动程序。 depmod 不显示 spi-imx 与其他模块之间的任何依赖关系(spidev 作为子模块除外)。
经过一番研究,我发现 Linux 在检测到新设备时会自动 (?) 调用 modprobe。那么 Linux 是否真的调用 modprobe 是因为设备树中 ecSPI 的状态为“okay”?如果是这样,我该如何防止这种情况?我想通过 modprobe 从用户空间应用程序动态加载 spi-imx。其背后的故事:协处理器将这条 SPI 线与 Linux 引导过程并行使用。这当然会干扰并中断协处理器对 SPI 线的使用。当协处理器通过 SPI(也是一种引导机制)完成传输后,它应该将 SPI 线移交给 Linux。
我非常感谢任何关于此的提示、链接、提示和 cmets。
【问题讨论】:
-
如果系统中存在设备并在固件表(ACPI、设备树等)中进行了描述,Linux 将尝试枚举它。您在错误的 pin muxing afaics 中的问题。您需要请求引脚,因此不会探测 SPI 主机控制器驱动程序。
-
一个有点笨拙的选项是在包含行
blacklist spi-imx的 /etc/modprobe.d/*.conf 文件中将模块列入黑名单。这将防止模块被自动加载(通过匹配其别名之一的设备),但仍然可以使用modprobe或insmod命令加载。
标签: linux-device-driver kernel-module spi imx8 spidev