PCI桥编程问题已解决

x86平台, 带PCI BIOS, 使用PLX 9030桥芯片

pci -vvv输出如下:
Class = Bridge (Unknown)
Vendor ID = 10b5h, PLX Technology
Device ID = 3001h, PCI 9030RDK-LITE PCI Reference Design Kit for PCI 9030
PCI index = 0h
Class Codes = 068000h
Revision ID = 1h
Bus number = 1
Device number = 12
Function num = 0
Status Reg = 290h
Command Reg = 3h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 0h
Cache Line Size= 8h un-cacheable
Subsystem Vendor ID = 10b5h
Subsystem ID = 9030h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT A
Interrupt line = 10 是否能以此判断bios已经为该设备分配了资源
Capabilities Pointer = 40h
Capability ID = 1h
Capabilities = 4802h - 0h
Capability ID = 6h
Capabilities = 0h - 3h
Capability ID = 3h
Capabilities = 0h - 0h

我的程序从pci_dev_info结构和配置区得到的信息如下:
PCI Device Infomation:
VendorID = 0X10B5, DeviceID = 0X3001.
SubsystemId = 0, SubsystemVendorId = 0.
BusNumber = 0X1, DevFunc = 0X60.
Revision = 0X1, Class = 0X68000.
Irq = 0XFF. 为什么我的_info结构中irq是0xff?
CpuIoTranslation = 0.
CpuMemTranslation = 0.
CpuIsaTranslation = 0.
CpuBmstrTranslation = 0.
为什么取到的地址全为0?pci的寄存器中明明有值呀!
No.0 PciBaseAddress = 0, CpuBaseAddress = 0, BaseAddressSize = 0.
No.1 PciBaseAddress = 0, CpuBaseAddress = 0, BaseAddressSize = 0.
No.2 PciBaseAddress = 0, CpuBaseAddress = 0, BaseAddressSize = 0.
No.3 PciBaseAddress = 0, CpuBaseAddress = 0, BaseAddressSize = 0.
No.4 PciBaseAddress = 0, CpuBaseAddress = 0, BaseAddressSize = 0.
No.5 PciBaseAddress = 0, CpuBaseAddress = 0, BaseAddressSize = 0.
PciRom = 0.
CpuRom = 0.
RomSize = 0.
PCI Config:
0x00: B5 10 01 30 : VendorID(16), DeviceID(16)
0x04: 03 00 90 02 : Command(16), Status(16)
0x08: 01 00 80 06 : RevisionID(4), ClassCode(28)
0x0C: 08 00 00 00 : CLS(4), PBLT(4), HT(4), BIST(4)
明明6个寄存器中都有值呀!难道pci-bios看不见?!
0x10: 00 10 C1 E8 : BaseAddress for MA to LCR(32)
0x14: 01 D1 00 00 : BaseAddress for IOA to LCR(32)
0x18: 00 00 00 E8 : BaseAddress 2 for LAS 0(32)
0x1C: 00 00 80 E8 : BaseAddress 3 for LAS 1(32)
0x20: 00 00 A0 E8 : BaseAddress 4 for LAS 3(32)
0x24: 00 00 C0 E8 : BaseAddress 5 for LAS 4(32)
0x28: 00 00 00 00 : CIS(32)
0x2C: B5 10 30 90 : SubVID(16), SubID(16)
0x30: 00 00 00 00 : BassAddress for LER(32)
0x34: 40 00 00 00 : NewCap(4), Reserved(28)
0x38: 00 00 00 00 : Reserved(32)
0x3C: 0A 01 00 00 : IntL(4), IntP(4), MinG(4), MaxL(4)

我的问题是, 为什么pci_attach_device()返回给我的pci_dev_info结构中的irq是0xff, 所有基地址都是0?

我读了pci.h,发现跟_pci_config_regs结构相对应,还有一个_pci_bridge_config_regs结构。pci-bios是否对桥设备有特殊的处理?

我已束手无策了,请大家帮忙。

在pci-full.h中查得
其他类型的内存控制器的Class ID, 填入板卡中, 问题解决.

9030芯片是一款桥芯片, 但寄存器配置区的格式是一般pci设备的形式,
qnx按桥设备来处理它的寄存器配置区会失败.

这是我猜的, 没什么理论依据, 哪位达人能给出权威解释, 不胜感激.