summaryrefslogtreecommitdiff
path: root/util/vgabios/pci-userspace.h
diff options
context:
space:
mode:
Diffstat (limited to 'util/vgabios/pci-userspace.h')
-rw-r--r--util/vgabios/pci-userspace.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/util/vgabios/pci-userspace.h b/util/vgabios/pci-userspace.h
new file mode 100644
index 0000000000..094433070f
--- /dev/null
+++ b/util/vgabios/pci-userspace.h
@@ -0,0 +1,55 @@
+#include "pci.h"
+
+typedef unsigned long pciaddr_t;
+typedef u8 byte;
+typedef u16 word;
+
+struct pci_dev {
+ struct pci_dev *next; /* Next device in the chain */
+ word bus; /* Higher byte can select host bridges */
+ byte dev, func; /* Device and function */
+
+ /* These fields are set by pci_fill_info() */
+ int known_fields; /* Set of info fields already known */
+ word vendor_id, device_id; /* Identity of the device */
+ int irq; /* IRQ number */
+ pciaddr_t base_addr[6]; /* Base addresses */
+ pciaddr_t size[6]; /* Region sizes */
+ pciaddr_t rom_base_addr; /* Expansion ROM base address */
+ pciaddr_t rom_size; /* Expansion ROM size */
+
+ /* Fields used internally: */
+ void *access;
+ void *methods;
+ byte *cache; /* Cached information */
+ int cache_len;
+ int hdrtype; /* Direct methods: header type */
+ void *aux; /* Auxillary data */
+};
+
+
+struct pci_filter {
+ int bus, slot, func; /* -1 = ANY */
+ int vendor, device;
+};
+
+
+#define PCITAG struct pci_filter *
+#define pciVideoPtr struct pci_dev *
+
+extern int pciNumBuses;
+
+int pciInit(void);
+int pciExit(void);
+
+
+PCITAG findPci(unsigned short bx);
+u32 pciSlotBX(pciVideoPtr pvp);
+
+void pciWriteLong(PCITAG tag, u32 idx, u32 data);
+void pciWriteWord(PCITAG tag, u32 idx, u16 data);
+void pciWriteByte(PCITAG tag, u32 idx, u8 data);
+
+u32 pciReadLong(PCITAG tag, u32 idx);
+u16 pciReadWord(PCITAG tag, u32 idx);
+u8 pciReadByte(PCITAG tag, u32 idx);