#ifndef _PCIE_CADENCE_H
#define _PCIE_CADENCE_H
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/pci-epf.h>
#include <linux/phy/phy.h>
#define LINK_WAIT_MAX_RETRIES …
#define LINK_WAIT_USLEEP_MIN …
#define LINK_WAIT_USLEEP_MAX …
#define CDNS_PCIE_LM_BASE …
#define CDNS_PCIE_LM_ID …
#define CDNS_PCIE_LM_ID_VENDOR_MASK …
#define CDNS_PCIE_LM_ID_VENDOR_SHIFT …
#define CDNS_PCIE_LM_ID_VENDOR(vid) …
#define CDNS_PCIE_LM_ID_SUBSYS_MASK …
#define CDNS_PCIE_LM_ID_SUBSYS_SHIFT …
#define CDNS_PCIE_LM_ID_SUBSYS(sub) …
#define CDNS_PCIE_LM_RP_RID …
#define CDNS_PCIE_LM_RP_RID_MASK …
#define CDNS_PCIE_LM_RP_RID_SHIFT …
#define CDNS_PCIE_LM_RP_RID_(rid) …
#define CDNS_PCIE_LM_EP_ID …
#define CDNS_PCIE_LM_EP_ID_DEV_MASK …
#define CDNS_PCIE_LM_EP_ID_DEV_SHIFT …
#define CDNS_PCIE_LM_EP_ID_BUS_MASK …
#define CDNS_PCIE_LM_EP_ID_BUS_SHIFT …
#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG(bar, fn) …
#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG0(fn) …
#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG1(fn) …
#define CDNS_PCIE_LM_EP_VFUNC_BAR_CFG(bar, fn) …
#define CDNS_PCIE_LM_EP_VFUNC_BAR_CFG0(fn) …
#define CDNS_PCIE_LM_EP_VFUNC_BAR_CFG1(fn) …
#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(b) …
#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_APERTURE(b, a) …
#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(b) …
#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_CTRL(b, c) …
#define CDNS_PCIE_LM_EP_FUNC_CFG …
#define CDNS_PCIE_LM_RC_BAR_CFG …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR0_APERTURE_MASK …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR0_APERTURE(a) …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR0_CTRL_MASK …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR0_CTRL(c) …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR1_APERTURE_MASK …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR1_APERTURE(a) …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR1_CTRL_MASK …
#define CDNS_PCIE_LM_RC_BAR_CFG_BAR1_CTRL(c) …
#define CDNS_PCIE_LM_RC_BAR_CFG_PREFETCH_MEM_ENABLE …
#define CDNS_PCIE_LM_RC_BAR_CFG_PREFETCH_MEM_32BITS …
#define CDNS_PCIE_LM_RC_BAR_CFG_PREFETCH_MEM_64BITS …
#define CDNS_PCIE_LM_RC_BAR_CFG_IO_ENABLE …
#define CDNS_PCIE_LM_RC_BAR_CFG_IO_16BITS …
#define CDNS_PCIE_LM_RC_BAR_CFG_IO_32BITS …
#define CDNS_PCIE_LM_RC_BAR_CFG_CHECK_ENABLE …
#define CDNS_PCIE_LM_BAR_CFG_CTRL_DISABLED …
#define CDNS_PCIE_LM_BAR_CFG_CTRL_IO_32BITS …
#define CDNS_PCIE_LM_BAR_CFG_CTRL_MEM_32BITS …
#define CDNS_PCIE_LM_BAR_CFG_CTRL_PREFETCH_MEM_32BITS …
#define CDNS_PCIE_LM_BAR_CFG_CTRL_MEM_64BITS …
#define CDNS_PCIE_LM_BAR_CFG_CTRL_PREFETCH_MEM_64BITS …
#define LM_RC_BAR_CFG_CTRL_DISABLED(bar) …
#define LM_RC_BAR_CFG_CTRL_IO_32BITS(bar) …
#define LM_RC_BAR_CFG_CTRL_MEM_32BITS(bar) …
#define LM_RC_BAR_CFG_CTRL_PREF_MEM_32BITS(bar) …
#define LM_RC_BAR_CFG_CTRL_MEM_64BITS(bar) …
#define LM_RC_BAR_CFG_CTRL_PREF_MEM_64BITS(bar) …
#define LM_RC_BAR_CFG_APERTURE(bar, aperture) …
#define CDNS_PCIE_LM_PTM_CTRL …
#define CDNS_PCIE_LM_TPM_CTRL_PTMRSEN …
#define CDNS_PCIE_EP_FUNC_BASE(fn) …
#define CDNS_PCIE_EP_FUNC_MSI_CAP_OFFSET …
#define CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET …
#define CDNS_PCIE_EP_FUNC_DEV_CAP_OFFSET …
#define CDNS_PCIE_EP_FUNC_SRIOV_CAP_OFFSET …
#define CDNS_PCIE_CORE_PF_I_ARI_CAP_AND_CTRL(fn) …
#define CDNS_PCIE_ARI_CAP_NFN_MASK …
#define CDNS_PCIE_RP_BASE …
#define CDNS_PCIE_RP_CAP_OFFSET …
#define CDNS_PCIE_AT_BASE …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0(r) …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_NBITS_MASK …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_NBITS(nbits) …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN(devfn) …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_BUS_MASK …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_BUS(bus) …
#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR1(r) …
#define CDNS_PCIE_AT_OB_REGION_DESC0(r) …
#define CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_MASK …
#define CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_MEM …
#define CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_IO …
#define CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_CONF_TYPE0 …
#define CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_CONF_TYPE1 …
#define CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_NORMAL_MSG …
#define CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_VENDOR_MSG …
#define CDNS_PCIE_AT_OB_REGION_DESC0_HARDCODED_RID …
#define CDNS_PCIE_AT_OB_REGION_DESC0_DEVFN_MASK …
#define CDNS_PCIE_AT_OB_REGION_DESC0_DEVFN(devfn) …
#define CDNS_PCIE_AT_OB_REGION_DESC1(r) …
#define CDNS_PCIE_AT_OB_REGION_DESC1_BUS_MASK …
#define CDNS_PCIE_AT_OB_REGION_DESC1_BUS(bus) …
#define CDNS_PCIE_AT_OB_REGION_CPU_ADDR0(r) …
#define CDNS_PCIE_AT_OB_REGION_CPU_ADDR0_NBITS_MASK …
#define CDNS_PCIE_AT_OB_REGION_CPU_ADDR0_NBITS(nbits) …
#define CDNS_PCIE_AT_OB_REGION_CPU_ADDR1(r) …
#define CDNS_PCIE_AT_IB_RP_BAR_ADDR0(bar) …
#define CDNS_PCIE_AT_IB_RP_BAR_ADDR0_NBITS_MASK …
#define CDNS_PCIE_AT_IB_RP_BAR_ADDR0_NBITS(nbits) …
#define CDNS_PCIE_AT_IB_RP_BAR_ADDR1(bar) …
#define CDNS_PCIE_AT_LINKDOWN …
#define CDNS_PCIE_LTSSM_CONTROL_CAP …
#define CDNS_PCIE_DETECT_QUIET_MIN_DELAY_MASK …
#define CDNS_PCIE_DETECT_QUIET_MIN_DELAY_SHIFT …
#define CDNS_PCIE_DETECT_QUIET_MIN_DELAY(delay) …
enum cdns_pcie_rp_bar { … };
#define CDNS_PCIE_RP_MAX_IB …
#define CDNS_PCIE_MAX_OB …
struct cdns_pcie_rp_ib_bar { … };
#define CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar) …
#define CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar) …
#define CDNS_PCIE_NORMAL_MSG_ROUTING_MASK …
#define CDNS_PCIE_NORMAL_MSG_ROUTING(route) …
#define CDNS_PCIE_NORMAL_MSG_CODE_MASK …
#define CDNS_PCIE_NORMAL_MSG_CODE(code) …
#define CDNS_PCIE_MSG_NO_DATA …
struct cdns_pcie;
enum cdns_pcie_msg_code { … };
enum cdns_pcie_msg_routing { … };
struct cdns_pcie_ops { … };
struct cdns_pcie { … };
struct cdns_pcie_rc { … };
struct cdns_pcie_epf { … };
struct cdns_pcie_ep { … };
static inline void cdns_pcie_writel(struct cdns_pcie *pcie, u32 reg, u32 value)
{ … }
static inline u32 cdns_pcie_readl(struct cdns_pcie *pcie, u32 reg)
{ … }
static inline u32 cdns_pcie_read_sz(void __iomem *addr, int size)
{ … }
static inline void cdns_pcie_write_sz(void __iomem *addr, int size, u32 value)
{ … }
static inline void cdns_pcie_rp_writeb(struct cdns_pcie *pcie,
u32 reg, u8 value)
{ … }
static inline void cdns_pcie_rp_writew(struct cdns_pcie *pcie,
u32 reg, u16 value)
{ … }
static inline u16 cdns_pcie_rp_readw(struct cdns_pcie *pcie, u32 reg)
{ … }
static inline void cdns_pcie_ep_fn_writeb(struct cdns_pcie *pcie, u8 fn,
u32 reg, u8 value)
{ … }
static inline void cdns_pcie_ep_fn_writew(struct cdns_pcie *pcie, u8 fn,
u32 reg, u16 value)
{ … }
static inline void cdns_pcie_ep_fn_writel(struct cdns_pcie *pcie, u8 fn,
u32 reg, u32 value)
{ … }
static inline u16 cdns_pcie_ep_fn_readw(struct cdns_pcie *pcie, u8 fn, u32 reg)
{ … }
static inline u32 cdns_pcie_ep_fn_readl(struct cdns_pcie *pcie, u8 fn, u32 reg)
{ … }
static inline int cdns_pcie_start_link(struct cdns_pcie *pcie)
{ … }
static inline void cdns_pcie_stop_link(struct cdns_pcie *pcie)
{ … }
static inline bool cdns_pcie_link_up(struct cdns_pcie *pcie)
{ … }
#ifdef CONFIG_PCIE_CADENCE_HOST
int cdns_pcie_host_setup(struct cdns_pcie_rc *rc);
void __iomem *cdns_pci_map_bus(struct pci_bus *bus, unsigned int devfn,
int where);
#else
static inline int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
{
return 0;
}
static inline void __iomem *cdns_pci_map_bus(struct pci_bus *bus, unsigned int devfn,
int where)
{
return NULL;
}
#endif
#ifdef CONFIG_PCIE_CADENCE_EP
int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep);
#else
static inline int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
{
return 0;
}
#endif
void cdns_pcie_detect_quiet_min_delay_set(struct cdns_pcie *pcie);
void cdns_pcie_set_outbound_region(struct cdns_pcie *pcie, u8 busnr, u8 fn,
u32 r, bool is_io,
u64 cpu_addr, u64 pci_addr, size_t size);
void cdns_pcie_set_outbound_region_for_normal_msg(struct cdns_pcie *pcie,
u8 busnr, u8 fn,
u32 r, u64 cpu_addr);
void cdns_pcie_reset_outbound_region(struct cdns_pcie *pcie, u32 r);
void cdns_pcie_disable_phy(struct cdns_pcie *pcie);
int cdns_pcie_enable_phy(struct cdns_pcie *pcie);
int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie);
extern const struct dev_pm_ops cdns_pcie_pm_ops;
#endif