xref: /OK3568_Linux_fs/u-boot/include/synopsys/dwcddr21mctl.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2011 Andes Technology Corp
3*4882a593Smuzhiyun  * Macpaul Lin <macpaul@andestech.com>
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun /*
9*4882a593Smuzhiyun  * DWCDDR21MCTL - Synopsys DWC DDR2/DDR1 Memory Controller
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun #ifndef __DWCDDR21MCTL_H
12*4882a593Smuzhiyun #define __DWCDDR21MCTL_H
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #ifndef __ASSEMBLY__
15*4882a593Smuzhiyun struct dwcddr21mctl {
16*4882a593Smuzhiyun 	unsigned int	ccr;		/* Controller Configuration */
17*4882a593Smuzhiyun 	unsigned int	dcr;		/* DRAM Configuration */
18*4882a593Smuzhiyun 	unsigned int	iocr;		/* I/O Configuration */
19*4882a593Smuzhiyun 	unsigned int	csr;		/* Controller Status */
20*4882a593Smuzhiyun 	unsigned int	drr;		/* DRAM refresh */
21*4882a593Smuzhiyun 	unsigned int	tpr0;		/* SDRAM Timing Parameters 0 */
22*4882a593Smuzhiyun 	unsigned int	tpr1;		/* SDRAM Timing Parameters 1 */
23*4882a593Smuzhiyun 	unsigned int	tpr2;		/* SDRAM Timing Parameters 2 */
24*4882a593Smuzhiyun 	unsigned int	gdllcr;		/* Global DLL Control */
25*4882a593Smuzhiyun 	unsigned int	dllcr[10];	/* DLL Control */
26*4882a593Smuzhiyun 	unsigned int	rslr[4];	/* Rank System Lantency */
27*4882a593Smuzhiyun 	unsigned int	rdgr[4];	/* Rank DQS Gating */
28*4882a593Smuzhiyun 	unsigned int	dqtr[9];	/* DQ Timing */
29*4882a593Smuzhiyun 	unsigned int	dqstr;		/* DQS Timing */
30*4882a593Smuzhiyun 	unsigned int	dqsbtr;		/* DQS_b Timing */
31*4882a593Smuzhiyun 	unsigned int	odtcr;		/* ODT Configuration */
32*4882a593Smuzhiyun 	unsigned int	dtr[2];		/* Data Training */
33*4882a593Smuzhiyun 	unsigned int	dtar;		/* Data Training Address */
34*4882a593Smuzhiyun 	unsigned int	rsved[82];	/* Reserved */
35*4882a593Smuzhiyun 	unsigned int	mr;		/* Mode Register */
36*4882a593Smuzhiyun 	unsigned int	emr;		/* Extended Mode Register */
37*4882a593Smuzhiyun 	unsigned int	emr2;		/* Extended Mode Register 2 */
38*4882a593Smuzhiyun 	unsigned int	emr3;		/* Extended Mode Register 3 */
39*4882a593Smuzhiyun 	unsigned int	hpcr[32];	/* Host Port Configurarion */
40*4882a593Smuzhiyun 	unsigned int	pqcr[8];	/* Priority Queue Configuration */
41*4882a593Smuzhiyun 	unsigned int	mmgcr;		/* Memory Manager General Config */
42*4882a593Smuzhiyun };
43*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun /*
46*4882a593Smuzhiyun  * Control Configuration Register
47*4882a593Smuzhiyun  */
48*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_ECCEN(x)	((x) << 0)
49*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_NOMRWR(x)	((x) << 1)
50*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_HOSTEN(x)	((x) << 2)
51*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_XBISC(x)	((x) << 3)
52*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_NOAPD(x)	((x) << 4)
53*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_RRB(x)		((x) << 13)
54*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DQSCFG(x)	((x) << 14)
55*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DFTLM(x)	(((x) & 0x3) << 15)
56*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DFTCMP(x)	((x) << 17)
57*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_FLUSH(x)	((x) << 27)
58*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_ITMRST(x)	((x) << 28)
59*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_IB(x)		((x) << 29)
60*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DTT(x)		((x) << 30)
61*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_IT(x)		((x) << 31)
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /*
64*4882a593Smuzhiyun  * DRAM Configuration Register
65*4882a593Smuzhiyun  */
66*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_DDRMD(x)	((x) << 0)
67*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_DIO(x)		(((x) & 0x3) << 1)
68*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_DSIZE(x)	(((x) & 0x7) << 3)
69*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_SIO(x)		(((x) & 0x7) << 6)
70*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_PIO(x)		((x) << 9)
71*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_RANKS(x)	(((x) & 0x3) << 10)
72*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_RNKALL(x)	((x) << 12)
73*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_AMAP(x)	(((x) & 0x3) << 13)
74*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_RANK(x)	(((x) & 0x3) << 25)
75*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_CMD(x)		(((x) & 0xf) << 27)
76*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_EXE(x)		((x) << 31)
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /*
79*4882a593Smuzhiyun  * I/O Configuration Register
80*4882a593Smuzhiyun  */
81*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_RTT(x)	(((x) & 0xf) << 0)
82*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_DS(x)		(((x) & 0xf) << 4)
83*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_TESTEN(x)	((x) << 0x8)
84*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_RTTOH(x)	(((x) & 0x7) << 26)
85*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_RTTOE(x)	((x) << 29)
86*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_DQRTT(x)	((x) << 30)
87*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_DQSRTT(x)	((x) << 31)
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun /*
90*4882a593Smuzhiyun  * Controller Status Register
91*4882a593Smuzhiyun  */
92*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DRIFT(x)	(((x) & 0x3ff) << 0)
93*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DFTERR(x)	((x) << 18)
94*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_ECCERR(x)	((x) << 19)
95*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DTERR(x)	((x) << 20)
96*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DTIERR(x)	((x) << 21)
97*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_ECCSEC(x)	((x) << 22)
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun /*
100*4882a593Smuzhiyun  * DRAM Refresh Register
101*4882a593Smuzhiyun  */
102*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_TRFC(x)	(((x) & 0xff) << 0)
103*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_TRFPRD(x)	(((x) & 0xffff) << 8)
104*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_RFBURST(x)	(((x) & 0xf) << 24)
105*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_RD(x)		((x) << 31)
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun /*
108*4882a593Smuzhiyun  * SDRAM Timing Parameters Register 0
109*4882a593Smuzhiyun  */
110*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TMRD(x)	(((x) & 0x3) << 0)
111*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRTP(x)	(((x) & 0x7) << 2)
112*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TWTR(x)	(((x) & 0x7) << 5)
113*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRP(x)	(((x) & 0xf) << 8)
114*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRCD(x)	(((x) & 0xf) << 12)
115*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRAS(x)	(((x) & 0x1f) << 16)
116*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRRD(x)	(((x) & 0xf) << 21)
117*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRC(x)	(((x) & 0x3f) << 25)
118*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TCCD(x)	((x) << 31)
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun /*
121*4882a593Smuzhiyun  * SDRAM Timing Parameters Register 1
122*4882a593Smuzhiyun  */
123*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TAOND(x)	(((x) & 0x3) << 0)
124*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TRTW(x)	((x) << 2)
125*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TFAW(x)	(((x) & 0x3f) << 3)
126*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TRNKRTR(x)	(((x) & 0x3) << 12)
127*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TRNKWTW(x)	(((x) & 0x3) << 14)
128*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_XCL(x)	(((x) & 0xf) << 23)
129*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_XWR(x)	(((x) & 0xf) << 27)
130*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_XTP(x)	((x) << 31)
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun /*
133*4882a593Smuzhiyun  * SDRAM Timing Parameters Register 2
134*4882a593Smuzhiyun  */
135*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR2_TXS(x)	(((x) & 0x3ff) << 0)
136*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR2_TXP(x)	(((x) & 0x1f) << 10)
137*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR2_TCKE(x)	(((x) & 0xf) << 15)
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun /*
140*4882a593Smuzhiyun  * Global DLL Control Register
141*4882a593Smuzhiyun  */
142*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_DRES(x)	(((x) & 0x3) << 0)
143*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_IPUMP(x)	(((x) & 0x7) << 2)
144*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_TESTEN(x)	((x) << 5)
145*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_DTC(x)	(((x) & 0x7) << 6)
146*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_ATC(x)	(((x) & 0x3) << 9)
147*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_TESTSW(x)	((x) << 11)
148*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_MBIAS(x)	(((x) & 0xff) << 12)
149*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_SBIAS(x)	(((x) & 0xff) << 20)
150*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_LOCKDET(x)	((x) << 29)
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun /*
153*4882a593Smuzhiyun  * DLL Control Register 0-9
154*4882a593Smuzhiyun  */
155*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_SFBDLY(x)	(((x) & 0x7) << 0)
156*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_SFWDLY(x)	(((x) & 0x7) << 3)
157*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_MFBDLY(x)	(((x) & 0x7) << 6)
158*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_MFWDLY(x)	(((x) & 0x7) << 9)
159*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_SSTART(x)	(((x) & 0x3) << 12)
160*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_PHASE(x)	(((x) & 0xf) << 14)
161*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_ATESTEN(x)	((x) << 18)
162*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_DRSVD(x)	((x) << 19)
163*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_DD(x)	((x) << 31)
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun /*
166*4882a593Smuzhiyun  * Rank System Lantency Register
167*4882a593Smuzhiyun  */
168*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL0(x)	(((x) & 0x7) << 0)
169*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL1(x)	(((x) & 0x7) << 3)
170*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL2(x)	(((x) & 0x7) << 6)
171*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL3(x)	(((x) & 0x7) << 9)
172*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL4(x)	(((x) & 0x7) << 12)
173*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL5(x)	(((x) & 0x7) << 15)
174*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL6(x)	(((x) & 0x7) << 18)
175*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL7(x)	(((x) & 0x7) << 21)
176*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL8(x)	(((x) & 0x7) << 24)
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun /*
179*4882a593Smuzhiyun  * Rank DQS Gating Register
180*4882a593Smuzhiyun  */
181*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL0(x)	(((x) & 0x3) << 0)
182*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL1(x)	(((x) & 0x3) << 2)
183*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL2(x)	(((x) & 0x3) << 4)
184*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL3(x)	(((x) & 0x3) << 6)
185*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL4(x)	(((x) & 0x3) << 8)
186*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL5(x)	(((x) & 0x3) << 10)
187*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL6(x)	(((x) & 0x3) << 12)
188*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL7(x)	(((x) & 0x3) << 14)
189*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL8(x)	(((x) & 0x3) << 16)
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun /*
192*4882a593Smuzhiyun  * DQ Timing Register
193*4882a593Smuzhiyun  */
194*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY0(x)	(((x) & 0xf) << 0)
195*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY1(x)	(((x) & 0xf) << 4)
196*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY2(x)	(((x) & 0xf) << 8)
197*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY3(x)	(((x) & 0xf) << 12)
198*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY4(x)	(((x) & 0xf) << 16)
199*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY5(x)	(((x) & 0xf) << 20)
200*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY6(x)	(((x) & 0xf) << 24)
201*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY7(x)	(((x) & 0xf) << 28)
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun /*
204*4882a593Smuzhiyun  * DQS Timing Register
205*4882a593Smuzhiyun  */
206*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY0(x)	(((x) & 0x7) << 0)
207*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY1(x)	(((x) & 0x7) << 3)
208*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY2(x)	(((x) & 0x7) << 6)
209*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY3(x)	(((x) & 0x7) << 9)
210*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY4(x)	(((x) & 0x7) << 12)
211*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY5(x)	(((x) & 0x7) << 15)
212*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY6(x)	(((x) & 0x7) << 18)
213*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY7(x)	(((x) & 0x7) << 21)
214*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY8(x)	(((x) & 0x7) << 24)
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun /*
217*4882a593Smuzhiyun  * DQS_b (DQSBTR) Timing Register
218*4882a593Smuzhiyun  */
219*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY0(x)	(((x) & 0x7) << 0)
220*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY1(x)	(((x) & 0x7) << 3)
221*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY2(x)	(((x) & 0x7) << 6)
222*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY3(x)	(((x) & 0x7) << 9)
223*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY4(x)	(((x) & 0x7) << 12)
224*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY5(x)	(((x) & 0x7) << 15)
225*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY6(x)	(((x) & 0x7) << 18)
226*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY7(x)	(((x) & 0x7) << 21)
227*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY8(x)	(((x) & 0x7) << 24)
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun /*
230*4882a593Smuzhiyun  * ODT Configuration Register
231*4882a593Smuzhiyun  */
232*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT0(x)	(((x) & 0xf) << 0)
233*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT1(x)	(((x) & 0xf) << 4)
234*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT2(x)	(((x) & 0xf) << 8)
235*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT3(x)	(((x) & 0xf) << 12)
236*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT0(x)	(((x) & 0xf) << 16)
237*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT1(x)	(((x) & 0xf) << 20)
238*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT2(x)	(((x) & 0xf) << 24)
239*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT3(x)	(((x) & 0xf) << 28)
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun /*
242*4882a593Smuzhiyun  * Data Training Register
243*4882a593Smuzhiyun  */
244*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE0(x)	(((x) & 0xff) << 0)	/* def: 0x11 */
245*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE1(x)	(((x) & 0xff) << 8)	/* def: 0xee */
246*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE2(x)	(((x) & 0xff) << 16)	/* def: 0x22 */
247*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE3(x)	(((x) & 0xff) << 24)	/* def: 0xdd */
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE4(x)	(((x) & 0xff) << 0)	/* def: 0x44 */
250*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE5(x)	(((x) & 0xff) << 8)	/* def: 0xbb */
251*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE6(x)	(((x) & 0xff) << 16)	/* def: 0x88 */
252*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE7(x)	(((x) & 0xff) << 24)	/* def: 0x77 */
253*4882a593Smuzhiyun 
254*4882a593Smuzhiyun /*
255*4882a593Smuzhiyun  * Data Training Address Register
256*4882a593Smuzhiyun  */
257*4882a593Smuzhiyun #define DWCDDR21MCTL_DTAR_DTCOL(x)	(((x) & 0xfff) << 0)
258*4882a593Smuzhiyun #define DWCDDR21MCTL_DTAR_DTROW(x)	(((x) & 0xffff) << 12)
259*4882a593Smuzhiyun #define DWCDDR21MCTL_DTAR_DTBANK(x)	(((x) & 0x7) << 28)
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun /*
262*4882a593Smuzhiyun  * Mode Register
263*4882a593Smuzhiyun  */
264*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_BL(x)		(((x) & 0x7) << 0)
265*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_BT(x)		((x) << 3)
266*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_CL(x)		(((x) & 0x7) << 4)
267*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_TM(x)		((x) << 7)
268*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_DR(x)		((x) << 8)
269*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_WR(x)		(((x) & 0x7) << 9)
270*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_PD(x)		((x) << 12)
271*4882a593Smuzhiyun 
272*4882a593Smuzhiyun /*
273*4882a593Smuzhiyun  * Extended Mode register
274*4882a593Smuzhiyun  */
275*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_DE(x)		((x) << 0)
276*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_ODS(x)		((x) << 1)
277*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT2(x)	((x) << 2)
278*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_AL(x)		(((x) & 0x7) << 3)
279*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT6(x)	((x) << 6)
280*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_OCD(x)		(((x) & 0x7) << 7)
281*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_DQS(x)		((x) << 10)
282*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RDQS(x)	((x) << 11)
283*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_OE(x)		((x) << 12)
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun #define EMR_RTT2(x)			DWCDDR21MCTL_EMR_RTT2(x)
286*4882a593Smuzhiyun #define EMR_RTT6(x)			DWCDDR21MCTL_EMR_RTT6(x)
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_DISABLED	(EMR_RTT6(0) | EMR_RTT2(0))
289*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_75		(EMR_RTT6(0) | EMR_RTT2(1))
290*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_150	(EMR_RTT6(1) | EMR_RTT2(0))
291*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_50		(EMR_RTT6(1) | EMR_RTT2(1))
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun /*
294*4882a593Smuzhiyun  * Extended Mode register 2
295*4882a593Smuzhiyun  */
296*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR2_PASR(x)	(((x) & 0x7) << 0)
297*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR2_DCC(x)	((x) << 3)
298*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR2_SRF(x)	((x) << 7)
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun /*
301*4882a593Smuzhiyun  * Extended Mode register 3: [15:0] reserved for JEDEC.
302*4882a593Smuzhiyun  */
303*4882a593Smuzhiyun 
304*4882a593Smuzhiyun /*
305*4882a593Smuzhiyun  * Host port Configuration register 0-31
306*4882a593Smuzhiyun  */
307*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_HPBL(x)	(((x) & 0xf) << 0)
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun /*
310*4882a593Smuzhiyun  * Priority Queue Configuration register 0-7
311*4882a593Smuzhiyun  */
312*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_TOUT(x)	(((x) & 0xf) << 0)
313*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_TOUTX(x)	(((x) & 0x3) << 8)
314*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_LPQS(x)	(((x) & 0x3) << 10)
315*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_PQBL(x)	(((x) & 0xff) << 12)
316*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_SWAIT(x)	(((x) & 0x1f) << 20)
317*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_INTRPT(x)	(((x) & 0x7) << 25)
318*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_APQS(x)	((x) << 28)
319*4882a593Smuzhiyun 
320*4882a593Smuzhiyun /*
321*4882a593Smuzhiyun  * Memory Manager General Configuration register
322*4882a593Smuzhiyun  */
323*4882a593Smuzhiyun #define DWCDDR21MCTL_MMGCR_UHPP(x)	(((x) & 0x3) << 0)
324*4882a593Smuzhiyun 
325*4882a593Smuzhiyun #endif	/* __DWCDDR21MCTL_H */
326