Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ */
0002 /*
0003  * Rockchip AXI PCIe controller driver
0004  *
0005  * Copyright (c) 2018 Rockchip, Inc.
0006  *
0007  * Author: Shawn Lin <shawn.lin@rock-chips.com>
0008  *
0009  */
0010 
0011 #ifndef _PCIE_ROCKCHIP_H
0012 #define _PCIE_ROCKCHIP_H
0013 
0014 #include <linux/kernel.h>
0015 #include <linux/pci.h>
0016 #include <linux/pci-ecam.h>
0017 
0018 /*
0019  * The upper 16 bits of PCIE_CLIENT_CONFIG are a write mask for the lower 16
0020  * bits.  This allows atomic updates of the register without locking.
0021  */
0022 #define HIWORD_UPDATE(mask, val)    (((mask) << 16) | (val))
0023 #define HIWORD_UPDATE_BIT(val)      HIWORD_UPDATE(val, val)
0024 
0025 #define ENCODE_LANES(x)         ((((x) >> 1) & 3) << 4)
0026 #define MAX_LANE_NUM            4
0027 #define MAX_REGION_LIMIT        32
0028 #define MIN_EP_APERTURE         28
0029 
0030 #define PCIE_CLIENT_BASE        0x0
0031 #define PCIE_CLIENT_CONFIG      (PCIE_CLIENT_BASE + 0x00)
0032 #define   PCIE_CLIENT_CONF_ENABLE     HIWORD_UPDATE_BIT(0x0001)
0033 #define   PCIE_CLIENT_CONF_DISABLE       HIWORD_UPDATE(0x0001, 0)
0034 #define   PCIE_CLIENT_LINK_TRAIN_ENABLE   HIWORD_UPDATE_BIT(0x0002)
0035 #define   PCIE_CLIENT_ARI_ENABLE      HIWORD_UPDATE_BIT(0x0008)
0036 #define   PCIE_CLIENT_CONF_LANE_NUM(x)    HIWORD_UPDATE(0x0030, ENCODE_LANES(x))
0037 #define   PCIE_CLIENT_MODE_RC         HIWORD_UPDATE_BIT(0x0040)
0038 #define   PCIE_CLIENT_MODE_EP            HIWORD_UPDATE(0x0040, 0)
0039 #define   PCIE_CLIENT_GEN_SEL_1       HIWORD_UPDATE(0x0080, 0)
0040 #define   PCIE_CLIENT_GEN_SEL_2       HIWORD_UPDATE_BIT(0x0080)
0041 #define PCIE_CLIENT_DEBUG_OUT_0     (PCIE_CLIENT_BASE + 0x3c)
0042 #define   PCIE_CLIENT_DEBUG_LTSSM_MASK      GENMASK(5, 0)
0043 #define   PCIE_CLIENT_DEBUG_LTSSM_L1        0x18
0044 #define   PCIE_CLIENT_DEBUG_LTSSM_L2        0x19
0045 #define PCIE_CLIENT_BASIC_STATUS1   (PCIE_CLIENT_BASE + 0x48)
0046 #define   PCIE_CLIENT_LINK_STATUS_UP        0x00300000
0047 #define   PCIE_CLIENT_LINK_STATUS_MASK      0x00300000
0048 #define PCIE_CLIENT_INT_MASK        (PCIE_CLIENT_BASE + 0x4c)
0049 #define PCIE_CLIENT_INT_STATUS      (PCIE_CLIENT_BASE + 0x50)
0050 #define   PCIE_CLIENT_INTR_MASK         GENMASK(8, 5)
0051 #define   PCIE_CLIENT_INTR_SHIFT        5
0052 #define   PCIE_CLIENT_INT_LEGACY_DONE       BIT(15)
0053 #define   PCIE_CLIENT_INT_MSG           BIT(14)
0054 #define   PCIE_CLIENT_INT_HOT_RST       BIT(13)
0055 #define   PCIE_CLIENT_INT_DPA           BIT(12)
0056 #define   PCIE_CLIENT_INT_FATAL_ERR     BIT(11)
0057 #define   PCIE_CLIENT_INT_NFATAL_ERR        BIT(10)
0058 #define   PCIE_CLIENT_INT_CORR_ERR      BIT(9)
0059 #define   PCIE_CLIENT_INT_INTD          BIT(8)
0060 #define   PCIE_CLIENT_INT_INTC          BIT(7)
0061 #define   PCIE_CLIENT_INT_INTB          BIT(6)
0062 #define   PCIE_CLIENT_INT_INTA          BIT(5)
0063 #define   PCIE_CLIENT_INT_LOCAL         BIT(4)
0064 #define   PCIE_CLIENT_INT_UDMA          BIT(3)
0065 #define   PCIE_CLIENT_INT_PHY           BIT(2)
0066 #define   PCIE_CLIENT_INT_HOT_PLUG      BIT(1)
0067 #define   PCIE_CLIENT_INT_PWR_STCG      BIT(0)
0068 
0069 #define PCIE_CLIENT_INT_LEGACY \
0070     (PCIE_CLIENT_INT_INTA | PCIE_CLIENT_INT_INTB | \
0071     PCIE_CLIENT_INT_INTC | PCIE_CLIENT_INT_INTD)
0072 
0073 #define PCIE_CLIENT_INT_CLI \
0074     (PCIE_CLIENT_INT_CORR_ERR | PCIE_CLIENT_INT_NFATAL_ERR | \
0075     PCIE_CLIENT_INT_FATAL_ERR | PCIE_CLIENT_INT_DPA | \
0076     PCIE_CLIENT_INT_HOT_RST | PCIE_CLIENT_INT_MSG | \
0077     PCIE_CLIENT_INT_LEGACY_DONE | PCIE_CLIENT_INT_LEGACY | \
0078     PCIE_CLIENT_INT_PHY)
0079 
0080 #define PCIE_CORE_CTRL_MGMT_BASE    0x900000
0081 #define PCIE_CORE_CTRL          (PCIE_CORE_CTRL_MGMT_BASE + 0x000)
0082 #define   PCIE_CORE_PL_CONF_SPEED_5G        0x00000008
0083 #define   PCIE_CORE_PL_CONF_SPEED_MASK      0x00000018
0084 #define   PCIE_CORE_PL_CONF_LANE_MASK       0x00000006
0085 #define   PCIE_CORE_PL_CONF_LANE_SHIFT      1
0086 #define PCIE_CORE_CTRL_PLC1     (PCIE_CORE_CTRL_MGMT_BASE + 0x004)
0087 #define   PCIE_CORE_CTRL_PLC1_FTS_MASK      GENMASK(23, 8)
0088 #define   PCIE_CORE_CTRL_PLC1_FTS_SHIFT     8
0089 #define   PCIE_CORE_CTRL_PLC1_FTS_CNT       0xffff
0090 #define PCIE_CORE_TXCREDIT_CFG1     (PCIE_CORE_CTRL_MGMT_BASE + 0x020)
0091 #define   PCIE_CORE_TXCREDIT_CFG1_MUI_MASK  0xFFFF0000
0092 #define   PCIE_CORE_TXCREDIT_CFG1_MUI_SHIFT 16
0093 #define   PCIE_CORE_TXCREDIT_CFG1_MUI_ENCODE(x) \
0094         (((x) >> 3) << PCIE_CORE_TXCREDIT_CFG1_MUI_SHIFT)
0095 #define PCIE_CORE_LANE_MAP             (PCIE_CORE_CTRL_MGMT_BASE + 0x200)
0096 #define   PCIE_CORE_LANE_MAP_MASK              0x0000000f
0097 #define   PCIE_CORE_LANE_MAP_REVERSE           BIT(16)
0098 #define PCIE_CORE_INT_STATUS        (PCIE_CORE_CTRL_MGMT_BASE + 0x20c)
0099 #define   PCIE_CORE_INT_PRFPE           BIT(0)
0100 #define   PCIE_CORE_INT_CRFPE           BIT(1)
0101 #define   PCIE_CORE_INT_RRPE            BIT(2)
0102 #define   PCIE_CORE_INT_PRFO            BIT(3)
0103 #define   PCIE_CORE_INT_CRFO            BIT(4)
0104 #define   PCIE_CORE_INT_RT          BIT(5)
0105 #define   PCIE_CORE_INT_RTR         BIT(6)
0106 #define   PCIE_CORE_INT_PE          BIT(7)
0107 #define   PCIE_CORE_INT_MTR         BIT(8)
0108 #define   PCIE_CORE_INT_UCR         BIT(9)
0109 #define   PCIE_CORE_INT_FCE         BIT(10)
0110 #define   PCIE_CORE_INT_CT          BIT(11)
0111 #define   PCIE_CORE_INT_UTC         BIT(18)
0112 #define   PCIE_CORE_INT_MMVC            BIT(19)
0113 #define PCIE_CORE_CONFIG_VENDOR     (PCIE_CORE_CTRL_MGMT_BASE + 0x44)
0114 #define PCIE_CORE_INT_MASK      (PCIE_CORE_CTRL_MGMT_BASE + 0x210)
0115 #define PCIE_CORE_PHY_FUNC_CFG      (PCIE_CORE_CTRL_MGMT_BASE + 0x2c0)
0116 #define PCIE_RC_BAR_CONF        (PCIE_CORE_CTRL_MGMT_BASE + 0x300)
0117 #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_DISABLED        0x0
0118 #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS       0x1
0119 #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS      0x4
0120 #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS 0x5
0121 #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS      0x6
0122 #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS 0x7
0123 
0124 #define PCIE_CORE_INT \
0125         (PCIE_CORE_INT_PRFPE | PCIE_CORE_INT_CRFPE | \
0126          PCIE_CORE_INT_RRPE | PCIE_CORE_INT_CRFO | \
0127          PCIE_CORE_INT_RT | PCIE_CORE_INT_RTR | \
0128          PCIE_CORE_INT_PE | PCIE_CORE_INT_MTR | \
0129          PCIE_CORE_INT_UCR | PCIE_CORE_INT_FCE | \
0130          PCIE_CORE_INT_CT | PCIE_CORE_INT_UTC | \
0131          PCIE_CORE_INT_MMVC)
0132 
0133 #define PCIE_RC_RP_ATS_BASE     0x400000
0134 #define PCIE_RC_CONFIG_NORMAL_BASE  0x800000
0135 #define PCIE_RC_CONFIG_BASE     0xa00000
0136 #define PCIE_RC_CONFIG_RID_CCR      (PCIE_RC_CONFIG_BASE + 0x08)
0137 #define PCIE_RC_CONFIG_DCR      (PCIE_RC_CONFIG_BASE + 0xc4)
0138 #define   PCIE_RC_CONFIG_DCR_CSPL_SHIFT     18
0139 #define   PCIE_RC_CONFIG_DCR_CSPL_LIMIT     0xff
0140 #define   PCIE_RC_CONFIG_DCR_CPLS_SHIFT     26
0141 #define PCIE_RC_CONFIG_DCSR     (PCIE_RC_CONFIG_BASE + 0xc8)
0142 #define   PCIE_RC_CONFIG_DCSR_MPS_MASK      GENMASK(7, 5)
0143 #define   PCIE_RC_CONFIG_DCSR_MPS_256       (0x1 << 5)
0144 #define PCIE_RC_CONFIG_LINK_CAP     (PCIE_RC_CONFIG_BASE + 0xcc)
0145 #define   PCIE_RC_CONFIG_LINK_CAP_L0S       BIT(10)
0146 #define PCIE_RC_CONFIG_LCS      (PCIE_RC_CONFIG_BASE + 0xd0)
0147 #define PCIE_RC_CONFIG_L1_SUBSTATE_CTRL2 (PCIE_RC_CONFIG_BASE + 0x90c)
0148 #define PCIE_RC_CONFIG_THP_CAP      (PCIE_RC_CONFIG_BASE + 0x274)
0149 #define   PCIE_RC_CONFIG_THP_CAP_NEXT_MASK  GENMASK(31, 20)
0150 
0151 #define PCIE_CORE_AXI_CONF_BASE     0xc00000
0152 #define PCIE_CORE_OB_REGION_ADDR0   (PCIE_CORE_AXI_CONF_BASE + 0x0)
0153 #define   PCIE_CORE_OB_REGION_ADDR0_NUM_BITS    0x3f
0154 #define   PCIE_CORE_OB_REGION_ADDR0_LO_ADDR 0xffffff00
0155 #define PCIE_CORE_OB_REGION_ADDR1   (PCIE_CORE_AXI_CONF_BASE + 0x4)
0156 #define PCIE_CORE_OB_REGION_DESC0   (PCIE_CORE_AXI_CONF_BASE + 0x8)
0157 #define PCIE_CORE_OB_REGION_DESC1   (PCIE_CORE_AXI_CONF_BASE + 0xc)
0158 
0159 #define PCIE_CORE_AXI_INBOUND_BASE  0xc00800
0160 #define PCIE_RP_IB_ADDR0        (PCIE_CORE_AXI_INBOUND_BASE + 0x0)
0161 #define   PCIE_CORE_IB_REGION_ADDR0_NUM_BITS    0x3f
0162 #define   PCIE_CORE_IB_REGION_ADDR0_LO_ADDR 0xffffff00
0163 #define PCIE_RP_IB_ADDR1        (PCIE_CORE_AXI_INBOUND_BASE + 0x4)
0164 
0165 /* Size of one AXI Region (not Region 0) */
0166 #define AXI_REGION_SIZE             BIT(20)
0167 /* Size of Region 0, equal to sum of sizes of other regions */
0168 #define AXI_REGION_0_SIZE           (32 * (0x1 << 20))
0169 #define OB_REG_SIZE_SHIFT           5
0170 #define IB_ROOT_PORT_REG_SIZE_SHIFT     3
0171 #define AXI_WRAPPER_IO_WRITE            0x6
0172 #define AXI_WRAPPER_MEM_WRITE           0x2
0173 #define AXI_WRAPPER_TYPE0_CFG           0xa
0174 #define AXI_WRAPPER_TYPE1_CFG           0xb
0175 #define AXI_WRAPPER_NOR_MSG         0xc
0176 
0177 #define MAX_AXI_IB_ROOTPORT_REGION_NUM      3
0178 #define MIN_AXI_ADDR_BITS_PASSED        8
0179 #define PCIE_RC_SEND_PME_OFF            0x11960
0180 #define ROCKCHIP_VENDOR_ID          0x1d87
0181 #define PCIE_LINK_IS_L2(x) \
0182     (((x) & PCIE_CLIENT_DEBUG_LTSSM_MASK) == PCIE_CLIENT_DEBUG_LTSSM_L2)
0183 #define PCIE_LINK_UP(x) \
0184     (((x) & PCIE_CLIENT_LINK_STATUS_MASK) == PCIE_CLIENT_LINK_STATUS_UP)
0185 #define PCIE_LINK_IS_GEN2(x) \
0186     (((x) & PCIE_CORE_PL_CONF_SPEED_MASK) == PCIE_CORE_PL_CONF_SPEED_5G)
0187 
0188 #define RC_REGION_0_ADDR_TRANS_H        0x00000000
0189 #define RC_REGION_0_ADDR_TRANS_L        0x00000000
0190 #define RC_REGION_0_PASS_BITS           (25 - 1)
0191 #define RC_REGION_0_TYPE_MASK           GENMASK(3, 0)
0192 #define MAX_AXI_WRAPPER_REGION_NUM      33
0193 
0194 #define ROCKCHIP_PCIE_MSG_ROUTING_TO_RC     0x0
0195 #define ROCKCHIP_PCIE_MSG_ROUTING_VIA_ADDR      0x1
0196 #define ROCKCHIP_PCIE_MSG_ROUTING_VIA_ID        0x2
0197 #define ROCKCHIP_PCIE_MSG_ROUTING_BROADCAST     0x3
0198 #define ROCKCHIP_PCIE_MSG_ROUTING_LOCAL_INTX        0x4
0199 #define ROCKCHIP_PCIE_MSG_ROUTING_PME_ACK       0x5
0200 #define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTA      0x20
0201 #define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTB      0x21
0202 #define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTC      0x22
0203 #define ROCKCHIP_PCIE_MSG_CODE_ASSERT_INTD      0x23
0204 #define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTA        0x24
0205 #define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTB        0x25
0206 #define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTC        0x26
0207 #define ROCKCHIP_PCIE_MSG_CODE_DEASSERT_INTD        0x27
0208 #define ROCKCHIP_PCIE_MSG_ROUTING_MASK          GENMASK(7, 5)
0209 #define ROCKCHIP_PCIE_MSG_ROUTING(route) \
0210     (((route) << 5) & ROCKCHIP_PCIE_MSG_ROUTING_MASK)
0211 #define ROCKCHIP_PCIE_MSG_CODE_MASK         GENMASK(15, 8)
0212 #define ROCKCHIP_PCIE_MSG_CODE(code) \
0213     (((code) << 8) & ROCKCHIP_PCIE_MSG_CODE_MASK)
0214 #define ROCKCHIP_PCIE_MSG_NO_DATA           BIT(16)
0215 
0216 #define ROCKCHIP_PCIE_EP_CMD_STATUS         0x4
0217 #define   ROCKCHIP_PCIE_EP_CMD_STATUS_IS        BIT(19)
0218 #define ROCKCHIP_PCIE_EP_MSI_CTRL_REG           0x90
0219 #define   ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_OFFSET      17
0220 #define   ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_MASK        GENMASK(19, 17)
0221 #define   ROCKCHIP_PCIE_EP_MSI_CTRL_MME_OFFSET      20
0222 #define   ROCKCHIP_PCIE_EP_MSI_CTRL_MME_MASK        GENMASK(22, 20)
0223 #define   ROCKCHIP_PCIE_EP_MSI_CTRL_ME              BIT(16)
0224 #define   ROCKCHIP_PCIE_EP_MSI_CTRL_MASK_MSI_CAP    BIT(24)
0225 #define ROCKCHIP_PCIE_EP_DUMMY_IRQ_ADDR             0x1
0226 #define ROCKCHIP_PCIE_EP_PCI_LEGACY_IRQ_ADDR        0x3
0227 #define ROCKCHIP_PCIE_EP_FUNC_BASE(fn)  (((fn) << 12) & GENMASK(19, 12))
0228 #define ROCKCHIP_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar) \
0229     (PCIE_RC_RP_ATS_BASE + 0x0840 + (fn) * 0x0040 + (bar) * 0x0008)
0230 #define ROCKCHIP_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar) \
0231     (PCIE_RC_RP_ATS_BASE + 0x0844 + (fn) * 0x0040 + (bar) * 0x0008)
0232 #define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0(r) \
0233     (PCIE_RC_RP_ATS_BASE + 0x0000 + ((r) & 0x1f) * 0x0020)
0234 #define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK GENMASK(19, 12)
0235 #define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN(devfn) \
0236     (((devfn) << 12) & \
0237          ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK)
0238 #define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_BUS_MASK   GENMASK(27, 20)
0239 #define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_BUS(bus) \
0240         (((bus) << 20) & ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR0_BUS_MASK)
0241 #define ROCKCHIP_PCIE_AT_OB_REGION_PCI_ADDR1(r) \
0242         (PCIE_RC_RP_ATS_BASE + 0x0004 + ((r) & 0x1f) * 0x0020)
0243 #define ROCKCHIP_PCIE_AT_OB_REGION_DESC0_HARDCODED_RID  BIT(23)
0244 #define ROCKCHIP_PCIE_AT_OB_REGION_DESC0_DEVFN_MASK GENMASK(31, 24)
0245 #define ROCKCHIP_PCIE_AT_OB_REGION_DESC0_DEVFN(devfn) \
0246         (((devfn) << 24) & ROCKCHIP_PCIE_AT_OB_REGION_DESC0_DEVFN_MASK)
0247 #define ROCKCHIP_PCIE_AT_OB_REGION_DESC0(r) \
0248         (PCIE_RC_RP_ATS_BASE + 0x0008 + ((r) & 0x1f) * 0x0020)
0249 #define ROCKCHIP_PCIE_AT_OB_REGION_DESC1(r) \
0250         (PCIE_RC_RP_ATS_BASE + 0x000c + ((r) & 0x1f) * 0x0020)
0251 #define ROCKCHIP_PCIE_AT_OB_REGION_CPU_ADDR0(r) \
0252         (PCIE_RC_RP_ATS_BASE + 0x0018 + ((r) & 0x1f) * 0x0020)
0253 #define ROCKCHIP_PCIE_AT_OB_REGION_CPU_ADDR1(r) \
0254         (PCIE_RC_RP_ATS_BASE + 0x001c + ((r) & 0x1f) * 0x0020)
0255 
0256 #define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG0(fn) \
0257         (PCIE_CORE_CTRL_MGMT_BASE + 0x0240 + (fn) * 0x0008)
0258 #define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG1(fn) \
0259         (PCIE_CORE_CTRL_MGMT_BASE + 0x0244 + (fn) * 0x0008)
0260 #define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(b) \
0261         (GENMASK(4, 0) << ((b) * 8))
0262 #define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_APERTURE(b, a) \
0263         (((a) << ((b) * 8)) & \
0264          ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(b))
0265 #define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(b) \
0266         (GENMASK(7, 5) << ((b) * 8))
0267 #define ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_CTRL(b, c) \
0268         (((c) << ((b) * 8 + 5)) & \
0269          ROCKCHIP_PCIE_CORE_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(b))
0270 
0271 struct rockchip_pcie {
0272     void    __iomem *reg_base;      /* DT axi-base */
0273     void    __iomem *apb_base;      /* DT apb-base */
0274     bool    legacy_phy;
0275     struct  phy *phys[MAX_LANE_NUM];
0276     struct  reset_control *core_rst;
0277     struct  reset_control *mgmt_rst;
0278     struct  reset_control *mgmt_sticky_rst;
0279     struct  reset_control *pipe_rst;
0280     struct  reset_control *pm_rst;
0281     struct  reset_control *aclk_rst;
0282     struct  reset_control *pclk_rst;
0283     struct  clk *aclk_pcie;
0284     struct  clk *aclk_perf_pcie;
0285     struct  clk *hclk_pcie;
0286     struct  clk *clk_pcie_pm;
0287     struct  regulator *vpcie12v; /* 12V power supply */
0288     struct  regulator *vpcie3v3; /* 3.3V power supply */
0289     struct  regulator *vpcie1v8; /* 1.8V power supply */
0290     struct  regulator *vpcie0v9; /* 0.9V power supply */
0291     struct  gpio_desc *ep_gpio;
0292     u32 lanes;
0293     u8      lanes_map;
0294     int link_gen;
0295     struct  device *dev;
0296     struct  irq_domain *irq_domain;
0297     int     offset;
0298     void    __iomem *msg_region;
0299     phys_addr_t msg_bus_addr;
0300     bool is_rc;
0301     struct resource *mem_res;
0302 };
0303 
0304 static u32 rockchip_pcie_read(struct rockchip_pcie *rockchip, u32 reg)
0305 {
0306     return readl(rockchip->apb_base + reg);
0307 }
0308 
0309 static void rockchip_pcie_write(struct rockchip_pcie *rockchip, u32 val,
0310                 u32 reg)
0311 {
0312     writel(val, rockchip->apb_base + reg);
0313 }
0314 
0315 int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip);
0316 int rockchip_pcie_init_port(struct rockchip_pcie *rockchip);
0317 int rockchip_pcie_get_phys(struct rockchip_pcie *rockchip);
0318 void rockchip_pcie_deinit_phys(struct rockchip_pcie *rockchip);
0319 int rockchip_pcie_enable_clocks(struct rockchip_pcie *rockchip);
0320 void rockchip_pcie_disable_clocks(void *data);
0321 void rockchip_pcie_cfg_configuration_accesses(
0322         struct rockchip_pcie *rockchip, u32 type);
0323 
0324 #endif /* _PCIE_ROCKCHIP_H */