ioread32和pci_bus_read_config_word包装函数有什么区别?哪一个在pci设备驱动程序中使用更安全?

时间:2017-07-20 15:36:25

标签: c linux driver device pci

在pci设备驱动程序中,我试图在MIPS平台中使用ioread32读取PCI_COMMAND寄存器,但抛出了数据总线错误。我在传入ioread32之前验证了有效参数。对此有何帮助?在这种情况下使用pci_bus_read_config_word是否会阻止数据总线错误?

1 个答案:

答案 0 :(得分:0)

这取决于您的平台对配置空间访问的支持。有两种类型的访问 -

1 - 传统PCI配置机制 - 使用IO端口地址访问端点配置空间。您可以使用ioread32() 2 - 增强型PCI配置机制 - 这使用内存映射IO。您可以使用简单的指针操作来读取它。

由于很难找到访问机制支持,因此最好使用pci API(在本例中为pci_bus_read_config_word)而不是使用ioread32()。

pci _ *()API将处理对该平台有效的访问方法。