#ifndef _PORTDRV_H_
#define _PORTDRV_H_
#include <linux/compiler.h>
#define PCIE_PORT_SERVICE_PME_SHIFT …
#define PCIE_PORT_SERVICE_PME …
#define PCIE_PORT_SERVICE_AER_SHIFT …
#define PCIE_PORT_SERVICE_AER …
#define PCIE_PORT_SERVICE_HP_SHIFT …
#define PCIE_PORT_SERVICE_HP …
#define PCIE_PORT_SERVICE_DPC_SHIFT …
#define PCIE_PORT_SERVICE_DPC …
#define PCIE_PORT_SERVICE_BWNOTIF_SHIFT …
#define PCIE_PORT_SERVICE_BWNOTIF …
#define PCIE_PORT_DEVICE_MAXSERVICES …
extern bool pcie_ports_dpc_native;
#ifdef CONFIG_PCIEAER
int pcie_aer_init(void);
#else
static inline int pcie_aer_init(void) { return 0; }
#endif
#ifdef CONFIG_HOTPLUG_PCI_PCIE
int pcie_hp_init(void);
#else
static inline int pcie_hp_init(void) { return 0; }
#endif
#ifdef CONFIG_PCIE_PME
int pcie_pme_init(void);
#else
static inline int pcie_pme_init(void) { return 0; }
#endif
#ifdef CONFIG_PCIE_DPC
int pcie_dpc_init(void);
#else
static inline int pcie_dpc_init(void) { return 0; }
#endif
#define PCIE_ANY_PORT …
struct pcie_device { … };
#define to_pcie_device(d) …
static inline void set_service_data(struct pcie_device *dev, void *data)
{ … }
static inline void *get_service_data(struct pcie_device *dev)
{ … }
struct pcie_port_service_driver { … };
#define to_service_driver(d) …
int pcie_port_service_register(struct pcie_port_service_driver *new);
void pcie_port_service_unregister(struct pcie_port_service_driver *new);
extern const struct bus_type pcie_port_bus_type;
struct pci_dev;
#ifdef CONFIG_PCIE_PME
extern bool pcie_pme_msi_disabled;
static inline void pcie_pme_disable_msi(void)
{ … }
static inline bool pcie_pme_no_msi(void)
{ … }
void pcie_pme_interrupt_enable(struct pci_dev *dev, bool enable);
#else
static inline void pcie_pme_disable_msi(void) {}
static inline bool pcie_pme_no_msi(void) { return false; }
static inline void pcie_pme_interrupt_enable(struct pci_dev *dev, bool en) {}
#endif
struct device *pcie_port_find_device(struct pci_dev *dev, u32 service);
#endif