syslinux-3.08-2 sources from FC4
[bootcd.git] / syslinux / com32 / include / sys / pci.h
1 #ifndef _SYS_PCI_H
2 #define _SYS_PCI_H
3
4 #include <inttypes.h>
5 #include <sys/io.h>
6
7 typedef uint32_t pciaddr_t;
8
9 static inline pciaddr_t pci_mkaddr(uint32_t bus, uint32_t dev,
10                                    uint32_t func, uint32_t reg)
11 {
12   return 0x80000000 | ((bus & 0xff) << 16) | ((dev & 0x1f) << 11) |
13     ((func & 0x07) << 8) | (reg & 0xff);
14 }
15
16 enum pci_config_type {
17   PCI_CFG_AUTO          = 0,    /* autodetect */
18   PCI_CFG_TYPE1         = 1,
19   PCI_CFG_TYPE2         = 2,
20 };
21
22 void pci_set_config_type(enum pci_config_type);
23
24 uint8_t pci_readb(pciaddr_t);
25 uint16_t pci_readw(pciaddr_t);
26 uint32_t pci_readl(pciaddr_t);
27 void pci_writeb(uint8_t, pciaddr_t);
28 void pci_writew(uint16_t, pciaddr_t);
29 void pci_writel(uint32_t, pciaddr_t);
30
31 #endif /* _SYS_PCI_H */