{Nasledujici kody tris a podtrid zarizeni jsou velmi nekompletni. Asi
nejuplnejsi seznam je na http://www.wiki.osdev.org/pci}

const
pci_Legacy_video             = 0 shl 16;
pci_Mass_Storage             = 1 shl 16;
pci_Network_Controller       = 2 shl 16;
pci_display_controller       = 3 shl 16;
pci_multimedia_controller    = 4 shl 16;
pci_memory                   = 5 shl 16;
pci_bridge_controller        = 6 shl 16;
pci_communications_device    = 7 shl 16;
pci_system_peripherals       = 8 shl 16;
pci_input_device             = 9 shl 16;
pci_docking_station          = $0a shl 16;
pci_cpu                      = $0b shl 16;
pci_serial_bus_controller    = $0c shl 16;
pci_wireless                 = $0d shl 16;
pci_intelligent_IO           = $0e shl 16;
pci_satellite_communication  = $0f shl 16;
pci_encryption_decryption    = $10 shl 16;
pci_data_and_signal          = $11 shl 16;


{Pro pci_Legacy_video (0)}
z_VGA_incompat = 0 shl 8;
z_VGA_compat   = 1 shl 8;


{Pro pci_Mass_storage (1)}
z_SCSI   = 0 shl 8;
z_IDE    = 1 shl 8;
z_floppy = 2 shl 8;
z_IPI    = 3 shl 8;
z_RAID   = 4 shl 8;

{Pro pci_Network_Controller (2)}
z_Ethernet   = 0 shl 8;
z_TokenRing  = 1 shl 8;
z_FDDI       = 2 shl 8;
z_ATM        = 3 shl 8;

{Pro pci_Display_Controler (3)}
z_VGA     = 0 shl 8;
z_XGA     = 1 shl 8;
z_3D_cont = 2 shl 8;  {3D kontroler, s VGA nekompatibilni}

{Pro pci_Multimedia_controler (4)}
z_video = 0 shl 8;
z_audio = 1 shl 8;

{Pro pci_Memory (5)}
z_RAM          = 0 shl 8;
z_Flash_memory = 1 shl 8;

{Pro pci_Bridge Controler (6)}
z_host_processor_bridge = 0 shl 8;
z_ISA_bridge            = 1 shl 8;
z_EISA_bridge           = 2 shl 8;
z_MicroChannel_bridge   = 3 shl 8;
z_PCI_bridge            = 4 shl 8;
z_PCMCIA_bridge         = 5 shl 8;
z_NuBus_bridge          = 6 shl 8;
z_CardBus_bridge        = 7 shl 8;

{Pro pci_communications_device (7) - zde skutecne velmi nekompletni}
z_XT_comdev = 0 shl 8;
z_AT_comdev = 1 shl 8;

{Pro pci_system_peripherals (8)}
z_PIC_controller = 0 shl 8;
z_DMA_controller = 1 shl 8;
z_timer          = 2 shl 8;
z_realtime_clock = 3 shl 8;

{Pro pci_input_device (9)}
z_keyboard = 0 shl 8;
z_tablet   = 1 shl 8;
z_mouse    = 2 shl 8;
z_scanner  = 3 shl 8;


{Pro pci_Docking station (0A)}
z_docking_station = 0 shl 8;

{Pro pci_CPU (0B)}
z_CPU386          = 0 shl 8;
z_CPU486          = 1 shl 8;
z_CPUpentium      = 2 shl 8;
z_CPUpentiumPro   = 3 shl 8;
z_CPU_DEC_Alpha   = $10 shl 8;
z_CPU_coprocessor = $40 shl 8;

{Pro pci_Serial_Bus_Controller (0C)}
z_Firewire     = 0 shl 8;
z_ACCESS_bus   = 1 shl 8;
z_SSA          = 2 shl 8;
z_USB          = 3 shl 8;
z_FiberChannel = 4 shl 8;
z_SMBUS        = 5 shl 8;

z_other = $80 shl 8;


{nasledujici konstanty se pricitaji k zakladnimu portu sbernice SMBUS}
i2c__HST_STS       = 0;      {host status}
i2c__HST_CNT       = 2;
i2c__HST_CMD       = 3;      {host command}
i2c__XMIT_SLVA     = 4;      {transmit slave address}
i2c__HST_D0        = 5;
i2c__HST_D1        = 6;
i2c__HOST_BLOCK_DB = 7;
i2c__PEC           = 8;
i2c__AUX_STS       = $0c;
i2c__AUX_CTL       = $0d;


type
bios_device_info_typ_0=record
vendor_ID:word;                            { FFFFh returned if requested device non-existent }
device_ID:word;
command_register:word;
status_register:word;
revision_ID:byte;
class_code:array[1..3] of BYTE;    { class code }
	                { bits 7-0: programming interface          }
	                { bits 15-8: sub-class                     }
	                { bits 23-16: class code (see also #F0085) }
cache_line_size:byte;
latency_timer:byte;
header:byte;
	                { bits 6-0: header format                  }
		        {   00h other                              }
			{   01h PCI-to-PCI bridge                  }
			{   02h PCI-to-CardBus bridge              }
	                {   bit 7: multi-function device           }
{-------------------------------------------------------------------------}
Self_test_result:byte;
base_address_0:dword;
base_address_1:dword;
base_address_2:dword;
base_address_3:dword;
base_address_4:dword;
base_address_5:dword;
CardBus_CIS_pointer:dword;
subsystem_vendor_ID:word;
subsystem_ID:word;
expansion_ROM_base_address:dword;
offset_of_capabilities_list:byte;
reserved:array[1..7] of byte;
interrupt_line:byte;                       { 00h = none, 01h = IRQ1 to 0Fh = IRQ15 }
interrupt_pin:byte;                        { (00h = none, else indicates INTA# to INTD#) }
unknown1,unknown2:byte;
various:array[1..48] of dword;
end;


bios_device_info_typ_1=record
vendor_ID:word;                            { FFFFh returned if requested device non-existent }
device_ID:word;
command_register:word;
status_register:word;
revision_ID:byte;
class_code:array[1..3] of BYTE;    { class code }
	                { bits 7-0: programming interface          }
	                { bits 15-8: sub-class                     }
	                { bits 23-16: class code (see also #F0085) }
cache_line_size:byte;
latency_timer:byte;
header:byte;
	                { bits 6-0: header format                  }
		        {   00h other                              }
			{   01h PCI-to-PCI bridge                  }
			{   02h PCI-to-CardBus bridge              }
	                {   bit 7: multi-function device           }
Self_test_result:byte;
end;
