#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/msi.h>
#include <linux/pci_regs.h>
#include <linux/pci-ecam.h>
#include "pcie-plda.h"
void __iomem *plda_pcie_map_bus(struct pci_bus *bus, unsigned int devfn,
int where)
{ … }
EXPORT_SYMBOL_GPL(…);
static void plda_handle_msi(struct irq_desc *desc)
{ … }
static void plda_msi_bottom_irq_ack(struct irq_data *data)
{ … }
static void plda_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
{ … }
static int plda_msi_set_affinity(struct irq_data *irq_data,
const struct cpumask *mask, bool force)
{ … }
static struct irq_chip plda_msi_bottom_irq_chip = …;
static int plda_irq_msi_domain_alloc(struct irq_domain *domain,
unsigned int virq,
unsigned int nr_irqs,
void *args)
{ … }
static void plda_irq_msi_domain_free(struct irq_domain *domain,
unsigned int virq,
unsigned int nr_irqs)
{ … }
static const struct irq_domain_ops msi_domain_ops = …;
static struct irq_chip plda_msi_irq_chip = …;
static struct msi_domain_info plda_msi_domain_info = …;
static int plda_allocate_msi_domains(struct plda_pcie_rp *port)
{ … }
static void plda_handle_intx(struct irq_desc *desc)
{ … }
static void plda_ack_intx_irq(struct irq_data *data)
{ … }
static void plda_mask_intx_irq(struct irq_data *data)
{ … }
static void plda_unmask_intx_irq(struct irq_data *data)
{ … }
static struct irq_chip plda_intx_irq_chip = …;
static int plda_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
irq_hw_number_t hwirq)
{ … }
static const struct irq_domain_ops intx_domain_ops = …;
static u32 plda_get_events(struct plda_pcie_rp *port)
{ … }
static irqreturn_t plda_event_handler(int irq, void *dev_id)
{ … }
static void plda_handle_event(struct irq_desc *desc)
{ … }
static u32 plda_hwirq_to_mask(int hwirq)
{ … }
static void plda_ack_event_irq(struct irq_data *data)
{ … }
static void plda_mask_event_irq(struct irq_data *data)
{ … }
static void plda_unmask_event_irq(struct irq_data *data)
{ … }
static struct irq_chip plda_event_irq_chip = …;
static const struct plda_event_ops plda_event_ops = …;
static int plda_pcie_event_map(struct irq_domain *domain, unsigned int irq,
irq_hw_number_t hwirq)
{ … }
static const struct irq_domain_ops plda_event_domain_ops = …;
static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
{ … }
int plda_init_interrupts(struct platform_device *pdev,
struct plda_pcie_rp *port,
const struct plda_event *event)
{ … }
EXPORT_SYMBOL_GPL(…);
void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
phys_addr_t axi_addr, phys_addr_t pci_addr,
size_t size)
{ … }
EXPORT_SYMBOL_GPL(…);
int plda_pcie_setup_iomems(struct pci_host_bridge *bridge,
struct plda_pcie_rp *port)
{ … }
EXPORT_SYMBOL_GPL(…);
static void plda_pcie_irq_domain_deinit(struct plda_pcie_rp *pcie)
{ … }
int plda_pcie_host_init(struct plda_pcie_rp *port, struct pci_ops *ops,
const struct plda_event *plda_event)
{ … }
EXPORT_SYMBOL_GPL(…);
void plda_pcie_host_deinit(struct plda_pcie_rp *port)
{ … }
EXPORT_SYMBOL_GPL(…);