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