Obsah

PCI (Peripheral Component Interconnect)

Sběrnice, kerá obsahuje informace o zařízeních.

// IN: ch = bus(0..255), cl = slot/device(0..31),
//     dh = function(0..7), dl = offset(%4=0)
// OUT: eax = value
h_pci_get:
push edx
 movzx eax, ch
 shl eax, 5
 or al, cl
 shl eax, 3
 or al, dh
 shl eax, 8
 or al, dl
 or eax, 0x80000000
 pushfd
  cli
  mov dx, 0xCF8
  out dx, eax
  mov dx, 0xCFC
  in eax, dx
 popfd
pop edx
ret

// IN: eax = value, ch = bus(0..255), cl = slot/device(0..31),
//     dh = function(0..7), dl = offset(%4=0)
h_pci_set:
push edx
 push ecx
  push eax
   movzx eax, ch
   shl eax, 5
   or al, cl
   shl eax, 3
   or al, dh
   shl eax, 8
   or al, dl
   or eax, 0x80000000
  pop ecx
  pushfd
   cli
   mov dx, 0xCF8
   out dx, eax
   mov dx, 0xCFC
   mov eax, ecx
   out dx, eax
  popfd
 pop ecx
pop edx
ret

Header Type 0

OffsetVelikostVýznam
04bity 0-15 Vendor ID, bity 16-31 Device ID
44bity 0-15 Command, bity 16-31 Status
84bity 0-7 Revision ID, bity 8-15 Prog IF, bity 16-23 Subclass, bity 24-31 Class
124bity 0-7 Cache Line Size, bity 8-15 Latency Timer, bity 16-23 Header Type = 0 (bit 7 = MF(Multiple Functions)), bity 24-31 BIST
164BAR0
204BAR1
244BAR2
284BAR3
324BAR4
364BAR5
404Cardbus CIS Pointer
444bits 0-15 Subsystem Vendor ID, bits 16-31 Subsystem ID
484Expansion ROM Base Address
524bity 0-7 Capabilities Pointer
564-
604bity 0-7 Interrupt Line (IRQ), bity 8-15 Interrupt PIN, bity 16-23 Min Grant, bity 24-31 Max Latency

Header Type 1 (PCI-to-PCI bridge)

OffsetVelikostVýznam
04bity 0-15 Vendor ID, bity 16-31 Device ID
44bity 0-15 Command, bity 16-31 Status
84bity 0-7 Revision ID, bity 8-15 Prog IF, bity 16-23 Subclass, bity 24-31 Class
124bity 0-7 Cache Line Size, bity 8-15 Latency Timer, bity 16-23 Header Type = 1 (bit 7 = MF(Multiple Functions)), bity 24-31 BIST
164BAR0
204BAR1
244bity 0-7 Primay BUS Number, bity 8-15 Secondary BUS Number, bity 16-23 Subordinate BUS Number, bity 24-31 Secondary Latency Timer
284bity 0-7 I/O Base, bity 8-15 I/O Limit, bity 16-31 Secondary Status
324bity 0-15 Memory Base, bity 16-31 Memory Limit
364bity 0-15 Prefetchable Memory Base, bity 16-31 Prefetchable Memory Limit
404Prefetchable Memory Base horních 32 bitú
444Prefetchable Memory Limit horních 32 bitú
484bity 0-15 I/O Base bity horních 16 bitú, bity 16-31 I/O Limit horních 16 bitú
524bity 0-7 Capabilities Pointer
564Expansion ROM Base Address
604bity 0-7 Interrupt Line, bity 8-15 Interrupt PIN, bity 16-31 Bridge Control

Header Type 2 (PCI-to-CardBus bridge)

OffsetVelikostVýznam
04bity 0-15 Vendor ID, bity 16-31 Device ID
44bity 0-15 Command, bity 16-31 Status
84bity 0-7 Revision ID, bity 8-15 Prog IF, bity 16-23 Subclass, bity 24-31 Class
124bity 0-7 Cache Line Size, bity 8-15 Latency Timer, bity 16-23 Header Type = 2, bity 24-31 BIST
164CardBus Socket/ExCa Base Address
204bity 0-7 Offset of capabilities list, bity 16-31 Secondary Status
244bity 0-7 PCI Bus Number, bity 8-15 CardBus Bus Number, bity 16-23 Subordinate Bus Number, bity 24-31 CardBus Latency Timer
284Memory Base Address 0
324Memory Limit 0
364Memory Base Address 1
404Memory Limit 1
444I/O Base Address 0
484I/O Limit 0
524I/O Base Address 1
564I/O Limit 1
604bity 0-7 Interrupt Line, bity 8-15 Interrupt PIN, bity 16-31 Bridge Control
644bity 0-15 Subsystem Device ID, bity 16-31 Subsystem Vendor ID
68416-bit PC Card Legacy Mode Base Address