#include <linux/kernel.h>
#include <linux/pci.h>
#include "pciback.h"
#include "conf_space.h"
static LIST_HEAD(capabilities);
struct xen_pcibk_config_capability { … };
static const struct config_field caplist_header[] = …;
static inline void register_capability(struct xen_pcibk_config_capability *cap)
{ … }
int xen_pcibk_config_capability_add_fields(struct pci_dev *dev)
{ … }
static int vpd_address_write(struct pci_dev *dev, int offset, u16 value,
void *data)
{ … }
static const struct config_field caplist_vpd[] = …;
static int pm_caps_read(struct pci_dev *dev, int offset, u16 *value,
void *data)
{ … }
#define PM_OK_BITS …
static int pm_ctrl_write(struct pci_dev *dev, int offset, u16 new_value,
void *data)
{ … }
static void *pm_ctrl_init(struct pci_dev *dev, int offset)
{ … }
static const struct config_field caplist_pm[] = …;
static struct msi_msix_field_config { … } msi_field_config = …, msix_field_config = …;
static void *msi_field_init(struct pci_dev *dev, int offset)
{ … }
static void *msix_field_init(struct pci_dev *dev, int offset)
{ … }
static int msi_msix_flags_write(struct pci_dev *dev, int offset, u16 new_value,
void *data)
{ … }
static const struct config_field caplist_msix[] = …;
static const struct config_field caplist_msi[] = …;
static struct xen_pcibk_config_capability xen_pcibk_config_capability_pm = …;
static struct xen_pcibk_config_capability xen_pcibk_config_capability_vpd = …;
static struct xen_pcibk_config_capability xen_pcibk_config_capability_msi = …;
static struct xen_pcibk_config_capability xen_pcibk_config_capability_msix = …;
int xen_pcibk_config_capability_init(void)
{ … }