git-svn-id: https://spexeah.com:8443/svn/Asuro@146 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
parent
126ec01343
commit
5779d57589
160
src/drivers/PCI.pas
Normal file
160
src/drivers/PCI.pas
Normal file
@ -0,0 +1,160 @@
|
||||
{ ************************************************
|
||||
* Asuro
|
||||
* Unit: Drivers/PCI
|
||||
* Description: PCI Driver
|
||||
************************************************
|
||||
* Author: Aaron Hance
|
||||
* Contributors:
|
||||
************************************************ }
|
||||
|
||||
unit PCI
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
system,
|
||||
util;
|
||||
|
||||
type
|
||||
|
||||
TClass_Code = (
|
||||
LEGACY, MASS_STORAGE_CONTROLLER, NETWORK_CONTROLLER,
|
||||
DISPLAY_CONTROLLER, MULTIMEDIA_CONTROLLER, MEMORY_CONTROLLER,
|
||||
BRIDGE_DEVICE, SIMPLE_COMM_CONTROLLER, BASE_SYS_PERIPHERALS,
|
||||
INPUT_DEVICE, DOCKING_STATION, PROCESSOR, SERIAL_BUS_CONTROLLER,
|
||||
WIRELESS_CONTROLLER, INTELLIGENT_IO_CONTROLLER,
|
||||
SATELLITE_COMM_CONTROLLER, ENCRYPTION_CONTROLLER,
|
||||
SIGNAL_PROCESSING_CONTROLLER, RESERVED
|
||||
); // 0XFF = OTHER DEVICE
|
||||
|
||||
TSub_Class_Codes record // first half sub device, second half prog id
|
||||
any_non_vga_compatible : uint16 = $0000;
|
||||
any_vga_compatible : uint16 = $0100;
|
||||
scsi_bus_controller : uint16 = $0000;
|
||||
ide_controller : uint16 = $01FF;
|
||||
floppy_controller : uint16 = $0200;
|
||||
ipi_bus_controller : uint16 = $0300;
|
||||
raid_controller : uint16 = $0400;
|
||||
ata_single_dma : uint16 = $0520;
|
||||
ata_chained_dma : uint16 = $0530;
|
||||
serial_ata_ahci_vsi : uint16 = $0600;
|
||||
serial_ata_ahci : uint16 = $0601;
|
||||
serial_attached_scsi : uint16 = $0700;
|
||||
other_mass_storage : uint16 = $8000;
|
||||
ethernet_controller : uint16 = $0000;
|
||||
token_ring_controller : uint16 = $0100;
|
||||
fddi_controller : uint16 = $0200;
|
||||
atm_controller : uint16 = $0300;
|
||||
isdn_controller : uint16 = $0400;
|
||||
worldfip_controller : uint16 = $0500;
|
||||
picmg_multi_computing : uint16 = $0600;
|
||||
other_network_controller : uint16 = $8000;
|
||||
vga_compatible_controller : uint16 = $0000;
|
||||
c8512_compatible_controller : uint16 = $0001;
|
||||
xga_controller : uint16 = $0100;
|
||||
c3d_controller : uint16 = $0200;
|
||||
other_display_controller : uint16 = $8000;
|
||||
video_device : uint16 = $0000;
|
||||
audio_device : uint16 = $0100;
|
||||
computer_telephony_device : uint16 = $0200;
|
||||
other_multimedia_device : uint16 = $8000;
|
||||
ram_controller : uint16 = $0000;
|
||||
flash_controller : uint16 = $0100;
|
||||
other_memory_controller : uint16 = $8000;
|
||||
host_bridge : uint16 = $0100;
|
||||
isa_bridge : uint16 = $0200;
|
||||
eisa_bridge : uint16 = $0300;
|
||||
pci_2_pci_bridge : uint16 = $0400;
|
||||
subtractive_pci_2_pci_bridge : uint16 = $0401;
|
||||
pcmcia_bridge : uint16 = $0500;
|
||||
nubus_bridge : uint16 = $0600;
|
||||
cardbus_bridge : uint16 = $0700;
|
||||
raceway_bridge : uint16 = $0800;
|
||||
semi_pci_2_pci_bridge_p : uint16 = $0940;
|
||||
semi_pci_2_pci_bridge_s : uint16 = $0980;
|
||||
infiniband_2_pci_bridge : uint16 = $0A00;
|
||||
other_bridge_device : uint16 = $8000;
|
||||
end;
|
||||
|
||||
TPCI_Device_class record
|
||||
class_code : uint8;
|
||||
sub_classes : array[256] of uint8;
|
||||
prog_if : array[256] of uint8;
|
||||
end;
|
||||
|
||||
TPCI_Config bitpacked record
|
||||
enable_bit : uint8; //first bit enables, rest reserved
|
||||
bus_number : uint8;
|
||||
df_number : uint8; // 5bits device number, 3bits function number
|
||||
register_offset : uint8; //last 2bits should be 00
|
||||
end;
|
||||
|
||||
TPCI_BIST bitpacked record
|
||||
capable : boolean;
|
||||
start : boolean;
|
||||
reserved : ubit2;
|
||||
completion_code : ubit3;
|
||||
end;
|
||||
|
||||
TPCI_Header_Type bitpacked record
|
||||
MF : boolean;
|
||||
header_type : ubit7;
|
||||
end;
|
||||
|
||||
TPCI_Device bitpacked record
|
||||
device_id : uint16;
|
||||
vendor_id : uint16;
|
||||
status : uint16;
|
||||
command : uint16;
|
||||
class_code : uint8;
|
||||
subclass_class : uint8;
|
||||
prog_if : uint8;
|
||||
revision_id : uint8;
|
||||
BIST : TPCI_BIST;
|
||||
header_type : uint8;
|
||||
latency_timer : uint8;
|
||||
cache_size : uint8;
|
||||
address0 : uint32;
|
||||
address1 : uint32;
|
||||
address2 : uint32;
|
||||
address3 : uint32;
|
||||
address4 : uint32;
|
||||
address5 : uint32;
|
||||
CIS_pointer : uint32;
|
||||
subsystem_id : uint16;
|
||||
subsystem_vid : uint16;
|
||||
exp_rom_addr : uint32;
|
||||
reserved0 : uint16;
|
||||
reserved1 : uint8;
|
||||
capabilities : uint8;
|
||||
reserved2 : uint32;
|
||||
max_latency : uint8;
|
||||
min_grant : uint8;
|
||||
interrupt_pin : uint8;
|
||||
interrupt_line : uint8;
|
||||
end;
|
||||
|
||||
TPCI_Device_Bridge bitpacked record
|
||||
|
||||
end;
|
||||
|
||||
TCommand_Register bitpacked record
|
||||
end;
|
||||
|
||||
TStatus_Register bitpacked record
|
||||
end;
|
||||
|
||||
var
|
||||
classes: array [255] of TPCI_Device_class;
|
||||
|
||||
procedure init();
|
||||
|
||||
implementation
|
||||
|
||||
procedure init();
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
Loading…
x
Reference in New Issue
Block a user