xref: /netbsd-src/sys/arch/arm/imx/imxpciereg.h (revision 90313c06e62e910bf0d1bb24faa9d17dcefd0ab6)
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