[INFO]
00 = Vendor ID - Offset [1:0]\r\rThe Vendor ID register identifies the manufacturer of the device and is assigned by PCISIG to insure uniqueness.
01 = Vendor ID - Offset [1:0]\r\rThe Vendor ID register identifies the manufacturer of the device and is assigned by PCISIG to insure uniqueness.
02 = Device ID - Offset [3:2]\r\rThe Device ID register identifies the particular device and is assigned by the vendor.
03 = Device ID - Offset [3:2]\r\rThe Device ID register identifies the particular device and is assigned by the vendor.
04 = Command - Offset [5:4]\r B0 - I/O Space Enable\r B1 - Memory Space Enable\r B2 - Bus Master Enable\r B3 - Special Cycle Enable\r B4 - Memory Write and Invalidate\r B5 - VGA Palette Snoop Enable\r B6 - Parity Error Response\r B7 - Reserved\r B8 - SERR# Enable\r B9 - Fast Back-to-Back Enable\r B10 - Interrupt Disable\r B15:11 - Reserved
05 = Command - Offset [5:4]\r B0 - I/O Space Enable\r B1 - Memory Space Enable\r B2 - Bus Master Enable\r B3 - Special Cycle Enable\r B4 - Memory Write and Invalidate\r B5 - VGA Palette Snoop Enable\r B6 - Parity Error Response\r B7 - Reserved\r B8 - SERR# Enable\r B9 - Fast Back-to-Back Enable\r B10 - Interrupt Disable\r B15:11 - Reserved
06 = Status - Offset [7:6]\r B2:0 - Reserved\r B3 - Interrupt Status\r B4 - Capabilities List\r B5 - 66 MHz Capable\r B6 - Reserved\r B7 - Fast Back-to-Back Capable\r B8 - Master Data Parity Error\r B10:9 - DEVSEL# Timing\r  00 - fast\r  01 - medium\r  02 - slow\r B11 - Signaled Target-Abort\r B12 - Received Target-Abort\r B13 - Received Master-Abort\r B14 - Signaled System Error\r B15 - Detected Parity Error
07 = Status - Offset [7:6]\r B2:0 - Reserved\r B3 - Interrupt Status\r B4 - Capabilities List\r B5 - 66 MHz Capable\r B6 - Reserved\r B7 - Fast Back-to-Back Capable\r B8 - Master Data Parity Error\r B10:9 - DEVSEL# Timing\r  00 - fast\r  01 - medium\r  02 - slow\r B11 - Signaled Target-Abort\r B12 - Received Target-Abort\r B13 - Received Master-Abort\r B14 - Signaled System Error\r B15 - Detected Parity Error
08 = Revision ID\r\rThe Revision ID register specifies a device-specific revision identifier.
09 = Class code - Programming Interface type\r\rThe Class Code register is used to identify the function of the device.
0A = Class code - Sub type\r\rThe Class Code register is used to identify the function of the device.
0B = Class code - Base type\r\rThe Class Code register is used to identify the function of the device.
0C = Cache line size\r\rThe Cacheline Size register is used when terminating a transaction that uses the Memory Write and Invalidate command and when prefetching (Memory Read Line and Memory Read Multiple commands).
0D = Latency timer\r\rThe Latency Timer register is required if a bridge is capable of a burst transfer of more than two data phases on its primary interface.
0E = Header type\r 00 - Standard PCI\r 01 - PCI-to-PCI Bridge\r 02 - Cardbus\r B7 = 1 - Multi-Function Device
0F = Built-In Self Test\r B3:0 - BIST Result\r B5:4 - Reserved\r B6 - Start BIST\r B7 - BIST Capable
10 = Base Address 0 - Offset [13:10]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
11 = Base Address 0 - Offset [13:10]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
12 = Base Address 0 - Offset [13:10]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
13 = Base Address 0 - Offset [13:10]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
14 = Base Address 1 - Offset [17:14]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
15 = Base Address 1 - Offset [17:14]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
16 = Base Address 1 - Offset [17:14]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
17 = Base Address 1 - Offset [17:14]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
18 = Base Address 2 - Offset [1B:18]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
19 = Base Address 2 - Offset [1B:18]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
1A = Base Address 2 - Offset [1B:18]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
1B = Base Address 2 - Offset [1B:18]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
1C = Base Address 3 - Offset [1F:1C]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
1D = Base Address 3 - Offset [1F:1C]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
1E = Base Address 3 - Offset [1F:1C]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
1F = Base Address 3 - Offset [1F:1C]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
20 = Base Address 4 - Offset [23:20]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
21 = Base Address 4 - Offset [23:20]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
22 = Base Address 4 - Offset [23:20]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
23 = Base Address 4 - Offset [23:20]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
24 = Base Address 5 - Offset [27:24]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
25 = Base Address 5 - Offset [27:24]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
26 = Base Address 5 - Offset [27:24]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
27 = Base Address 5 - Offset [27:24]\r\r Memory Base\r  B0 = 0 - Memory space\r  B2:1 - Type\r   00 - Base address is 32 bits wide\r   01 - Reserved\r   10 - Base address is 64 bits wide\r   11 - Reserved\r  B3 = 1 - Memory is prefetchable\r  B31:4 - Base address\r\r I/O Base\r  B0 = 1 - I/O space\r  B1 - Reserved\r  B31:2 - Base address
28 = Cardbus CIS pointer\r   - Offset [2B:28]\r\rThis optional register is used by those devices that want to share silicon between CardBus and PCI. The field is used to point to the Card Information Structure (CIS) for the CardBus card.
29 = Cardbus CIS pointer\r   - Offset [2B:28]\r\rThis optional register is used by those devices that want to share silicon between CardBus and PCI. The field is used to point to the Card Information Structure (CIS) for the CardBus card.
2A = Cardbus CIS pointer\r   - Offset [2B:28]\r\rThis optional register is used by those devices that want to share silicon between CardBus and PCI. The field is used to point to the Card Information Structure (CIS) for the CardBus card.
2B = Cardbus CIS pointer\r   - Offset [2B:28]\r\rThis optional register is used by those devices that want to share silicon between CardBus and PCI. The field is used to point to the Card Information Structure (CIS) for the CardBus card.
2C = Subsystem vendor ID\r   - Offset [2D:2C]\r\rThese registers are used to uniquely identify the add-in card or subsystem where the PCI device resides. They provide a mechanism for add-in card vendors to distinguish their add-in cards from one another even though the add-in cards may have the same PCI controller on them (and, therefore, the same Vendor ID and Device ID).
2D = Subsystem vendor ID\r   - Offset [2D:2C]\r\rThese registers are used to uniquely identify the add-in card or subsystem where the PCI device resides. They provide a mechanism for add-in card vendors to distinguish their add-in cards from one another even though the add-in cards may have the same PCI controller on them (and, therefore, the same Vendor ID and Device ID).
2E = Subsystem ID - Offset [2F:2E]\r\rThese registers are used to uniquely identify the add-in card or subsystem where the PCI device resides. They provide a mechanism for add-in card vendors to distinguish their add-in cards from one another even though the add-in cards may have the same PCI controller on them (and, therefore, the same Vendor ID and Device ID).
2F = Subsystem ID - Offset [2F:2E]\r\rThese registers are used to uniquely identify the add-in card or subsystem where the PCI device resides. They provide a mechanism for add-in card vendors to distinguish their add-in cards from one another even though the add-in cards may have the same PCI controller on them (and, therefore, the same Vendor ID and Device ID).
30 = Expansion ROM base Address\r   - Offset [33:30]\r B0 = 1 - Expansion ROM enabled\r B10:1 - Reserved\r B31:11 - base address
31 = Expansion ROM base Address\r   - Offset [33:30]\r B0 = 1 - Expansion ROM enabled\r B10:1 - Reserved\r B31:11 - base address
32 = Expansion ROM base Address\r   - Offset [33:30]\r B0 = 1 - Expansion ROM enabled\r B10:1 - Reserved\r B31:11 - base address
33 = Expansion ROM base Address\r   - Offset [33:30]\r B0 = 1 - Expansion ROM enabled\r B10:1 - Reserved\r B31:11 - base address
34 = Capabilities pointer\r\rThis optional register is used to point to a linked list of additional capabilities implemented by this device.
35 = Reserved - Offset [3B:35]
36 = Reserved - Offset [3B:35]
37 = Reserved - Offset [3B:35]
38 = Reserved - Offset [3B:35]
39 = Reserved - Offset [3B:35]
3A = Reserved - Offset [3B:35]
3B = Reserved - Offset [3B:35]
3C = Interrupt line\r\rThe Interrupt Line register is a read/write register used to communicate interrupt line routing information between initialization code and the device driver. This register must be initialized by initialization code so a default state is not specified. The value written to the Interrupt Line register specifies the routing of the deviceˇ¦s INTx# pin to the system interrupt controller.
3D = Interrupr pin\r\rThe Interrupt Pin register is used to indicate which interrupt pin the bridge uses. A value of 1 corresponds to INTA#; a value of 2 corresponds to INTB#; a value of 3 corresponds to INTC#; and a value of 4 corresponds to INTD#.
3E = Min_Gnt\r\rThese read-only byte registers are used to specify the device's desired settings for Latency Timer values. For both registers, the value specifies a period of time in units of 1/4 microsecond. Values of 0 indicate that the device has no major requirements for the settings of Latency Timers. MIN_GNT is used for specifying how long a burst period the device needs assuming a clock rate of 33 MHz. MAX_LAT is used for specifying how often the device needs to gain access to the PCI bus.
3F = Max_Lat\r\rThese read-only byte registers are used to specify the device's desired settings for Latency Timer values. For both registers, the value specifies a period of time in units of 1/4 microsecond. Values of 0 indicate that the device has no major requirements for the settings of Latency Timers. MIN_GNT is used for specifying how long a burst period the device needs assuming a clock rate of 33 MHz. MAX_LAT is used for specifying how often the device needs to gain access to the PCI bus.