Detect ATA driver via PCI
This commit is contained in:
@ -5,6 +5,7 @@
|
||||
#include "io/io.h"
|
||||
#include "std/string.h"
|
||||
#include "util/util.h"
|
||||
#include "pci/ide.h"
|
||||
#include "kprintf.h"
|
||||
|
||||
uint8_t pci_read8(uint32_t id, uint32_t reg) {
|
||||
@ -76,6 +77,7 @@ void pci_getbar(PciBar *bar, uint32_t id, uint32_t idx) {
|
||||
}
|
||||
|
||||
static PciMatch PCI_MATCHES[] = {
|
||||
{ 0x8086, 0x7010, &pci_ide_init },
|
||||
};
|
||||
|
||||
void pci_visit(uint32_t bus, uint32_t dev, uint32_t fn) {
|
||||
@ -103,8 +105,7 @@ void pci_visit(uint32_t bus, uint32_t dev, uint32_t fn) {
|
||||
pci_classname(devinfo.classcode, devinfo.subclass, devinfo.progintf));
|
||||
|
||||
for (size_t i = 0; i < LEN(PCI_MATCHES); i++) {
|
||||
if ((PCI_MATCHES[i].k1 == devinfo.vendorid && PCI_MATCHES[i].k2 == devinfo.deviceid)
|
||||
|| (PCI_MATCHES[i].k1 == devinfo.classcode && PCI_MATCHES[i].k2 == devinfo.subclass)) {
|
||||
if (PCI_MATCHES[i].k1 == devinfo.vendorid && PCI_MATCHES[i].k2 == devinfo.deviceid) {
|
||||
PCI_MATCHES[i].initfn(&devinfo);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user