portdrv.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * File: portdrv.h
  3. * Purpose: PCI Express Port Bus Driver's Internal Data Structures
  4. *
  5. * Copyright (C) 2004 Intel
  6. * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
  7. */
  8. #ifndef _PORTDRV_H_
  9. #define _PORTDRV_H_
  10. #include <linux/compiler.h>
  11. #define PCIE_PORT_DEVICE_MAXSERVICES 4
  12. /*
  13. * According to the PCI Express Base Specification 2.0, the indices of
  14. * the MSI-X table entires used by port services must not exceed 31
  15. */
  16. #define PCIE_PORT_MAX_MSIX_ENTRIES 32
  17. #define get_descriptor_id(type, service) (((type - 4) << 4) | service)
  18. extern bool pcie_ports_disabled;
  19. extern struct bus_type pcie_port_bus_type;
  20. extern int pcie_port_device_register(struct pci_dev *dev);
  21. #ifdef CONFIG_PM
  22. extern int pcie_port_device_suspend(struct device *dev);
  23. extern int pcie_port_device_resume(struct device *dev);
  24. #endif
  25. extern void pcie_port_device_remove(struct pci_dev *dev);
  26. extern int __must_check pcie_port_bus_register(void);
  27. extern void pcie_port_bus_unregister(void);
  28. #ifdef CONFIG_PCIE_PME
  29. extern bool pcie_pme_msi_disabled;
  30. static inline void pcie_pme_disable_msi(void)
  31. {
  32. pcie_pme_msi_disabled = true;
  33. }
  34. static inline bool pcie_pme_no_msi(void)
  35. {
  36. return pcie_pme_msi_disabled;
  37. }
  38. #else /* !CONFIG_PCIE_PME */
  39. static inline void pcie_pme_disable_msi(void) {}
  40. static inline bool pcie_pme_no_msi(void) { return false; }
  41. #endif /* !CONFIG_PCIE_PME */
  42. #endif /* _PORTDRV_H_ */