diff --git a/src/kernel/dri/pci/pci.c b/src/kernel/dri/pci/pci.c
index 87e5d2e..710ce11 100644
--- a/src/kernel/dri/pci/pci.c
+++ b/src/kernel/dri/pci/pci.c
@@ -1,13 +1,52 @@
 #include <dri/pci/pci.h>
+#include <dri/pci/vendors.h>
+#include <io.h>
+#include <log.h>
 
 ushort pci_config_readw(uchar bus, uchar slot, uchar func, uchar offset)
 {
-	struct pci_config_address address =
+	uint address = (bus << 16) | (slot << 11) | (func << 8) | (offset << 2) | 0x80000000;
+
+	outl(PCI_CONFIG_ADDRESS, address);
+
+	return inl(PCI_CONFIG_DATA);
+}
+
+struct pci_vendor *pci_check_vendor(uchar bus, uchar slot, uchar func, ushort *v)
+{
+	ushort vendor;
+
+	if ((vendor = pci_config_readw(bus, slot, func, 0) != 0xffff))
 	{
-		.enable = 1,
-		.bus = bus,
-		.device = slot,
-		.function = func,
-		.offset = offset ^ 0b11,
-	};
+		// TODO: check device and return here as well
+	}
+
+	if (v)
+		*v = vendor;
+
+	return pci_vendor_by_id(vendor);
+}
+
+struct pci_vendor *pci_vendor_by_id(ushort id)
+{
+	// Find vendor using binary search
+
+	uint start = 0, 
+		max = pci_num_vendors;
+
+	while (true)
+	{
+		if (max == start)
+			// Can't find one
+			return NULL;
+
+		uint guess = (max - start) / 2 + start;
+
+		if (pci_vendors[guess].id == id)
+			return &pci_vendors[guess];
+		else if (pci_vendors[guess].id > id)
+			max = guess;
+		else
+			start = guess;
+	}
 }
