#ifndef _PCIE_ROCKCHIP_H
#define _PCIE_ROCKCHIP_H
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/pci-ecam.h>
#define HIWORD_UPDATE(mask, val) …
#define HIWORD_UPDATE_BIT(val) …
#define ENCODE_LANES(x) …
#define MAX_LANE_NUM …
#define MAX_REGION_LIMIT …
#define MIN_EP_APERTURE …
#define PCIE_CLIENT_BASE …
#define PCIE_CLIENT_CONFIG …
#define PCIE_CLIENT_CONF_ENABLE …
#define PCIE_CLIENT_CONF_DISABLE …
#define PCIE_CLIENT_LINK_TRAIN_ENABLE …
#define PCIE_CLIENT_ARI_ENABLE …
#define PCIE_CLIENT_CONF_LANE_NUM(x) …
#define PCIE_CLIENT_MODE_RC …
#define PCIE_CLIENT_MODE_EP …
#define PCIE_CLIENT_GEN_SEL_1 …
#define PCIE_CLIENT_GEN_SEL_2 …
#define PCIE_CLIENT_LEGACY_INT_CTRL …
#define PCIE_CLIENT_INT_IN_ASSERT …
#define PCIE_CLIENT_INT_IN_DEASSERT …
#define PCIE_CLIENT_INT_PEND_ST_PEND …
#define PCIE_CLIENT_INT_PEND_ST_NORMAL …
#define PCIE_CLIENT_SIDE_BAND_STATUS …
#define PCIE_CLIENT_PHY_ST …
#define PCIE_CLIENT_DEBUG_OUT_0 …
#define PCIE_CLIENT_DEBUG_LTSSM_MASK …
#define PCIE_CLIENT_DEBUG_LTSSM_L1 …
#define PCIE_CLIENT_DEBUG_LTSSM_L2 …
#define PCIE_CLIENT_BASIC_STATUS1 …
#define PCIE_CLIENT_LINK_STATUS_UP …
#define PCIE_CLIENT_LINK_STATUS_MASK …
#define PCIE_CLIENT_INT_MASK …
#define PCIE_CLIENT_INT_STATUS …
#define PCIE_CLIENT_INTR_MASK …
#define PCIE_CLIENT_INTR_SHIFT …
#define PCIE_CLIENT_INT_LEGACY_DONE …
#define PCIE_CLIENT_INT_MSG …
#define PCIE_CLIENT_INT_HOT_RST …
#define PCIE_CLIENT_INT_DPA …
#define PCIE_CLIENT_INT_FATAL_ERR …
#define PCIE_CLIENT_INT_NFATAL_ERR …
#define PCIE_CLIENT_INT_CORR_ERR …
#define PCIE_CLIENT_INT_INTD …
#define PCIE_CLIENT_INT_INTC …
#define PCIE_CLIENT_INT_INTB …
#define PCIE_CLIENT_INT_INTA …
#define PCIE_CLIENT_INT_LOCAL …
#define PCIE_CLIENT_INT_UDMA …
#define PCIE_CLIENT_INT_PHY …
#define PCIE_CLIENT_INT_HOT_PLUG …
#define PCIE_CLIENT_INT_PWR_STCG …
#define PCIE_CLIENT_INT_LEGACY …
#define PCIE_CLIENT_INT_CLI …
#define PCIE_CORE_CTRL_MGMT_BASE …
#define PCIE_CORE_CTRL …
#define PCIE_CORE_PL_CONF_SPEED_5G …
#define PCIE_CORE_PL_CONF_SPEED_MASK …
#define PCIE_CORE_PL_CONF_LANE_MASK …
#define PCIE_CORE_PL_CONF_LANE_SHIFT …
#define PCIE_CORE_CTRL_PLC1 …
#define PCIE_CORE_CTRL_PLC1_FTS_MASK …
#define PCIE_CORE_CTRL_PLC1_FTS_SHIFT …
#define PCIE_CORE_CTRL_PLC1_FTS_CNT …
#define PCIE_CORE_TXCREDIT_CFG1 …
#define PCIE_CORE_TXCREDIT_CFG1_MUI_MASK …
#define PCIE_CORE_TXCREDIT_CFG1_MUI_SHIFT …
#define PCIE_CORE_TXCREDIT_CFG1_MUI_ENCODE(x) …
#define PCIE_CORE_LANE_MAP …
#define PCIE_CORE_LANE_MAP_MASK …
#define PCIE_CORE_LANE_MAP_REVERSE …
#define PCIE_CORE_INT_STATUS …
#define PCIE_CORE_INT_PRFPE …
#define PCIE_CORE_INT_CRFPE …
#define PCIE_CORE_INT_RRPE …
#define PCIE_CORE_INT_PRFO …
#define PCIE_CORE_INT_CRFO …
#define PCIE_CORE_INT_RT …
#define PCIE_CORE_INT_RTR …
#define PCIE_CORE_INT_PE …
#define PCIE_CORE_INT_MTR …
#define PCIE_CORE_INT_UCR …
#define PCIE_CORE_INT_FCE …
#define PCIE_CORE_INT_CT …
#define PCIE_CORE_INT_UTC …
#define PCIE_CORE_INT_MMVC …
#define PCIE_CORE_CONFIG_VENDOR …
#define PCIE_CORE_INT_MASK …
#define PCIE_CORE_PHY_FUNC_CFG …
#define PCIE_RC_BAR_CONF …
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_DISABLED …
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS …
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS …
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS …
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS …
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS …
#define PCIE_CORE_INT …
#define PCIE_RC_RP_ATS_BASE …
#define PCIE_RC_CONFIG_NORMAL_BASE …
#define PCIE_EP_PF_CONFIG_REGS_BASE …
#define PCIE_RC_CONFIG_BASE …
#define PCIE_EP_CONFIG_BASE …
#define PCIE_EP_CONFIG_DID_VID …
#define PCIE_RC_CONFIG_RID_CCR …
#define PCIE_RC_CONFIG_DCR …
#define PCIE_RC_CONFIG_DCR_CSPL_SHIFT …
#define PCIE_RC_CONFIG_DCR_CSPL_LIMIT …
#define PCIE_RC_CONFIG_DCR_CPLS_SHIFT …
#define PCIE_RC_CONFIG_DCSR …
#define PCIE_RC_CONFIG_DCSR_MPS_MASK …
#define PCIE_RC_CONFIG_DCSR_MPS_256 …
#define PCIE_RC_CONFIG_LINK_CAP …
#define PCIE_RC_CONFIG_LINK_CAP_L0S …
#define PCIE_RC_CONFIG_LCS …
#define PCIE_RC_CONFIG_L1_SUBSTATE_CTRL2 …
#define PCIE_RC_CONFIG_THP_CAP …
#define PCIE_RC_CONFIG_THP_CAP_NEXT_MASK …
#define MAX_AXI_IB_ROOTPORT_REGION_NUM …
#define MIN_AXI_ADDR_BITS_PASSED …
#define PCIE_ADDR_MASK …
#define PCIE_CORE_AXI_CONF_BASE …
#define PCIE_CORE_OB_REGION_ADDR0 …
#define PCIE_CORE_OB_REGION_ADDR0_NUM_BITS …
#define PCIE_CORE_OB_REGION_ADDR0_LO_ADDR …
#define PCIE_CORE_OB_REGION_ADDR1 …
#define PCIE_CORE_OB_REGION_DESC0 …
#define PCIE_CORE_OB_REGION_DESC1 …
#define PCIE_CORE_AXI_INBOUND_BASE …
#define PCIE_RP_IB_ADDR0 …
#define PCIE_CORE_IB_REGION_ADDR0_NUM_BITS …
#define PCIE_CORE_IB_REGION_ADDR0_LO_ADDR …
#define PCIE_RP_IB_ADDR1 …
#define AXI_REGION_SIZE …
#define AXI_REGION_0_SIZE …
#define OB_REG_SIZE_SHIFT …
#define IB_ROOT_PORT_REG_SIZE_SHIFT …
#define AXI_WRAPPER_IO_WRITE …
#define AXI_WRAPPER_MEM_WRITE …
#define AXI_WRAPPER_TYPE0_CFG …
#define AXI_WRAPPER_TYPE1_CFG …
#define AXI_WRAPPER_NOR_MSG …
#define PCIE_RC_SEND_PME_OFF …
#define ROCKCHIP_VENDOR_ID …
#define PCIE_LINK_IS_L2(x) …
#define PCIE_LINK_UP(x) …
#define PCIE_LINK_IS_GEN2(x) …
#define RC_REGION_0_ADDR_TRANS_H …
#define RC_REGION_0_ADDR_TRANS_L …
#define RC_REGION_0_PASS_BITS …
#define RC_REGION_0_TYPE_MASK …
#define MAX_AXI_WRAPPER_REGION_NUM …
#define ROCKCHIP_PCIE_MSG_ROUTING_TO_RC …
#define ROCKCHIP_PCIE_MSG_ROUTING_VIA_ADDR …
#define ROCKCHIP_PCIE_MSG_ROUTING_VIA_ID …
#define ROCKCHIP_PCIE_MSG_ROUTING_BROADCAST …
#define ROCKCHIP_PCIE_MSG_ROUTING_LOCAL_INTX …
#define ROCKCHIP_PCIE_MSG_ROUTING_PME_ACK …
#define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTA …
#define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTB …
#define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTC …
#define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTD …
#define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTA …
#define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTB …
#define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTC …
#define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTD …
#define ROCKCHIP_PCIE_MSG_ROUTING_MASK …
#define ROCKCHIP_PCIE_MSG_ROUTING(route) …
#define ROCKCHIP_PCIE_MSG_CODE_MASK …
#define ROCKCHIP_PCIE_MSG_CODE(code) …
#define ROCKCHIP_PCIE_MSG_NO_DATA …
#define ROCKCHIP_PCIE_EP_CMD_STATUS …
#define ROCKCHIP_PCIE_EP_CMD_STATUS_IS …
#define ROCKCHIP_PCIE_EP_MSI_CTRL_REG …
#define ROCKCHIP_PCIE_EP_MSI_CP1_OFFSET …
#define ROCKCHIP_PCIE_EP_MSI_CP1_MASK …
#define ROCKCHIP_PCIE_EP_MSI_FLAGS_OFFSET …
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_OFFSET …
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_MASK …
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MME_OFFSET …
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MME_MASK …
#define ROCKCHIP_PCIE_EP_MSI_CTRL_ME …
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MASK_MSI_CAP …
#define ROCKCHIP_PCIE_EP_MSIX_CAP_REG …
#define ROCKCHIP_PCIE_EP_MSIX_CAP_CP_OFFSET …
#define ROCKCHIP_PCIE_EP_MSIX_CAP_CP_MASK …
#define ROCKCHIP_PCIE_EP_DUMMY_IRQ_ADDR …
#define ROCKCHIP_PCIE_EP_PCI_LEGACY_IRQ_ADDR …
#define ROCKCHIP_PCIE_EP_FUNC_BASE(fn) …
#define ROCKCHIP_PCIE_EP_VIRT_FUNC_BASE(fn) …
#define ROCKCHIP_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar) …
#define ROCKCHIP_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar) …
#define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK …
#define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN(devfn) …
#define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_BUS_MASK …
#define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_BUS(bus) …
#define PCIE_RC_EP_ATR_OB_REGIONS_1_32 …
#define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0(r) …
#define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR1(r) …
#define ROCKCHIP_PCIE_AT_OB_REGION_DESC0_HARDCODED_RID …
#define ROCKCHIP_PCIE_AT_OB_REGION_DESC0_DEVFN_MASK …
#define ROCKCHIP_PCIE_AT_OB_REGION_DESC0_DEVFN(devfn) …
#define ROCKCHIP_PCIE_AT_OB_REGION_DESC0(r) …
#define ROCKCHIP_PCIE_AT_OB_REGION_DESC1(r) …
#define ROCKCHIP_PCIE_AT_OB_REGION_DESC2(r) …
#define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG0(fn) …
#define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG1(fn) …
#define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(b) …
#define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_APERTURE(b, a) …
#define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(b) …
#define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_CTRL(b, c) …
struct rockchip_pcie { … };
static u32 rockchip_pcie_read(struct rockchip_pcie *rockchip, u32 reg)
{ … }
static void rockchip_pcie_write(struct rockchip_pcie *rockchip, u32 val,
u32 reg)
{ … }
int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip);
int rockchip_pcie_init_port(struct rockchip_pcie *rockchip);
int rockchip_pcie_get_phys(struct rockchip_pcie *rockchip);
void rockchip_pcie_deinit_phys(struct rockchip_pcie *rockchip);
int rockchip_pcie_enable_clocks(struct rockchip_pcie *rockchip);
void rockchip_pcie_disable_clocks(void *data);
void rockchip_pcie_cfg_configuration_accesses(
struct rockchip_pcie *rockchip, u32 type);
#endif