Home | History | Annotate | Line # | Download | only in imx
      1 /*	$NetBSD: imxpciereg.h,v 1.4 2024/02/07 04:20:26 msaitoh Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 2015 Ryo Shimizu
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     19  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
     20  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     22  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     24  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     25  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     26  * POSSIBILITY OF SUCH DAMAGE.
     27  */
     28 
     29 #ifndef _ARM_IMX_IMX6_PCIEREG_H_
     30 #define _ARM_IMX_IMX6_PCIEREG_H_
     31 
     32 /* PCIe EP Mode Registers */
     33 #define PCIE_EP_DEVICEID			0x00000000
     34 #define PCIE_EP_COMMAND				0x00000004
     35 #define PCIE_EP_BIST				0x0000000c
     36 #define PCIE_EP_BAR0				0x00000010
     37 #define PCIE_EP_MASK0				0x00000010
     38 #define PCIE_EP_MASK1				0x00000014
     39 #define PCIE_EP_MASK2				0x00000018
     40 #define PCIE_EP_MASK3				0x0000001c
     41 #define PCIE_EP_CISP				0x00000028
     42 #define PCIE_EP_SSID				0x0000002c
     43 #define PCIE_EP_EROMBAR				0x00000030
     44 #define PCIE_EP_EROMMASK			0x00000030
     45 #define PCIE_EP_CAPPR				0x00000034
     46 #define PCIE_EP_ILR				0x0000003c
     47 #define PCIE_EP_AER				0x00000100
     48 #define PCIE_EP_UESR				0x00000104
     49 #define PCIE_EP_UEMR				0x00000108
     50 #define PCIE_EP_UESEVR				0x0000010c
     51 #define PCIE_EP_CESR				0x00000110
     52 #define PCIE_EP_CEMR				0x00000114
     53 #define PCIE_EP_ACCR				0x00000118
     54 #define PCIE_EP_HLR				0x0000011c
     55 #define PCIE_EP_VCECHR				0x00000140
     56 #define PCIE_EP_PVCCR1				0x00000144
     57 #define PCIE_EP_PVCCR2				0x00000148
     58 #define PCIE_EP_PVCCSR				0x0000014c
     59 #define PCIE_EP_VCRCR				0x00000150
     60 #define PCIE_EP_VCRCONR				0x00000154
     61 #define PCIE_EP_VCRSR				0x00000158
     62 
     63 /* PCIe RC Mode Registers */
     64 #define PCIE_RC_DEVICEID			0x00000000
     65 #define PCIE_RC_COMMAND				0x00000004
     66 #define PCIE_RC_REVID				0x00000008
     67 #define PCIE_RC_BIST				0x0000000c
     68 #define PCIE_RC_BAR0				0x00000010
     69 #define PCIE_RC_BAR1				0x00000014
     70 #define PCIE_RC_BNR				0x00000018
     71 #define PCIE_RC_IOBLSSR				0x0000001c
     72 #define PCIE_RC_MEM_BLR				0x00000020
     73 #define PCIE_RC_PREF_MEM_BLR			0x00000024
     74 #define PCIE_RC_PREF_BASE_U32			0x00000028
     75 #define PCIE_RC_PREF_LIM_U32			0x0000002c
     76 #define PCIE_RC_IO_BASE_LIM_U16			0x00000030
     77 #define PCIE_RC_CAPPR				0x00000034
     78 #define PCIE_RC_EROMBAR				0x00000038
     79 #define PCIE_RC_EROMMASK			0x00000038
     80 #define PCIE_RC_PMCR				0x00000040
     81 #define PCIE_RC_PMCSR				0x00000044
     82 #define PCIE_RC_CIDR				0x00000070
     83 #define PCIE_RC_DCR				0x00000074
     84 #define PCIE_RC_DCONR				0x00000078
     85 #define PCIE_RC_LCR				0x0000007c
     86 #define  PCIE_RC_LCR_MAX_LINK_SPEEDS		__BITS(3, 0)
     87 #define  PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN1	__SHIFTIN(0x1, PCIE_RC_LCR_MAX_LINK_SPEEDS)
     88 #define  PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN2	__SHIFTIN(0x2, PCIE_RC_LCR_MAX_LINK_SPEEDS)
     89 #define PCIE_RC_LCSR				0x00000080
     90 #define  PCIE_RC_LCSR_LINK_SPEED		__BITS(19, 16)
     91 #define PCIE_RC_SCR				0x00000084
     92 #define PCIE_RC_SCSR				0x00000088
     93 #define PCIE_RC_RCCR				0x0000008c
     94 #define PCIE_RC_RSR				0x00000090
     95 #define PCIE_RC_DCR2				0x00000094
     96 #define PCIE_RC_DCSR2				0x00000098
     97 #define PCIE_RC_LCR2				0x0000009c
     98 #define PCIE_RC_LCSR2				0x000000a0
     99 #define PCIE_RC_AER				0x00000100
    100 #define PCIE_RC_UESR				0x00000104
    101 #define PCIE_RC_UEMR				0x00000108
    102 #define PCIE_RC_UESEVR				0x0000010c
    103 #define PCIE_RC_CESR				0x00000110
    104 #define PCIE_RC_CEMR				0x00000114
    105 #define PCIE_RC_ACCR				0x00000118
    106 #define PCIE_RC_HLR				0x0000011c
    107 #define PCIE_RC_RECR				0x0000012c
    108 #define PCIE_RC_RESR				0x00000130
    109 #define PCIE_RC_ESIR				0x00000134
    110 #define PCIE_RC_VCECHR				0x00000140
    111 #define PCIE_RC_PVCCR1				0x00000144
    112 #define PCIE_RC_PVCCR2				0x00000148
    113 #define PCIE_RC_PVCCSR				0x0000014c
    114 #define PCIE_RC_VCRCR				0x00000150
    115 #define PCIE_RC_VCRCONR				0x00000154
    116 #define PCIE_RC_VCRSR				0x00000158
    117 
    118 /* PCIe Port Logic Registers */
    119 #define PCIE_PL_ALTRTR				0x00000700
    120 #define PCIE_PL_VSDR				0x00000704
    121 #define PCIE_PL_PFLR				0x00000708
    122 #define  PCIE_PL_PFLR_LOW_POWER_ENTRANCE_COUNT	__BITS(31, 24)
    123 #define  PCIE_PL_PFLR_LINK_STATE		__BITS(21, 16)
    124 #define  PCIE_PL_PFLR_FORCE_LINK		__BIT(15)
    125 #define  PCIE_PL_PFLR_LINK_NUMBER		__BITS(7, 0)
    126 #define PCIE_PL_AFLACR				0x0000070c
    127 #define PCIE_PL_PLCR				0x00000710
    128 #define  PCIE_PL_PLCR_LINK_MODE_ENABLE		__BITS(21, 16)
    129 #define PCIE_PL_LSR				0x00000714
    130 #define PCIE_PL_SNR				0x00000718
    131 #define PCIE_PL_STRFM1				0x0000071c
    132 #define PCIE_PL_STRFM2				0x00000720
    133 #define PCIE_PL_AMODNPSR			0x00000724
    134 #define PCIE_PL_DEBUG0				0x00000728
    135 #define  PCIE_PL_DEBUG0_XMLH_LTSSM_STATE	__BITS(0, 5)
    136 #define PCIE_PL_DEBUG1				0x0000072c
    137 #define  PCIE_PL_DEBUG1_XMLH_LINK_UP		__BIT(4)
    138 #define  PCIE_PL_DEBUG1_XMLH_LINK_IN_TRAINING	__BIT(29)
    139 #define PCIE_PL_TPFCSR				0x00000730
    140 #define PCIE_PL_TNFCSR				0x00000734
    141 #define PCIE_PL_TCFCSR				0x00000738
    142 #define PCIE_PL_QSR				0x0000073c
    143 #define PCIE_PL_VCTAR1				0x00000740
    144 #define PCIE_PL_VCTAR2				0x00000744
    145 #define PCIE_PL_VC0PRQC				0x00000748
    146 #define PCIE_PL_VC0NRQC				0x0000074c
    147 #define PCIE_PL_VC0CRQC				0x00000750
    148 #define PCIE_PL_VCNPRQC				0x00000754
    149 #define PCIE_PL_VCNNRQC				0x00000758
    150 #define PCIE_PL_VCNCRQC				0x0000075c
    151 #define PCIE_PL_VC0PBD				0x000007a8
    152 #define PCIE_PL_VC0NPBD				0x000007ac
    153 #define PCIE_PL_VC0CBD				0x000007b0
    154 #define PCIE_PL_VC1PBD				0x000007b4
    155 #define PCIE_PL_VC1NPBD				0x000007b8
    156 #define PCIE_PL_VC1CBD				0x000007bc
    157 #define PCIE_PL_G2CR				0x0000080c
    158 #define  PCIE_PL_G2CR_DIRECTED_SPEED_CHANGE	__BIT(17)
    159 #define  PCIE_PL_G2CR_PREDETERMINED_NUMBER_OF_LANES	__BITS(16, 8)
    160 #define PCIE_PL_PHY_STATUS			0x00000810
    161 #define  PCIE_PL_PHY_STATUS_ACK			__BIT(16)
    162 #define  PCIE_PL_PHY_STATUS_DATA		__BITS(0, 15)
    163 #define PCIE_PL_PHY_CTRL			0x00000814
    164 #define  PCIE_PL_PHY_CTRL_RD			__BIT(19)
    165 #define  PCIE_PL_PHY_CTRL_WR			__BIT(18)
    166 #define  PCIE_PL_PHY_CTRL_CAP_DAT		__BIT(17)
    167 #define  PCIE_PL_PHY_CTRL_CAP_ADR		__BIT(16)
    168 #define  PCIE_PL_PHY_CTRL_DATA			__BITS(0, 15)
    169 #define PCIE_PL_MRCCR0				0x00000818
    170 #define PCIE_PL_MRCCR1				0x0000081c
    171 #define PCIE_PL_MSICA				0x00000820
    172 #define PCIE_PL_MSICUA				0x00000824
    173 #define PCIE_PL_MSICIN_ENB			0x00000828
    174 #define PCIE_PL_MSICIN_MASK			0x0000082c
    175 #define PCIE_PL_MSICIN_STATUS			0x00000830
    176 #define PCIE_PL_MSICGPIO			0x00000888
    177 
    178 // ATU_R_BaseAddress 0x900
    179 #define PCIE_PL_IATUVR				0x00000900
    180 // ATU_VIEWPORT_R (ATU_R_BaseAddress + 0x0)
    181 
    182 #define PCIE_PL_IATURC1				0x00000904
    183 // ATU_REGION_CTRL1_R (ATU_R_BaseAddress + 0x4)
    184 #define  PCIE_PL_IATURC1_FUNC			__BITS(22, 20)
    185 #define  PCIE_PL_IATURC1_AT			__BITS(17, 16)
    186 #define  PCIE_PL_IATURC1_ATTR			__BITS(10, 9)
    187 #define  PCIE_PL_IATURC1_TD			__BIT(8)
    188 #define  PCIE_PL_IATURC1_TC			__BITS(7, 5)
    189 #define  PCIE_PL_IATURC1_TYPE			__BITS(4, 0)
    190 #define   PCIE_PL_IATURC1_TYPE_IO		__SHIFTIN(0, PCIE_PL_IATURC1_TYPE)
    191 #define   PCIE_PL_IATURC1_TYPE_MEM		__SHIFTIN(2, PCIE_PL_IATURC1_TYPE)
    192 #define   PCIE_PL_IATURC1_TYPE_CFG0		__SHIFTIN(4, PCIE_PL_IATURC1_TYPE)
    193 #define   PCIE_PL_IATURC1_TYPE_CFG1		__SHIFTIN(5, PCIE_PL_IATURC1_TYPE)
    194 
    195 #define PCIE_PL_IATURC2				0x00000908
    196 // ATU_REGION_CTRL2_R (ATU_R_BaseAddress + 0x8)
    197 #define  PCIE_PL_IATURC2_REGION_ENABLE		__BIT(31)
    198 
    199 #define PCIE_PL_IATURLBA			0x0000090c
    200 // ATU_REGION_LOWBASE_R (ATU_R_BaseAddress + 0xC)
    201 
    202 #define PCIE_PL_IATURUBA			0x00000910
    203 // ATU_REGION_UPBASE_R (ATU_R_BaseAddress + 0x10)
    204 
    205 #define PCIE_PL_IATURLA				0x00000914
    206 // ATU_REGION_LIMIT_ADDR_R (ATU_R_BaseAddress + 0x14)
    207 
    208 #define PCIE_PL_IATURLTA			0x00000918
    209 // ATU_REGION_LOW_TRGT_ADDR_R (ATU_R_BaseAddress + 0x18)
    210 
    211 #define PCIE_PL_IATURUTA			0x0000091c
    212 // ATU_REGION_UP_TRGT_ADDR_R (ATU_R_BaseAddress + 0x1C)
    213 
    214 /* PCIe PHY registers */
    215 #define PCIE_PHY_IDCODE_LO			0x0000
    216 #define PCIE_PHY_IDCODE_HI			0x0001
    217 #define PCIE_PHY_DEBUG				0x0002
    218 #define PCIE_PHY_RTUNE_DEBUG			0x0003
    219 #define PCIE_PHY_RTUNE_STAT			0x0004
    220 #define PCIE_PHY_SS_PHASE			0x0005
    221 #define PCIE_PHY_SS_FREQ			0x0006
    222 #define PCIE_PHY_ATEOVRD			0x0010
    223 #define  ATEOVRD_EN				__BIT(2)
    224 #define  REF_USB2_EN				__BIT(1)
    225 #define  REF_CLKDIV2				__BIT(0)
    226 #define PCIE_PHY_MPLL_OVRD_IN_LO		0x0011
    227 #define PCIE_PHY_MPLL_OVRD_IN_HI		0x0011
    228 #define  RES_ACK_IN_OVRD			__BIT(15)
    229 #define  RES_ACK_IN				__BIT(14)
    230 #define  RES_REQ_IN_OVRD			__BIT(13)
    231 #define  RES_REQ_IN				__BIT(12)
    232 #define  RTUNE_REQ_OVRD				__BIT(11)
    233 #define  RTUNE_REQ				__BIT(10)
    234 #define  MPLL_MULTIPLIER_OVRD			__BIT(9)
    235 #define  MPLL_MULTIPLIER			__BITS(8, 2)
    236 #define  MPLL_EN_OVRD				__BIT(1)
    237 #define  MPLL_EN				__BIT(0)
    238 #define PCIE_PHY_SSC_OVRD_IN			0x0013
    239 #define PCIE_PHY_BS_OVRD_IN			0x0014
    240 #define PCIE_PHY_LEVEL_OVRD_IN			0x0015
    241 #define PCIE_PHY_SUP_OVRD_OUT			0x0016
    242 #define PCIE_PHY_MPLL_ASIC_IN			0x0017
    243 #define PCIE_PHY_BS_ASIC_IN			0x0018
    244 #define PCIE_PHY_LEVEL_ASIC_IN			0x0019
    245 #define PCIE_PHY_SSC_ASIC_IN			0x001a
    246 #define PCIE_PHY_SUP_ASIC_OUT			0x001b
    247 #define PCIE_PHY_ATEOVRD_STATUS			0x001c
    248 #define PCIE_PHY_SCOPE_ENABLES			0x0020
    249 #define PCIE_PHY_SCOPE_SAMPLES			0x0021
    250 #define PCIE_PHY_SCOPE_COUNT			0x0022
    251 #define PCIE_PHY_SCOPE_CTL			0x0023
    252 #define PCIE_PHY_SCOPE_MASK_000			0x0024
    253 #define PCIE_PHY_SCOPE_MASK_001			0x0025
    254 #define PCIE_PHY_SCOPE_MASK_010			0x0026
    255 #define PCIE_PHY_SCOPE_MASK_011			0x0027
    256 #define PCIE_PHY_SCOPE_MASK_100			0x0028
    257 #define PCIE_PHY_SCOPE_MASK_101			0x0029
    258 #define PCIE_PHY_SCOPE_MASK_110			0x002a
    259 #define PCIE_PHY_SCOPE_MASK_111			0x002b
    260 #define PCIE_PHY_MPLL_LOOP_CTL			0x0030
    261 #define PCIE_PHY_MPLL_ATB_MEAS2			0x0032
    262 #define PCIE_PHY_MPLL_OVR			0x0033
    263 #define PCIE_PHY_RTUNE_RTUNE_CTRL		0x0034
    264 #define PCIE_PHY_TX_OVRD_IN_LO			0x1000
    265 #define PCIE_PHY_TX_OVRD_IN_HI			0x1001
    266 #define PCIE_PHY_TX_OVRD_DRV_LO			0x1003
    267 #define PCIE_PHY_TX_OVRD_OUT			0x1004
    268 #define PCIE_PHY_RX_OVRD_IN_LO			0x1005
    269 #define  PCIE_PHY_RX_OVRD_IN_LO_RX_PLL_EN_OVRD	__BIT(3)
    270 #define  PCIE_PHY_RX_OVRD_IN_LO_RX_DATA_EN_OVRD	__BIT(5)
    271 #define PCIE_PHY_RX_OVRD_IN_HI			0x1006
    272 #define PCIE_PHY_RX_OVRD_OUT			0x1007
    273 #define PCIE_PHY_TX_ASIC_IN			0x1008
    274 #define PCIE_PHY_TX_ASIC_DRV_LO			0x1009
    275 #define PCIE_PHY_TX_ASIC_DRV_HI			0x100a
    276 #define PCIE_PHY_TX_ASIC_OUT			0x100b
    277 #define PCIE_PHY_RX_ASIC_IN			0x100c
    278 #define PCIE_PHY_RX_ASIC_OUT			0x100d
    279 #define  PCIE_PHY_RX_ASIC_OUT_LOS		__BIT(2)
    280 #define  PCIE_PHY_RX_ASIC_OUT_PLL_STATE		__BIT(1)
    281 #define  PCIE_PHY_RX_ASIC_OUT_VALID		__BIT(0)
    282 #define PCIE_PHY_TX_VMD_FSM_TX_VCM_0		0x1011
    283 #define PCIE_PHY_TX_VMD_FSM_TX_VCM_1		0x1012
    284 #define PCIE_PHY_TX_VMD_FSM_TX_VCM_DEBUG_IN	0x1013
    285 #define PCIE_PHY_TX_VMD_FSM_TX_VCM_DEBUG_OUT	0x1014
    286 #define PCIE_PHY_TX_LBERT_CTL			0x1015
    287 #define PCIE_PHY_RX_LBERT_CTL			0x1016
    288 #define PCIE_PHY_RX_LBERT_ERR			0x1017
    289 #define PCIE_PHY_RX_SCOPE_CTL			0x1018
    290 #define PCIE_PHY_RX_SCOPE_PHASE			0x1019
    291 #define PCIE_PHY_RX_DPLL_FREQ			0x101a
    292 #define PCIE_PHY_RX_CDR_CTL			0x101b
    293 #define PCIE_PHY_RX_CDR_CDR_FSM_DEBUG		0x101c
    294 #define PCIE_PHY_RX_CDR_LOCK_VEC_OVRD		0x101d
    295 #define PCIE_PHY_RX_CDR_LOCK_VEC		0x101e
    296 #define PCIE_PHY_RX_CDR_ADAP_FSM		0x101f
    297 #define PCIE_PHY_RX_ATB0			0x1020
    298 #define PCIE_PHY_RX_ATB1			0x1021
    299 #define PCIE_PHY_RX_ENPWR0			0x1022
    300 #define PCIE_PHY_RX_PMIX_PHASE			0x1023
    301 #define PCIE_PHY_RX_ENPWR1			0x1024
    302 #define PCIE_PHY_RX_ENPWR2			0x1025
    303 #define PCIE_PHY_RX_SCOPE			0x1026
    304 #define PCIE_PHY_TX_TXDRV_CNTRL			0x102b
    305 #define PCIE_PHY_TX_POWER_CTL			0x102c
    306 #define PCIE_PHY_TX_ALT_BLOCK			0x102d
    307 #define PCIE_PHY_TX_ALT_AND_LOOPBACK		0x102e
    308 #define PCIE_PHY_TX_TX_ATB_REG			0x102f
    309 
    310 #endif /* _ARM_IMX_IMX6_PCIEREG_H_ */
    311