内核中具有多个设备的 PCIe

PCIe with multiple devices in kernel

使用带有多个设备的 PCIe 时(例如:串口、canbus、i2c 等):

  1. 是否有一个单内核 pci 驱动程序 可以处理所有这些设备?

  2. 还是应该使用多个pci设备驱动来实现,每个都使用相同的DEVICE_ID和VENDOR_ID?

如果我们使用第一种方法:

这是否意味着我们需要而不是调用“request_region”,因为不同的驱动程序使用相同的资源?

如果我们使用上面的第二种方法:

中断例程怎么样?它是所有这些设备的单个中断例程吗?

任何人都可以参考内核源代码树中的示例吗?

根据您的其他问题之一,我假设您正在谈论带有通过 PCIe 连接到 ARM CPU 复合体的自定义 IP 块的 FPGA。

  1. PCIe 驱动程序不处理任何这些设备。这些 IP 块的内存 map/space 将通过 PCIe 公开。当这些外围设备中的任何一个触发 IRQ 时,IRQ 将成为 PCIe MSI IRQ 并提供给相应外围设备驱动程序的 IRQ 处理程序。

  2. 不会有多个PCIe设备驱动。

查看我对您的另一个问题的回复