代码之家  ›  专栏  ›  技术社区  ›  xMutzelx yamini jhamnani

为什么ififd的pci linux实现使用“平台驱动程序”而不是“pci驱动程序”?

  •  1
  • xMutzelx yamini jhamnani  · 技术社区  · 6 年前

    linux主线内核的PCI-IFIFIFD CAN实现(drivers/net/CAN)( link) 正在使用平台驱动程序结构而不是pci驱动程序结构。
    我很难区分这两种结构。因此我告诉自己:
    platform driver vs normal device driver
    - platform_driver
    - pci_driver

    根据第一个来源:

    所以USB和PCI不是平台设备 .

    如果是这种情况,为什么PCI ififd实现使用平台驱动程序结构?
    另外,如何使用ififd将此驱动程序用于pci卡?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Dražen GraÅ¡ovec    5 年前

    platform_driver ,即总线(控制器)驱动程序和 pci_driver 它是PCI设备驱动程序(总线上的客户机)。

    CAN bus driver for IFI CANFD controller

    总线控制器(适配器)作为 platform_devices

    PCI驱动程序提供了钩子(回调)和结构来将PCI设备注册到内核

    pci_register_driver() pci\U驱动程序 struct pci_device_id xxx_pci_tbl[] 表,其中包含要与设备匹配的类、供应商和设备ID。

    struct pci_driver xxx_driver = {
        .name           = DRV_NAME,
        .probe          = xxx_pci_probe,
        .remove         = xxx_pci_remove,
        .id_table       = xxx_pci_tbl
    

    /Documentation/PCI/pci.txt