#include <linux/align.h>
#include <linux/bitfield.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include "pcie-designware.h"
#include <linux/pci-epc.h>
#include <linux/pci-epf.h>
struct dw_pcie_ep_func *
dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep *ep, u8 func_no)
{ … }
static void __dw_pcie_ep_reset_bar(struct dw_pcie *pci, u8 func_no,
enum pci_barno bar, int flags)
{ … }
void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar)
{ … }
EXPORT_SYMBOL_GPL(…);
static u8 __dw_pcie_ep_find_next_cap(struct dw_pcie_ep *ep, u8 func_no,
u8 cap_ptr, u8 cap)
{ … }
static u8 dw_pcie_ep_find_capability(struct dw_pcie_ep *ep, u8 func_no, u8 cap)
{ … }
static int dw_pcie_ep_write_header(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
struct pci_epf_header *hdr)
{ … }
static int dw_pcie_ep_inbound_atu(struct dw_pcie_ep *ep, u8 func_no, int type,
dma_addr_t cpu_addr, enum pci_barno bar)
{ … }
static int dw_pcie_ep_outbound_atu(struct dw_pcie_ep *ep,
struct dw_pcie_ob_atu_cfg *atu)
{ … }
static void dw_pcie_ep_clear_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
struct pci_epf_bar *epf_bar)
{ … }
static int dw_pcie_ep_set_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
struct pci_epf_bar *epf_bar)
{ … }
static int dw_pcie_find_index(struct dw_pcie_ep *ep, phys_addr_t addr,
u32 *atu_index)
{ … }
static void dw_pcie_ep_unmap_addr(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
phys_addr_t addr)
{ … }
static int dw_pcie_ep_map_addr(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
phys_addr_t addr, u64 pci_addr, size_t size)
{ … }
static int dw_pcie_ep_get_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no)
{ … }
static int dw_pcie_ep_set_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
u8 interrupts)
{ … }
static int dw_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no, u8 vfunc_no)
{ … }
static int dw_pcie_ep_set_msix(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
u16 interrupts, enum pci_barno bir, u32 offset)
{ … }
static int dw_pcie_ep_raise_irq(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
unsigned int type, u16 interrupt_num)
{ … }
static void dw_pcie_ep_stop(struct pci_epc *epc)
{ … }
static int dw_pcie_ep_start(struct pci_epc *epc)
{ … }
static const struct pci_epc_features*
dw_pcie_ep_get_features(struct pci_epc *epc, u8 func_no, u8 vfunc_no)
{ … }
static const struct pci_epc_ops epc_ops = …;
int dw_pcie_ep_raise_intx_irq(struct dw_pcie_ep *ep, u8 func_no)
{ … }
EXPORT_SYMBOL_GPL(…);
int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no,
u8 interrupt_num)
{ … }
EXPORT_SYMBOL_GPL(…);
int dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep *ep, u8 func_no,
u16 interrupt_num)
{ … }
int dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep *ep, u8 func_no,
u16 interrupt_num)
{ … }
void dw_pcie_ep_cleanup(struct dw_pcie_ep *ep)
{ … }
EXPORT_SYMBOL_GPL(…);
void dw_pcie_ep_deinit(struct dw_pcie_ep *ep)
{ … }
EXPORT_SYMBOL_GPL(…);
static unsigned int dw_pcie_ep_find_ext_capability(struct dw_pcie *pci, int cap)
{ … }
static void dw_pcie_ep_init_non_sticky_registers(struct dw_pcie *pci)
{ … }
int dw_pcie_ep_init_registers(struct dw_pcie_ep *ep)
{ … }
EXPORT_SYMBOL_GPL(…);
void dw_pcie_ep_linkup(struct dw_pcie_ep *ep)
{ … }
EXPORT_SYMBOL_GPL(…);
void dw_pcie_ep_linkdown(struct dw_pcie_ep *ep)
{ … }
EXPORT_SYMBOL_GPL(…);
int dw_pcie_ep_init(struct dw_pcie_ep *ep)
{ … }
EXPORT_SYMBOL_GPL(…);