pci.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. extern int __init pci_xen_hvm_init(void);
  6. #define pci_xen 1
  7. #else
  8. #define pci_xen 0
  9. #define pci_xen_init (0)
  10. static inline int pci_xen_hvm_init(void)
  11. {
  12. return -1;
  13. }
  14. #endif
  15. #if defined(CONFIG_XEN_DOM0)
  16. void __init xen_setup_pirqs(void);
  17. #else
  18. static inline void __init xen_setup_pirqs(void)
  19. {
  20. }
  21. #endif
  22. #if defined(CONFIG_PCI_MSI)
  23. #if defined(CONFIG_PCI_XEN)
  24. /* The drivers/pci/xen-pcifront.c sets this structure to
  25. * its own functions.
  26. */
  27. struct xen_pci_frontend_ops {
  28. int (*enable_msi)(struct pci_dev *dev, int **vectors);
  29. void (*disable_msi)(struct pci_dev *dev);
  30. int (*enable_msix)(struct pci_dev *dev, int **vectors, int nvec);
  31. void (*disable_msix)(struct pci_dev *dev);
  32. };
  33. extern struct xen_pci_frontend_ops *xen_pci_frontend;
  34. static inline int xen_pci_frontend_enable_msi(struct pci_dev *dev,
  35. int **vectors)
  36. {
  37. if (xen_pci_frontend && xen_pci_frontend->enable_msi)
  38. return xen_pci_frontend->enable_msi(dev, vectors);
  39. return -ENODEV;
  40. }
  41. static inline void xen_pci_frontend_disable_msi(struct pci_dev *dev)
  42. {
  43. if (xen_pci_frontend && xen_pci_frontend->disable_msi)
  44. xen_pci_frontend->disable_msi(dev);
  45. }
  46. static inline int xen_pci_frontend_enable_msix(struct pci_dev *dev,
  47. int **vectors, int nvec)
  48. {
  49. if (xen_pci_frontend && xen_pci_frontend->enable_msix)
  50. return xen_pci_frontend->enable_msix(dev, vectors, nvec);
  51. return -ENODEV;
  52. }
  53. static inline void xen_pci_frontend_disable_msix(struct pci_dev *dev)
  54. {
  55. if (xen_pci_frontend && xen_pci_frontend->disable_msix)
  56. xen_pci_frontend->disable_msix(dev);
  57. }
  58. #endif /* CONFIG_PCI_XEN */
  59. #endif /* CONFIG_PCI_MSI */
  60. #endif /* _ASM_X86_XEN_PCI_H */