Files
my-os-project2/kernel/pci/qemu/testdev/testdev.c
2025-11-29 23:54:12 +01:00

37 lines
892 B
C

#include <stdint.h>
#include <stddef.h>
#include "pci/qemu/testdev/testdev.h"
#include "pci/pci.h"
#include "vmm/vmm.h"
#include "bootinfo/bootinfo.h"
#include "std/string.h"
#include "kprintf.h"
// REF: https://www.qemu.org/docs/master/specs/pci-testdev.html
#define TAG "qemu-testdev"
typedef struct {
PciBar bar0, bar1, bar2;
} QemuTestDev;
QemuTestDev PCI_QEMU_TESTDEV;
void pci_qemu_testdev_init(void) {
PciDev dev = pci_getdev(0x1B36, 0x0005, -1);
if (!dev.bits) {
return;
}
uint8_t progif = pci_read8(dev, PCI_PROGIF);
LOG("pci/"TAG, "progif=0x%02x\n", progif);
pci_getbar(dev, &PCI_QEMU_TESTDEV.bar0, PCI_BAR0);
pci_getbar(dev, &PCI_QEMU_TESTDEV.bar1, PCI_BAR1);
pci_getbar(dev, &PCI_QEMU_TESTDEV.bar2, PCI_BAR2);
PCI_LOG_BAR(TAG, PCI_QEMU_TESTDEV.bar0, 0);
PCI_LOG_BAR(TAG, PCI_QEMU_TESTDEV.bar1, 1);
PCI_LOG_BAR(TAG, PCI_QEMU_TESTDEV.bar2, 2);
}