mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.2 KiB
83 lines
2.2 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef _ASM_X86_XEN_PCI_H |
|
#define _ASM_X86_XEN_PCI_H |
|
|
|
#if defined(CONFIG_PCI_XEN) |
|
extern int __init pci_xen_init(void); |
|
extern int __init pci_xen_hvm_init(void); |
|
#define pci_xen 1 |
|
#else |
|
#define pci_xen 0 |
|
#define pci_xen_init (0) |
|
static inline int pci_xen_hvm_init(void) |
|
{ |
|
return -1; |
|
} |
|
#endif |
|
#if defined(CONFIG_XEN_DOM0) |
|
int __init pci_xen_initial_domain(void); |
|
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); |
|
#else |
|
static inline int __init pci_xen_initial_domain(void) |
|
{ |
|
return -1; |
|
} |
|
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; |
|
} |
|
#endif |
|
|
|
#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 { |
|
int (*enable_msi)(struct pci_dev *dev, int vectors[]); |
|
void (*disable_msi)(struct pci_dev *dev); |
|
int (*enable_msix)(struct pci_dev *dev, int vectors[], int nvec); |
|
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, |
|
int vectors[]) |
|
{ |
|
if (xen_pci_frontend && xen_pci_frontend->enable_msi) |
|
return xen_pci_frontend->enable_msi(dev, vectors); |
|
return -ENOSYS; |
|
} |
|
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, |
|
int vectors[], int nvec) |
|
{ |
|
if (xen_pci_frontend && xen_pci_frontend->enable_msix) |
|
return xen_pci_frontend->enable_msix(dev, vectors, nvec); |
|
return -ENOSYS; |
|
} |
|
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 */
|
|
|