Extend PCI driver

This commit is contained in:
2025-12-03 21:31:39 +01:00
parent 7defc557b2
commit 092781ba57

View File

@@ -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);
} }