imxpciereg.h revision 1.4 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