点击上方蓝字【囧囧妹】一起学习,一起成长!
一,如何手动查找pcie设备
PCI 驱动程序可以不使用 pci_register_driver() 接口来搜索 PCI 设备。PCI 设备由多个驱动程序控制的主要原因是因为一个 PCI 设备实现了几种不同的硬件服务。例如组合串行/并行端口/软盘控制器。
可以使用以下结构执行手动搜索。
按供应商和设备 ID 搜索:
struct pci_dev *dev = NULL;while (dev = pci_get_device(VENDOR_ID, DEVICE_ID, dev))configure_device(dev);
pci_get_class(CLASS_ID, dev)
pci_get_subsys(VENDOR_ID,DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev).
二,设备初始化步骤
如前所述,大多数 PCI 驱动程序需要以下步骤来进行设备初始化:
启用设备
请求 MMIO/IOP 资源
设置 DMA 掩码大小(对于相干 DMA 和流式 DMA)
分配和初始化共享控制数据 (pci_allocate_coherent())
访问设备配置空间(如果需要)
注册 IRQ 处理程序 (
request_irq()
)初始化非PCI(即芯片的LAN/SCSI/etc部分)
启用 DMA/处理引擎。
驱动程序可以随时访问 PCI 配置空间寄存器。
下一节我们来看看每一步都具体做些什么。
文章转载自囧囧妹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




