summaryrefslogtreecommitdiff
path: root/kernel/drivers/pci.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/pci.h')
-rw-r--r--kernel/drivers/pci.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/kernel/drivers/pci.h b/kernel/drivers/pci.h
new file mode 100644
index 0000000..7511cee
--- /dev/null
+++ b/kernel/drivers/pci.h
@@ -0,0 +1,26 @@
+#include <stdint.h>
+
+struct GENERAL_DEVICE {
+ uint32_t base_mem_io;
+ uint8_t interrupt_line;
+};
+
+struct PCI_DEVICE {
+ uint16_t vendor;
+ uint16_t device;
+ uint8_t bus;
+ uint8_t slot;
+ union {
+ struct GENERAL_DEVICE gen;
+ };
+};
+
+uint32_t pci_config_read32(const struct PCI_DEVICE *device, uint8_t func,
+ uint8_t offset);
+void pci_config_write32(const struct PCI_DEVICE *device, uint8_t func,
+ uint8_t offset, uint32_t data);
+
+int pci_populate_device_struct(uint16_t vendor, uint16_t device,
+ struct PCI_DEVICE *pci_device);
+
+uint8_t pci_get_interrupt_line(const struct PCI_DEVICE *device);