aboutsummaryrefslogtreecommitdiffstats
path: root/src/pci.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pci.h')
-rw-r--r--src/pci.h26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/pci.h b/src/pci.h
index 48d47699..b54cd371 100644
--- a/src/pci.h
+++ b/src/pci.h
@@ -4,15 +4,25 @@
#include "types.h" // u32
typedef struct PCIDevice {
- int bus;
- int devfn;
+ u8 bus;
+ u8 devfn;
} PCIDevice;
-void pci_config_writel(PCIDevice *d, u32 addr, u32 val);
-void pci_config_writew(PCIDevice *d, u32 addr, u16 val);
-void pci_config_writeb(PCIDevice *d, u32 addr, u8 val);
-u32 pci_config_readl(PCIDevice *d, u32 addr);
-u16 pci_config_readw(PCIDevice *d, u32 addr);
-u8 pci_config_readb(PCIDevice *d, u32 addr);
+static inline PCIDevice
+pci_bd(u8 bus, u8 devfn)
+{
+ struct PCIDevice d = {bus, devfn};
+ return d;
+}
+
+void pci_config_writel(PCIDevice d, u32 addr, u32 val);
+void pci_config_writew(PCIDevice d, u32 addr, u16 val);
+void pci_config_writeb(PCIDevice d, u32 addr, u8 val);
+u32 pci_config_readl(PCIDevice d, u32 addr);
+u16 pci_config_readw(PCIDevice d, u32 addr);
+u8 pci_config_readb(PCIDevice d, u32 addr);
+
+int pci_find_device(u16 vendid, u16 devid, int index, PCIDevice *dev);
+int pci_find_class(u32 classid, int index, PCIDevice *dev);
#endif