Extend PCI driver
This commit is contained in:
@@ -27,6 +27,13 @@ export class PCIKDriver extends KernelDriver {
|
|||||||
for (let bus = 0; bus < 256; bus++) {
|
for (let bus = 0; bus < 256; bus++) {
|
||||||
for (let device = 0; device < 32; device++) {
|
for (let device = 0; device < 32; device++) {
|
||||||
this.#checkDevice(bus, device, 0);
|
this.#checkDevice(bus, device, 0);
|
||||||
|
|
||||||
|
const headerType = this.#getHeaderType(bus, device, 0);
|
||||||
|
if ((headerType & 0x80) === 0) continue;
|
||||||
|
|
||||||
|
for (let func = 1; func < 8; func++) {
|
||||||
|
this.#checkDevice(bus, device, func);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,6 +83,10 @@ export class PCIKDriver extends KernelDriver {
|
|||||||
return (this.#readConfig(bus, device, func, 8) >> 16) & 0xff;
|
return (this.#readConfig(bus, device, func, 8) >> 16) & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#getHeaderType(bus: number, device: number, func: number) {
|
||||||
|
return (this.#readConfig(bus, device, func, 12) >> 16) & 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
#readConfig(bus: number, device: number, func: number, offset: number) {
|
#readConfig(bus: number, device: number, func: number, offset: number) {
|
||||||
return kc.pciReadDword((bus << 16) | (device << 11) | (func << 8) | offset);
|
return kc.pciReadDword((bus << 16) | (device << 11) | (func << 8) | offset);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user