git-svn-id: https://spexeah.com:8443/svn/Asuro@401 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c

This commit is contained in:
kieron
2018-04-08 13:41:49 +00:00
parent 2f5f4a1173
commit 1eb4c3190e
12 changed files with 26 additions and 6 deletions

View File

@ -15,7 +15,7 @@ uses
util,
console,
drivertypes,
lmemorymanager,
lmemorymanager,
vmemorymanager,
drivermanagement;
@ -78,6 +78,7 @@ function loadDeviceConfig(bus : uint8; slot : uint8; func : uint8) : boolean;
function getDeviceInfo(class_code : uint8; subclass_code : uint8; prog_if : uint8; var count : uint32) : TdeviceArray; //(Will in future)returns TPCI_DEVICE.vendor_id := 0xFFFF if no device found.
procedure requestConfig(bus : uint8; slot : uint8; func : uint8; row : uint8);
procedure writeConfig(bus: uint8; slot : uint8; func : uint8; row : uint8; val : uint32);
procedure setBusMaster(bus : uint8; slot : uint8; func : uint8; master : boolean);
implementation
@ -166,6 +167,23 @@ begin
outl(PCI_PORT_CONF_DATA, val);
end;
procedure setBusMaster(bus : uint8; slot : uint8; func : uint8; master : boolean);
var
data : uint32;
begin
requestConfig(bus, slot, func, 1);
data := inl($CFC);
if master then begin
data := data OR $00000004;
end else begin
data := data AND $FFFFFFFB;
end;
writeConfig(bus, slot, func, 1, data);
requestConfig(bus, slot, func, 1);
data := inl($CFC);
end;
procedure requestConfig(bus : uint8; slot : uint8; func : uint8; row : uint8);
var
addr : uint32;