xref: /rk3399_ARM-atf/plat/rockchip/rk3368/drivers/ddr/ddr_rk3368.h (revision 6fba6e0490584036fe1210986d6db439b22cb03e)
1*6fba6e04STony Xie /*
2*6fba6e04STony Xie  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3*6fba6e04STony Xie  *
4*6fba6e04STony Xie  * Redistribution and use in source and binary forms, with or without
5*6fba6e04STony Xie  * modification, are permitted provided that the following conditions are met:
6*6fba6e04STony Xie  *
7*6fba6e04STony Xie  * Redistributions of source code must retain the above copyright notice, this
8*6fba6e04STony Xie  * list of conditions and the following disclaimer.
9*6fba6e04STony Xie  *
10*6fba6e04STony Xie  * Redistributions in binary form must reproduce the above copyright notice,
11*6fba6e04STony Xie  * this list of conditions and the following disclaimer in the documentation
12*6fba6e04STony Xie  * and/or other materials provided with the distribution.
13*6fba6e04STony Xie  *
14*6fba6e04STony Xie  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15*6fba6e04STony Xie  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*6fba6e04STony Xie  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*6fba6e04STony Xie  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
18*6fba6e04STony Xie  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19*6fba6e04STony Xie  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20*6fba6e04STony Xie  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21*6fba6e04STony Xie  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22*6fba6e04STony Xie  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23*6fba6e04STony Xie  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24*6fba6e04STony Xie  * POSSIBILITY OF SUCH DAMAGE.
25*6fba6e04STony Xie  */
26*6fba6e04STony Xie 
27*6fba6e04STony Xie #ifndef __DDR_RK3368_H__
28*6fba6e04STony Xie #define __DDR_RK3368_H__
29*6fba6e04STony Xie 
30*6fba6e04STony Xie #define DDR_PCTL_SCFG		0x0
31*6fba6e04STony Xie #define DDR_PCTL_SCTL		0x4
32*6fba6e04STony Xie #define DDR_PCTL_STAT		0x8
33*6fba6e04STony Xie #define DDR_PCTL_INTRSTAT	0xc
34*6fba6e04STony Xie 
35*6fba6e04STony Xie #define DDR_PCTL_MCMD		0x40
36*6fba6e04STony Xie #define DDR_PCTL_POWCTL		0x44
37*6fba6e04STony Xie #define DDR_PCTL_POWSTAT	0x48
38*6fba6e04STony Xie #define DDR_PCTL_CMDTSTAT	0x4c
39*6fba6e04STony Xie #define DDR_PCTL_CMDTSTATEN	0x50
40*6fba6e04STony Xie #define DDR_PCTL_MRRCFG0	0x60
41*6fba6e04STony Xie #define DDR_PCTL_MRRSTAT0	0x64
42*6fba6e04STony Xie #define DDR_PCTL_MRRSTAT1	0x68
43*6fba6e04STony Xie #define DDR_PCTL_MCFG1		0x7c
44*6fba6e04STony Xie #define DDR_PCTL_MCFG		0x80
45*6fba6e04STony Xie #define DDR_PCTL_PPCFG		0x84
46*6fba6e04STony Xie #define DDR_PCTL_MSTAT		0x88
47*6fba6e04STony Xie #define DDR_PCTL_LPDDR2ZQCFG	0x8c
48*6fba6e04STony Xie #define DDR_PCTL_DTUPDES		0x94
49*6fba6e04STony Xie #define DDR_PCTL_DTUNA			0x98
50*6fba6e04STony Xie #define DDR_PCTL_DTUNE			0x9c
51*6fba6e04STony Xie #define DDR_PCTL_DTUPRD0		0xa0
52*6fba6e04STony Xie #define DDR_PCTL_DTUPRD1		0xa4
53*6fba6e04STony Xie #define DDR_PCTL_DTUPRD2		0xa8
54*6fba6e04STony Xie #define DDR_PCTL_DTUPRD3		0xac
55*6fba6e04STony Xie #define DDR_PCTL_DTUAWDT		0xb0
56*6fba6e04STony Xie #define DDR_PCTL_TOGCNT1U		0xc0
57*6fba6e04STony Xie #define DDR_PCTL_TINIT			0xc4
58*6fba6e04STony Xie #define DDR_PCTL_TRSTH			0xc8
59*6fba6e04STony Xie #define DDR_PCTL_TOGCNT100N		0xcc
60*6fba6e04STony Xie #define DDR_PCTL_TREFI			0xd0
61*6fba6e04STony Xie #define DDR_PCTL_TMRD			0xd4
62*6fba6e04STony Xie #define DDR_PCTL_TRFC			0xd8
63*6fba6e04STony Xie #define DDR_PCTL_TRP			0xdc
64*6fba6e04STony Xie #define DDR_PCTL_TRTW			0xe0
65*6fba6e04STony Xie #define DDR_PCTL_TAL			0xe4
66*6fba6e04STony Xie #define DDR_PCTL_TCL			0xe8
67*6fba6e04STony Xie #define DDR_PCTL_TCWL			0xec
68*6fba6e04STony Xie #define DDR_PCTL_TRAS			0xf0
69*6fba6e04STony Xie #define DDR_PCTL_TRC			0xf4
70*6fba6e04STony Xie #define DDR_PCTL_TRCD			0xf8
71*6fba6e04STony Xie #define DDR_PCTL_TRRD			0xfc
72*6fba6e04STony Xie #define DDR_PCTL_TRTP			0x100
73*6fba6e04STony Xie #define DDR_PCTL_TWR			0x104
74*6fba6e04STony Xie #define DDR_PCTL_TWTR			0x108
75*6fba6e04STony Xie #define DDR_PCTL_TEXSR			0x10c
76*6fba6e04STony Xie #define DDR_PCTL_TXP			0x110
77*6fba6e04STony Xie #define DDR_PCTL_TXPDLL			0x114
78*6fba6e04STony Xie #define DDR_PCTL_TZQCS			0x118
79*6fba6e04STony Xie #define DDR_PCTL_TZQCSI			0x11c
80*6fba6e04STony Xie #define DDR_PCTL_TDQS			0x120
81*6fba6e04STony Xie #define DDR_PCTL_TCKSRE			0x124
82*6fba6e04STony Xie #define DDR_PCTL_TCKSRX			0x128
83*6fba6e04STony Xie #define DDR_PCTL_TCKE			0x12c
84*6fba6e04STony Xie #define DDR_PCTL_TMOD			0x130
85*6fba6e04STony Xie #define DDR_PCTL_TRSTL			0x134
86*6fba6e04STony Xie #define DDR_PCTL_TZQCL			0x138
87*6fba6e04STony Xie #define DDR_PCTL_TMRR			0x13c
88*6fba6e04STony Xie #define DDR_PCTL_TCKESR			0x140
89*6fba6e04STony Xie #define DDR_PCTL_TDPD			0x144
90*6fba6e04STony Xie #define DDR_PCTL_TREFI_MEM_DDR3	0x148
91*6fba6e04STony Xie #define DDR_PCTL_ECCCFG			0x180
92*6fba6e04STony Xie #define DDR_PCTL_ECCTST			0x184
93*6fba6e04STony Xie #define DDR_PCTL_ECCCLR			0x188
94*6fba6e04STony Xie #define DDR_PCTL_ECCLOG			0x18c
95*6fba6e04STony Xie #define DDR_PCTL_DTUWACTL		0x200
96*6fba6e04STony Xie #define DDR_PCTL_DTURACTL		0x204
97*6fba6e04STony Xie #define DDR_PCTL_DTUCFG			0x208
98*6fba6e04STony Xie #define DDR_PCTL_DTUECTL		0x20c
99*6fba6e04STony Xie #define DDR_PCTL_DTUWD0			0x210
100*6fba6e04STony Xie #define DDR_PCTL_DTUWD1			0x214
101*6fba6e04STony Xie #define DDR_PCTL_DTUWD2			0x218
102*6fba6e04STony Xie #define DDR_PCTL_DTUWD3			0x21c
103*6fba6e04STony Xie #define DDR_PCTL_DTUWDM			0x220
104*6fba6e04STony Xie #define DDR_PCTL_DTURD0			0x224
105*6fba6e04STony Xie #define DDR_PCTL_DTURD1			0x228
106*6fba6e04STony Xie #define DDR_PCTL_DTURD2			0x22c
107*6fba6e04STony Xie #define DDR_PCTL_DTURD3			0x230
108*6fba6e04STony Xie #define DDR_PCTL_DTULFSRWD		0x234
109*6fba6e04STony Xie #define DDR_PCTL_DTULFSRRD		0x238
110*6fba6e04STony Xie #define DDR_PCTL_DTUEAF			0x23c
111*6fba6e04STony Xie #define DDR_PCTL_DFITCTRLDELAY	0x240
112*6fba6e04STony Xie #define DDR_PCTL_DFIODTCFG		0x244
113*6fba6e04STony Xie #define DDR_PCTL_DFIODTCFG1		0x248
114*6fba6e04STony Xie #define DDR_PCTL_DFIODTRANKMAP		0x24c
115*6fba6e04STony Xie #define DDR_PCTL_DFITPHYWRDATA		0x250
116*6fba6e04STony Xie #define DDR_PCTL_DFITPHYWRLAT		0x254
117*6fba6e04STony Xie #define DDR_PCTL_DFITPHYWRDATALAT	0x258
118*6fba6e04STony Xie #define DDR_PCTL_DFITRDDATAEN		0x260
119*6fba6e04STony Xie #define DDR_PCTL_DFITPHYRDLAT		0x264
120*6fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE0	0x270
121*6fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE1	0x274
122*6fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE2	0x278
123*6fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE3	0x27c
124*6fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDMIN		0x280
125*6fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDMAX		0x284
126*6fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDDLY		0x288
127*6fba6e04STony Xie #define DDR_PCTL_DFIUPDCFG			0x290
128*6fba6e04STony Xie #define DDR_PCTL_DFITREFMSKI		0x294
129*6fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDI		0x298
130*6fba6e04STony Xie #define DDR_PCTL_DFITRCFG0			0x2ac
131*6fba6e04STony Xie #define DDR_PCTL_DFITRSTAT0			0x2b0
132*6fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLEN		0x2b4
133*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLEN		0x2b8
134*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEEN	0x2bc
135*6fba6e04STony Xie #define DDR_PCTL_DFISTSTAT0			0x2c0
136*6fba6e04STony Xie #define DDR_PCTL_DFISTCFG0			0x2c4
137*6fba6e04STony Xie #define DDR_PCTL_DFISTCFG1			0x2c8
138*6fba6e04STony Xie #define DDR_PCTL_DFITDRAMCLKEN		0x2d0
139*6fba6e04STony Xie #define DDR_PCTL_DFITDRAMCLKDIS		0x2d4
140*6fba6e04STony Xie #define DDR_PCTL_DFISTCFG2			0x2d8
141*6fba6e04STony Xie #define DDR_PCTL_DFISTPARCLR		0x2dc
142*6fba6e04STony Xie #define DDR_PCTL_DFISTPARLOG		0x2e0
143*6fba6e04STony Xie #define DDR_PCTL_DFILPCFG0			0x2f0
144*6fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLRESP0	0x300
145*6fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLRESP1	0x304
146*6fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLRESP2	0x308
147*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLRESP0	0x30c
148*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLRESP1	0x310
149*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLRESP2	0x314
150*6fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLDELAY0	0x318
151*6fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLDELAY1	0x31c
152*6fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLDELAY2	0x320
153*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLDELAY0	0x324
154*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLDELAY1	0x328
155*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLDELAY2	0x32c
156*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEDELAY0	0x330
157*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEDELAY1	0x334
158*6fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEDELAY2	0x338
159*6fba6e04STony Xie #define DDR_PCTL_DFITRCMD			0x33c
160*6fba6e04STony Xie #define DDR_PCTL_IPVR				0x3f8
161*6fba6e04STony Xie #define DDR_PCTL_IPTR				0x3fc
162*6fba6e04STony Xie 
163*6fba6e04STony Xie /* DDR PHY REG */
164*6fba6e04STony Xie #define DDR_PHY_REG0		0x0
165*6fba6e04STony Xie #define DDR_PHY_REG1		0x4
166*6fba6e04STony Xie #define DDR_PHY_REG2		0x8
167*6fba6e04STony Xie #define DDR_PHY_REG3		0xc
168*6fba6e04STony Xie #define DDR_PHY_REG4		0x10
169*6fba6e04STony Xie #define DDR_PHY_REG5		0x14
170*6fba6e04STony Xie #define DDR_PHY_REG6		0x18
171*6fba6e04STony Xie #define DDR_PHY_REGB		0x2c
172*6fba6e04STony Xie #define DDR_PHY_REGC		0x30
173*6fba6e04STony Xie #define DDR_PHY_REG11		0x44
174*6fba6e04STony Xie #define DDR_PHY_REG12		0x48
175*6fba6e04STony Xie #define DDR_PHY_REG13		0x4c
176*6fba6e04STony Xie #define DDR_PHY_REG14		0x50
177*6fba6e04STony Xie #define DDR_PHY_REG16		0x58
178*6fba6e04STony Xie #define DDR_PHY_REG20		0x80
179*6fba6e04STony Xie #define DDR_PHY_REG21		0x84
180*6fba6e04STony Xie #define DDR_PHY_REG26		0x98
181*6fba6e04STony Xie #define DDR_PHY_REG27		0x9c
182*6fba6e04STony Xie #define DDR_PHY_REG28		0xa0
183*6fba6e04STony Xie #define DDR_PHY_REG2C		0xb0
184*6fba6e04STony Xie #define DDR_PHY_REG30		0xc0
185*6fba6e04STony Xie #define DDR_PHY_REG31		0xc4
186*6fba6e04STony Xie #define DDR_PHY_REG36		0xd8
187*6fba6e04STony Xie #define DDR_PHY_REG37		0xdc
188*6fba6e04STony Xie #define DDR_PHY_REG38		0xe0
189*6fba6e04STony Xie #define DDR_PHY_REG3C		0xf0
190*6fba6e04STony Xie #define DDR_PHY_REG40		0x100
191*6fba6e04STony Xie #define DDR_PHY_REG41		0x104
192*6fba6e04STony Xie #define DDR_PHY_REG46		0x118
193*6fba6e04STony Xie #define DDR_PHY_REG47		0x11c
194*6fba6e04STony Xie #define DDR_PHY_REG48		0x120
195*6fba6e04STony Xie #define DDR_PHY_REG4C		0x130
196*6fba6e04STony Xie #define DDR_PHY_REG50		0x140
197*6fba6e04STony Xie #define DDR_PHY_REG51		0x144
198*6fba6e04STony Xie #define DDR_PHY_REG56		0x158
199*6fba6e04STony Xie #define DDR_PHY_REG57		0x15c
200*6fba6e04STony Xie #define DDR_PHY_REG58		0x160
201*6fba6e04STony Xie #define DDR_PHY_REG5C		0x170
202*6fba6e04STony Xie #define DDR_PHY_REGDLL		0x290
203*6fba6e04STony Xie #define DDR_PHY_REGEC		0x3b0
204*6fba6e04STony Xie #define DDR_PHY_REGED		0x3b4
205*6fba6e04STony Xie #define DDR_PHY_REGEE		0x3b8
206*6fba6e04STony Xie #define DDR_PHY_REGEF		0x3bc
207*6fba6e04STony Xie #define DDR_PHY_REGF0		0x3c0
208*6fba6e04STony Xie #define DDR_PHY_REGF1		0x3c4
209*6fba6e04STony Xie #define DDR_PHY_REGF2		0x3c8
210*6fba6e04STony Xie #define DDR_PHY_REGFA		0x3e8
211*6fba6e04STony Xie #define DDR_PHY_REGFB		0x3ec
212*6fba6e04STony Xie #define DDR_PHY_REGFC		0x3f0
213*6fba6e04STony Xie #define DDR_PHY_REGFD		0x3f4
214*6fba6e04STony Xie #define DDR_PHY_REGFE		0x3f8
215*6fba6e04STony Xie #define DDR_PHY_REGFF		0x3fc
216*6fba6e04STony Xie 
217*6fba6e04STony Xie /* MSCH REG define */
218*6fba6e04STony Xie #define MSCH_COREID			0x0
219*6fba6e04STony Xie #define MSCH_DDRCONF		0x8
220*6fba6e04STony Xie #define MSCH_DDRTIMING		0xc
221*6fba6e04STony Xie #define MSCH_DDRMODE		0x10
222*6fba6e04STony Xie #define MSCH_READLATENCY	0x14
223*6fba6e04STony Xie #define MSCH_ACTIVATE		0x38
224*6fba6e04STony Xie #define MSCH_DEVTODEV		0x3c
225*6fba6e04STony Xie 
226*6fba6e04STony Xie #define SET_NR(n)      ((0x3f << (8 + 16)) | ((n - 1) << 8))
227*6fba6e04STony Xie #define SET_NO(n)      ((0xf << (0 + 16)) | ((n - 1) << 0))
228*6fba6e04STony Xie #define SET_NF(n)      ((n - 1) & 0x1fff)
229*6fba6e04STony Xie #define SET_NB(n)      ((n - 1) & 0xfff)
230*6fba6e04STony Xie #define PLLMODE(n)     ((0x3 << (8 + 16)) | (n << 8))
231*6fba6e04STony Xie 
232*6fba6e04STony Xie /* GRF REG define */
233*6fba6e04STony Xie #define GRF_SOC_STATUS0		0x480
234*6fba6e04STony Xie #define GRF_DDRPHY_LOCK		(0x1 << 15)
235*6fba6e04STony Xie #define GRF_DDRC0_CON0		0x600
236*6fba6e04STony Xie 
237*6fba6e04STony Xie /* CRU softreset ddr pctl, phy */
238*6fba6e04STony Xie #define DDRMSCH0_SRSTN_REQ(n)  (((0x1 << 10) << 16) | (n << 10))
239*6fba6e04STony Xie #define DDRCTRL0_PSRSTN_REQ(n) (((0x1 << 3) << 16) | (n << 3))
240*6fba6e04STony Xie #define DDRCTRL0_SRSTN_REQ(n)  (((0x1 << 2) << 16) | (n << 2))
241*6fba6e04STony Xie #define DDRPHY0_PSRSTN_REQ(n)  (((0x1 << 1) << 16) | (n << 1))
242*6fba6e04STony Xie #define DDRPHY0_SRSTN_REQ(n)   (((0x1 << 0) << 16) | (n << 0))
243*6fba6e04STony Xie 
244*6fba6e04STony Xie /* CRU_DPLL_CON2 */
245*6fba6e04STony Xie #define DPLL_STATUS_LOCK		(1 << 31)
246*6fba6e04STony Xie 
247*6fba6e04STony Xie /* CRU_DPLL_CON3 */
248*6fba6e04STony Xie #define DPLL_POWER_DOWN			((0x1 << (1 + 16)) | (0 << 1))
249*6fba6e04STony Xie #define DPLL_WORK_NORMAL_MODE		((0x3 << (8 + 16)) | (0 << 8))
250*6fba6e04STony Xie #define DPLL_WORK_SLOW_MODE		((0x3 << (8 + 16)) | (1 << 8))
251*6fba6e04STony Xie #define DPLL_RESET_CONTROL_NORMAL	((0x1 << (5 + 16)) | (0x0 << 5))
252*6fba6e04STony Xie #define DPLL_RESET_CONTROL_RESET	((0x1 << (5 + 16)) | (0x1 << 5))
253*6fba6e04STony Xie 
254*6fba6e04STony Xie /* PMU_PWRDN_CON */
255*6fba6e04STony Xie #define PD_PERI_PWRDN_ENABLE		(1 << 13)
256*6fba6e04STony Xie 
257*6fba6e04STony Xie #define DDR_PLL_SRC_MASK		0x13
258*6fba6e04STony Xie 
259*6fba6e04STony Xie /* DDR_PCTL_TREFI */
260*6fba6e04STony Xie #define DDR_UPD_REF_ENABLE		(0X1 << 31)
261*6fba6e04STony Xie 
262*6fba6e04STony Xie uint32_t ddr_get_resume_code_size(void);
263*6fba6e04STony Xie uint32_t ddr_get_resume_data_size(void);
264*6fba6e04STony Xie uint32_t *ddr_get_resume_code_base(void);
265*6fba6e04STony Xie void ddr_reg_save(uint32_t pllpdstat, uint64_t base_addr);
266*6fba6e04STony Xie 
267*6fba6e04STony Xie #endif
268