1 #ifndef __X86_PCI_H__
2 #define __X86_PCI_H__
3 
4 #define CF8_BDF(cf8)     (  ((cf8) & 0x00ffff00) >> 8)
5 #define CF8_ADDR_LO(cf8) (   (cf8) & 0x000000fc)
6 #define CF8_ADDR_HI(cf8) (  ((cf8) & 0x0f000000) >> 16)
7 #define CF8_ENABLED(cf8) (!!((cf8) & 0x80000000))
8 
9 #define MMCFG_BDF(addr)  ( ((addr) & 0x0ffff000) >> 12)
10 
11 #define IS_SNB_GFX(id) (id == 0x01068086 || id == 0x01168086 \
12                         || id == 0x01268086 || id == 0x01028086 \
13                         || id == 0x01128086 || id == 0x01228086 \
14                         || id == 0x010A8086 )
15 
16 struct arch_pci_dev {
17     vmask_t used_vectors;
18 };
19 
20 int pci_conf_write_intercept(unsigned int seg, unsigned int bdf,
21                              unsigned int reg, unsigned int size,
22                              uint32_t *data);
23 int pci_msi_conf_write_intercept(struct pci_dev *, unsigned int reg,
24                                  unsigned int size, uint32_t *data);
25 bool_t pci_mmcfg_decode(unsigned long mfn, unsigned int *seg,
26                         unsigned int *bdf);
27 
28 bool_t pci_ro_mmcfg_decode(unsigned long mfn, unsigned int *seg,
29                            unsigned int *bdf);
30 
31 /* MMCFG external variable defines */
32 extern int pci_mmcfg_config_num;
33 extern struct acpi_mcfg_allocation *pci_mmcfg_config;
34 
35 #endif /* __X86_PCI_H__ */
36