#include <linux/iopoll.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/msi.h>
#include <linux/of_address.h>
#include <linux/of_pci.h>
#include <linux/pci_regs.h>
#include <linux/platform_device.h>
#include "../../pci.h"
#include "pcie-designware.h"
static struct pci_ops dw_pcie_ops;
static struct pci_ops dw_child_pcie_ops;
static void dw_msi_ack_irq(struct irq_data *d)
{ … }
static void dw_msi_mask_irq(struct irq_data *d)
{ … }
static void dw_msi_unmask_irq(struct irq_data *d)
{ … }
static struct irq_chip dw_pcie_msi_irq_chip = …;
static struct msi_domain_info dw_pcie_msi_domain_info = …;
irqreturn_t dw_handle_msi_irq(struct dw_pcie_rp *pp)
{ … }
static void dw_chained_msi_isr(struct irq_desc *desc)
{ … }
static void dw_pci_setup_msi_msg(struct irq_data *d, struct msi_msg *msg)
{ … }
static void dw_pci_bottom_mask(struct irq_data *d)
{ … }
static void dw_pci_bottom_unmask(struct irq_data *d)
{ … }
static void dw_pci_bottom_ack(struct irq_data *d)
{ … }
static struct irq_chip dw_pci_msi_bottom_irq_chip = …;
static int dw_pcie_irq_domain_alloc(struct irq_domain *domain,
unsigned int virq, unsigned int nr_irqs,
void *args)
{ … }
static void dw_pcie_irq_domain_free(struct irq_domain *domain,
unsigned int virq, unsigned int nr_irqs)
{ … }
static const struct irq_domain_ops dw_pcie_msi_domain_ops = …;
int dw_pcie_allocate_domains(struct dw_pcie_rp *pp)
{ … }
static void dw_pcie_free_msi(struct dw_pcie_rp *pp)
{ … }
static void dw_pcie_msi_init(struct dw_pcie_rp *pp)
{ … }
static int dw_pcie_parse_split_msi_irq(struct dw_pcie_rp *pp)
{ … }
static int dw_pcie_msi_host_init(struct dw_pcie_rp *pp)
{ … }
static void dw_pcie_host_request_msg_tlp_res(struct dw_pcie_rp *pp)
{ … }
int dw_pcie_host_init(struct dw_pcie_rp *pp)
{ … }
EXPORT_SYMBOL_GPL(…);
void dw_pcie_host_deinit(struct dw_pcie_rp *pp)
{ … }
EXPORT_SYMBOL_GPL(…);
static void __iomem *dw_pcie_other_conf_map_bus(struct pci_bus *bus,
unsigned int devfn, int where)
{ … }
static int dw_pcie_rd_other_conf(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 *val)
{ … }
static int dw_pcie_wr_other_conf(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 val)
{ … }
static struct pci_ops dw_child_pcie_ops = …;
void __iomem *dw_pcie_own_conf_map_bus(struct pci_bus *bus, unsigned int devfn, int where)
{ … }
EXPORT_SYMBOL_GPL(…);
static struct pci_ops dw_pcie_ops = …;
static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp)
{ … }
int dw_pcie_setup_rc(struct dw_pcie_rp *pp)
{ … }
EXPORT_SYMBOL_GPL(…);
static int dw_pcie_pme_turn_off(struct dw_pcie *pci)
{ … }
int dw_pcie_suspend_noirq(struct dw_pcie *pci)
{ … }
EXPORT_SYMBOL_GPL(…);
int dw_pcie_resume_noirq(struct dw_pcie *pci)
{ … }
EXPORT_SYMBOL_GPL(…);