pci.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef _ASM_X86_XEN_PCI_H
  2. #define _ASM_X86_XEN_PCI_H
  3. #if defined(CONFIG_PCI_XEN)
  4. extern int __init pci_xen_init(void);
  5. #define pci_xen 1
  6. #else
  7. #define pci_xen 0
  8. #define pci_xen_init (0)
  9. #endif
  10. #if defined(CONFIG_PCI_MSI)
  11. #if defined(CONFIG_PCI_XEN)
  12. /* The drivers/pci/xen-pcifront.c sets this structure to
  13. * its own functions.
  14. */
  15. struct xen_pci_frontend_ops {
  16. int (*enable_msi)(struct pci_dev *dev, int **vectors);
  17. void (*disable_msi)(struct pci_dev *dev);
  18. int (*enable_msix)(struct pci_dev *dev, int **vectors, int nvec);
  19. void (*disable_msix)(struct pci_dev *dev);
  20. };
  21. extern struct xen_pci_frontend_ops *xen_pci_frontend;
  22. static inline int xen_pci_frontend_enable_msi(struct pci_dev *dev,
  23. int **vectors)
  24. {
  25. if (xen_pci_frontend && xen_pci_frontend->enable_msi)
  26. return xen_pci_frontend->enable_msi(dev, vectors);
  27. return -ENODEV;
  28. }
  29. static inline void xen_pci_frontend_disable_msi(struct pci_dev *dev)
  30. {
  31. if (xen_pci_frontend && xen_pci_frontend->disable_msi)
  32. xen_pci_frontend->disable_msi(dev);
  33. }
  34. static inline int xen_pci_frontend_enable_msix(struct pci_dev *dev,
  35. int **vectors, int nvec)
  36. {
  37. if (xen_pci_frontend && xen_pci_frontend->enable_msix)
  38. return xen_pci_frontend->enable_msix(dev, vectors, nvec);
  39. return -ENODEV;
  40. }
  41. static inline void xen_pci_frontend_disable_msix(struct pci_dev *dev)
  42. {
  43. if (xen_pci_frontend && xen_pci_frontend->disable_msix)
  44. xen_pci_frontend->disable_msix(dev);
  45. }
  46. #endif /* CONFIG_PCI_XEN */
  47. #endif /* CONFIG_PCI_MSI */
  48. #endif /* _ASM_X86_XEN_PCI_H */