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