summaryrefslogtreecommitdiff
path: root/src/kernel/pci.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/pci.h')
-rw-r--r--src/kernel/pci.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/kernel/pci.h b/src/kernel/pci.h
new file mode 100644
index 0000000..1ab5936
--- /dev/null
+++ b/src/kernel/pci.h
@@ -0,0 +1,38 @@
+#ifndef PCI_H
+#define PCI_H
+
+#include <stdint.h>
+
+enum {
+ PCI_MASS_STORAGE = 0x01
+};
+
+enum {
+ PCI_IDE = 0x01
+};
+
+struct pci_device {
+ uint16_t number;
+
+ uint16_t id_vendor;
+ uint16_t id_device;
+
+ uint8_t class;
+ uint8_t subclass;
+ uint8_t iface;
+
+ uint32_t bar0;
+ uint32_t bar1;
+ uint32_t bar2;
+ uint32_t bar3;
+ //etc
+};
+
+extern uint16_t n_pci_devices;
+struct pci_device *nth_pci_device(uint16_t n);
+
+struct pci_device *find_pci_device_from_class_and_subclass(uint8_t class, uint8_t subclass, uint16_t start, uint16_t *index);
+
+void pci_init();
+
+#endif \ No newline at end of file