imxpciereg.h revision 1.3
1/*	$NetBSD: imxpciereg.h,v 1.3 2019/10/16 11:16:30 hkenken Exp $	*/
2
3/*
4 * Copyright (c) 2015 Ryo Shimizu <ryo@nerv.org>
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