从pci- / pcie-card读取芯片ID

时间:2009-08-18 21:22:40

标签: c linux detection hardware-interface pci-bus

几个月前,我不得不写一个小工具来编写rtl8139卡的eeprom。它基本上是用于读取/写入eeprom的rtl8139-diag工具。

此工具必须扩展为能够对rtl8101卡的eeprom进行编程。这不是问题,因为eeprom的接口类似于rtl8139的接口。实际上,唯一的区别是eeprom文件的内容。

我想要实现的是一个自动检测,检查给定端口地址的卡是rtl8139还是rtl8101并选择适合的eeprom-dump。我无法通过读取eeprom来确定这些芯片的差异,因为要编程的卡片是“处女”而且eeprom-contents基本上是0xffff

我注意到,无论eeprom的内容如何,​​Linux总是为这些卡加载适合的驱动程序。所以我想,我只需要阅读该卡的芯片ID。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我认为您可能会发现lspcilspci -vv会对您有所帮助。 (你可能需要成为root。)

也就是说,如果在卡中设置了PCI ID,而不是从eeprom中确定,则应该能够使用lspci获取卡的PCI ID并确定您正在使用的卡。

-n选项会为您提供原始数字,如果您正在编写脚本,这可能会更有帮助。

或者,您可以从/ sys / devices / pci * / * / device和vendor中读取这些值。