PCI header structure
Previous  Top  Next

    
type 
  pPciCfg =^TPciCfg;
  TPciCfg = record
       vendorID       : Word;
       deviceID       : Word;
       command_reg    : Word;
       status_reg     : Word;
       revisionID     : Byte;
       progIF         : Byte;
       subclass       : Byte;
       classcode      : Byte;
       cacheline_size : Byte;
       latency        : Byte;
       header_type    : Byte;
       BIST           : Byte;

       case Integer of
         0 : (NonBridge : TNonBridge);
         1 : (Bridge    : TBridge);
         2 : (CardBus   : TCardBus);

  end;

  TNonBridge = record
          base_address0      : Longword;
    base_address1      : Longword;
    base_address2      : Longword;
    base_address3      : Longword;
    base_address4      : Longword;
    base_address5      : Longword;
    CardBus_CIS        : Longword;
    subsystem_vendorID : Word;
    subsystem_deviceID : Word;
    expansion_ROM      : Longword;
    cap_ptr            : Byte;
    reserved1          : array[1..3] of Byte;
    reserved2          : Longword;
    interrupt_line     : Byte;
    interrupt_pin      : Byte;
    min_grant          : Byte;
    max_latency        : Byte;
    device_specific    : array[1..48] of Longword;
    end;     

  TBridge = record
         base_address0       : Longword;
    base_address1       : Longword;
    primary_bus         : Byte;
    secondary_bus       : Byte;
    subordinate_bus     : Byte;
    secondary_latency   : Byte;
    IO_base_low         : Byte;
    IO_limit_low        : Byte;
    secondary_status    : Word;
    memory_base_low     : Word;
    memory_limit_low    : Word;
    prefetch_base_low   : Word;
    prefetch_limit_low  : Word;
    prefetch_base_high  : Longword;
    prefetch_limit_high : Longword;
    IO_base_high        : Word;
    IO_limit_high       : Word;
    reserved2           : Longword;
    expansion_ROM       : Longword;
    interrupt_line      : Byte;
    interrupt_pin       : Byte;
    bridge_control      : Word;
    device_specific     : array[1..48] of Longword;
     end;

     TCardBus = record
          ExCa_base          : Longword;
    cap_ptr            : Byte;
    reserved05         : Byte;
    secondary_status   : Word;
    PCI_bus            : Byte;
    CardBus_bus        : Byte;
    subordinate_bus    : Byte;
    latency_timer      : Byte;
    memory_base0       : Longword;
    memory_limit0      : Longword;
    memory_base1       : Longword;
    memory_limit1      : Longword;
    IObase_0low        : Word;
    IObase_0high       : Word;
    IOlimit_0low       : Word;
    IOlimit_0high      : Word;
    IObase_1low        : Word;
    IObase_1high       : Word;
    IOlimit_1low       : Word;
    IOlimit_1high      : Word;
    interrupt_line     : Byte;
    interrupt_pin      : Byte;
    bridge_control     : Word;
    subsystem_vendorID : Word;
    subsystem_deviceID : Word;
    legacy_baseaddr    : Longword;
    cardbus_reserved   : array[1..14] of Longword;
    vendor_specific    : array[1..32] of Longword;
     end;