pci.h 2.2 KB
Newer Older
1 2 3 4 5
#ifndef _ASM_X86_XEN_PCI_H
#define _ASM_X86_XEN_PCI_H

#if defined(CONFIG_PCI_XEN)
extern int __init pci_xen_init(void);
6
extern int __init pci_xen_hvm_init(void);
7 8 9 10
#define pci_xen 1
#else
#define pci_xen 0
#define pci_xen_init (0)
11 12 13 14
static inline int pci_xen_hvm_init(void)
{
	return -1;
}
15
#endif
16
#if defined(CONFIG_XEN_DOM0)
17
int __init pci_xen_initial_domain(void);
18 19 20
int xen_find_device_domain_owner(struct pci_dev *dev);
int xen_register_device_domain_owner(struct pci_dev *dev, uint16_t domain);
int xen_unregister_device_domain_owner(struct pci_dev *dev);
21
#else
22
static inline int __init pci_xen_initial_domain(void)
23
{
24
	return -1;
25
}
26 27 28 29 30 31 32 33 34 35 36 37 38
static inline int xen_find_device_domain_owner(struct pci_dev *dev)
{
	return -1;
}
static inline int xen_register_device_domain_owner(struct pci_dev *dev,
						   uint16_t domain)
{
	return -1;
}
static inline int xen_unregister_device_domain_owner(struct pci_dev *dev)
{
	return -1;
}
39
#endif
40 41 42 43 44 45 46

#if defined(CONFIG_PCI_MSI)
#if defined(CONFIG_PCI_XEN)
/* The drivers/pci/xen-pcifront.c sets this structure to
 * its own functions.
 */
struct xen_pci_frontend_ops {
47
	int (*enable_msi)(struct pci_dev *dev, int vectors[]);
48
	void (*disable_msi)(struct pci_dev *dev);
49
	int (*enable_msix)(struct pci_dev *dev, int vectors[], int nvec);
50 51 52 53 54 55
	void (*disable_msix)(struct pci_dev *dev);
};

extern struct xen_pci_frontend_ops *xen_pci_frontend;

static inline int xen_pci_frontend_enable_msi(struct pci_dev *dev,
56
					      int vectors[])
57 58 59 60 61 62 63 64 65 66 67
{
	if (xen_pci_frontend && xen_pci_frontend->enable_msi)
		return xen_pci_frontend->enable_msi(dev, vectors);
	return -ENODEV;
}
static inline void xen_pci_frontend_disable_msi(struct pci_dev *dev)
{
	if (xen_pci_frontend && xen_pci_frontend->disable_msi)
			xen_pci_frontend->disable_msi(dev);
}
static inline int xen_pci_frontend_enable_msix(struct pci_dev *dev,
68
					       int vectors[], int nvec)
69 70 71 72 73 74 75 76 77 78 79 80 81 82
{
	if (xen_pci_frontend && xen_pci_frontend->enable_msix)
		return xen_pci_frontend->enable_msix(dev, vectors, nvec);
	return -ENODEV;
}
static inline void xen_pci_frontend_disable_msix(struct pci_dev *dev)
{
	if (xen_pci_frontend && xen_pci_frontend->disable_msix)
			xen_pci_frontend->disable_msix(dev);
}
#endif /* CONFIG_PCI_XEN */
#endif /* CONFIG_PCI_MSI */

#endif	/* _ASM_X86_XEN_PCI_H */