xref: /OK3568_Linux_fs/u-boot/arch/arm/include/asm/arch-rockchip/sdram_rv1126.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier:     GPL-2.0+ */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2020 Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef _ASM_ARCH_SDRAM_RK1126_H
7*4882a593Smuzhiyun #define _ASM_ARCH_SDRAM_RK1126_H
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <asm/arch/dram_spec_timing.h>
10*4882a593Smuzhiyun #include <asm/arch/sdram.h>
11*4882a593Smuzhiyun #include <asm/arch/sdram_common.h>
12*4882a593Smuzhiyun #include <asm/arch/sdram_msch.h>
13*4882a593Smuzhiyun #include <asm/arch/sdram_pctl_px30.h>
14*4882a593Smuzhiyun #include <asm/arch/sdram_phy_rv1126.h>
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define AGINGX0_VAL			(4)
17*4882a593Smuzhiyun #define AGING_CPU_VAL			(0xff)
18*4882a593Smuzhiyun #define AGING_NPU_VAL			(0xff)
19*4882a593Smuzhiyun #define AGING_OTHER_VAL			(0x33)
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #define PATTERN				(0x5aa5f00f)
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define PHY_DDR3_RON_DISABLE		(0)
24*4882a593Smuzhiyun #define PHY_DDR3_RON_455ohm		(1)
25*4882a593Smuzhiyun #define PHY_DDR3_RON_230ohm		(2)
26*4882a593Smuzhiyun #define PHY_DDR3_RON_153ohm		(3)
27*4882a593Smuzhiyun #define PHY_DDR3_RON_115ohm		(4)
28*4882a593Smuzhiyun #define PHY_DDR3_RON_91ohm		(5)
29*4882a593Smuzhiyun #define PHY_DDR3_RON_76ohm		(6)
30*4882a593Smuzhiyun #define PHY_DDR3_RON_65ohm		(7)
31*4882a593Smuzhiyun #define PHY_DDR3_RON_57ohm		(16)
32*4882a593Smuzhiyun #define PHY_DDR3_RON_51ohm		(17)
33*4882a593Smuzhiyun #define PHY_DDR3_RON_46ohm		(18)
34*4882a593Smuzhiyun #define PHY_DDR3_RON_41ohm		(19)
35*4882a593Smuzhiyun #define PHY_DDR3_RON_38ohm		(20)
36*4882a593Smuzhiyun #define PHY_DDR3_RON_35ohm		(21)
37*4882a593Smuzhiyun #define PHY_DDR3_RON_32ohm		(22)
38*4882a593Smuzhiyun #define PHY_DDR3_RON_30ohm		(23)
39*4882a593Smuzhiyun #define PHY_DDR3_RON_28ohm		(24)
40*4882a593Smuzhiyun #define PHY_DDR3_RON_27ohm		(25)
41*4882a593Smuzhiyun #define PHY_DDR3_RON_25ohm		(26)
42*4882a593Smuzhiyun #define PHY_DDR3_RON_24ohm		(27)
43*4882a593Smuzhiyun #define PHY_DDR3_RON_23ohm		(28)
44*4882a593Smuzhiyun #define PHY_DDR3_RON_22ohm		(29)
45*4882a593Smuzhiyun #define PHY_DDR3_RON_21ohm		(30)
46*4882a593Smuzhiyun #define PHY_DDR3_RON_20ohm		(31)
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun #define PHY_DDR3_RTT_DISABLE		(0)
49*4882a593Smuzhiyun #define PHY_DDR3_RTT_561ohm		(1)
50*4882a593Smuzhiyun #define PHY_DDR3_RTT_282ohm		(2)
51*4882a593Smuzhiyun #define PHY_DDR3_RTT_188ohm		(3)
52*4882a593Smuzhiyun #define PHY_DDR3_RTT_141ohm		(4)
53*4882a593Smuzhiyun #define PHY_DDR3_RTT_113ohm		(5)
54*4882a593Smuzhiyun #define PHY_DDR3_RTT_94ohm		(6)
55*4882a593Smuzhiyun #define PHY_DDR3_RTT_81ohm		(7)
56*4882a593Smuzhiyun #define PHY_DDR3_RTT_72ohm		(16)
57*4882a593Smuzhiyun #define PHY_DDR3_RTT_64ohm		(17)
58*4882a593Smuzhiyun #define PHY_DDR3_RTT_58ohm		(18)
59*4882a593Smuzhiyun #define PHY_DDR3_RTT_52ohm		(19)
60*4882a593Smuzhiyun #define PHY_DDR3_RTT_48ohm		(20)
61*4882a593Smuzhiyun #define PHY_DDR3_RTT_44ohm		(21)
62*4882a593Smuzhiyun #define PHY_DDR3_RTT_41ohm		(22)
63*4882a593Smuzhiyun #define PHY_DDR3_RTT_38ohm		(23)
64*4882a593Smuzhiyun #define PHY_DDR3_RTT_37ohm		(24)
65*4882a593Smuzhiyun #define PHY_DDR3_RTT_34ohm		(25)
66*4882a593Smuzhiyun #define PHY_DDR3_RTT_32ohm		(26)
67*4882a593Smuzhiyun #define PHY_DDR3_RTT_31ohm		(27)
68*4882a593Smuzhiyun #define PHY_DDR3_RTT_29ohm		(28)
69*4882a593Smuzhiyun #define PHY_DDR3_RTT_28ohm		(29)
70*4882a593Smuzhiyun #define PHY_DDR3_RTT_27ohm		(30)
71*4882a593Smuzhiyun #define PHY_DDR3_RTT_25ohm		(31)
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_DISABLE	(0)
74*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_482ohm	(1)
75*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_244ohm	(2)
76*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_162ohm	(3)
77*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_122ohm	(4)
78*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_97ohm	(5)
79*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_81ohm	(6)
80*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_69ohm	(7)
81*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_61ohm	(16)
82*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_54ohm	(17)
83*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_48ohm	(18)
84*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_44ohm	(19)
85*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_40ohm	(20)
86*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_37ohm	(21)
87*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_34ohm	(22)
88*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_32ohm	(23)
89*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_30ohm	(24)
90*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_28ohm	(25)
91*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_27ohm	(26)
92*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_25ohm	(27)
93*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_24ohm	(28)
94*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_23ohm	(29)
95*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_22ohm	(30)
96*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RON_21ohm	(31)
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_DISABLE	(0)
99*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_586ohm	(1)
100*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_294ohm	(2)
101*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_196ohm	(3)
102*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_148ohm	(4)
103*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_118ohm	(5)
104*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_99ohm	(6)
105*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_85ohm	(7)
106*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_76ohm	(16)
107*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_67ohm	(17)
108*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_60ohm	(18)
109*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_55ohm	(19)
110*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_50ohm	(20)
111*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_46ohm	(21)
112*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_43ohm	(22)
113*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_40ohm	(23)
114*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_38ohm	(24)
115*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_36ohm	(25)
116*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_34ohm	(26)
117*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_32ohm	(27)
118*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_31ohm	(28)
119*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_29ohm	(29)
120*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_28ohm	(30)
121*4882a593Smuzhiyun #define PHY_DDR4_LPDDR3_RTT_27ohm	(31)
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun #define PHY_LPDDR4_RON_DISABLE		(0)
124*4882a593Smuzhiyun #define PHY_LPDDR4_RON_501ohm		(1)
125*4882a593Smuzhiyun #define PHY_LPDDR4_RON_253ohm		(2)
126*4882a593Smuzhiyun #define PHY_LPDDR4_RON_168ohm		(3)
127*4882a593Smuzhiyun #define PHY_LPDDR4_RON_126ohm		(4)
128*4882a593Smuzhiyun #define PHY_LPDDR4_RON_101ohm		(5)
129*4882a593Smuzhiyun #define PHY_LPDDR4_RON_84ohm		(6)
130*4882a593Smuzhiyun #define PHY_LPDDR4_RON_72ohm		(7)
131*4882a593Smuzhiyun #define PHY_LPDDR4_RON_63ohm		(16)
132*4882a593Smuzhiyun #define PHY_LPDDR4_RON_56ohm		(17)
133*4882a593Smuzhiyun #define PHY_LPDDR4_RON_50ohm		(18)
134*4882a593Smuzhiyun #define PHY_LPDDR4_RON_46ohm		(19)
135*4882a593Smuzhiyun #define PHY_LPDDR4_RON_42ohm		(20)
136*4882a593Smuzhiyun #define PHY_LPDDR4_RON_38ohm		(21)
137*4882a593Smuzhiyun #define PHY_LPDDR4_RON_36ohm		(22)
138*4882a593Smuzhiyun #define PHY_LPDDR4_RON_33ohm		(23)
139*4882a593Smuzhiyun #define PHY_LPDDR4_RON_31ohm		(24)
140*4882a593Smuzhiyun #define PHY_LPDDR4_RON_29ohm		(25)
141*4882a593Smuzhiyun #define PHY_LPDDR4_RON_28ohm		(26)
142*4882a593Smuzhiyun #define PHY_LPDDR4_RON_26ohm		(27)
143*4882a593Smuzhiyun #define PHY_LPDDR4_RON_25ohm		(28)
144*4882a593Smuzhiyun #define PHY_LPDDR4_RON_24ohm		(29)
145*4882a593Smuzhiyun #define PHY_LPDDR4_RON_23ohm		(30)
146*4882a593Smuzhiyun #define PHY_LPDDR4_RON_22ohm		(31)
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_DISABLE		(0)
149*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_604ohm		(1)
150*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_303ohm		(2)
151*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_202ohm		(3)
152*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_152ohm		(4)
153*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_122ohm		(5)
154*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_101ohm		(6)
155*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_87ohm		(7)
156*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_78ohm		(16)
157*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_69ohm		(17)
158*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_62ohm		(18)
159*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_56ohm		(19)
160*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_52ohm		(20)
161*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_48ohm		(21)
162*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_44ohm		(22)
163*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_41ohm		(23)
164*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_39ohm		(24)
165*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_37ohm		(25)
166*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_35ohm		(26)
167*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_33ohm		(27)
168*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_32ohm		(28)
169*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_30ohm		(29)
170*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_29ohm		(30)
171*4882a593Smuzhiyun #define PHY_LPDDR4_RTT_27ohm		(31)
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #define ADD_CMD_CA			(0x150)
174*4882a593Smuzhiyun #define ADD_GROUP_CS0_A			(0x170)
175*4882a593Smuzhiyun #define ADD_GROUP_CS0_B			(0x1d0)
176*4882a593Smuzhiyun #define ADD_GROUP_CS1_A			(0x1a0)
177*4882a593Smuzhiyun #define ADD_GROUP_CS1_B			(0x200)
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun /* PMUGRF */
180*4882a593Smuzhiyun #define PMUGRF_OS_REG0			(0x200)
181*4882a593Smuzhiyun #define PMUGRF_OS_REG(n)		(PMUGRF_OS_REG0 + (n) * 4)
182*4882a593Smuzhiyun #define PMUGRF_CON_DDRPHY_BUFFEREN_MASK		(0x3 << (12 + 16))
183*4882a593Smuzhiyun #define PMUGRF_CON_DDRPHY_BUFFEREN_EN		(0x1 << 12)
184*4882a593Smuzhiyun #define PMUGRF_CON_DDRPHY_BUFFEREN_DIS	(0x2 << 12)
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun /* DDR GRF */
187*4882a593Smuzhiyun #define DDR_GRF_CON(n)			(0 + (n) * 4)
188*4882a593Smuzhiyun #define DDR_GRF_STATUS_BASE		(0X100)
189*4882a593Smuzhiyun #define DDR_GRF_STATUS(n)		(DDR_GRF_STATUS_BASE + (n) * 4)
190*4882a593Smuzhiyun #define DDR_GRF_LP_CON			(0x20)
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun #define SPLIT_MODE_32_L16_VALID		(0)
193*4882a593Smuzhiyun #define SPLIT_MODE_32_H16_VALID		(1)
194*4882a593Smuzhiyun #define SPLIT_MODE_16_L8_VALID		(2)
195*4882a593Smuzhiyun #define SPLIT_MODE_16_H8_VALID		(3)
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun #define DDR_GRF_SPLIT_CON		(0x10)
198*4882a593Smuzhiyun #define SPLIT_MODE_MASK			(0x3)
199*4882a593Smuzhiyun #define SPLIT_MODE_OFFSET		(9)
200*4882a593Smuzhiyun #define SPLIT_BYPASS_MASK		(1)
201*4882a593Smuzhiyun #define SPLIT_BYPASS_OFFSET		(8)
202*4882a593Smuzhiyun #define SPLIT_SIZE_MASK			(0xff)
203*4882a593Smuzhiyun #define SPLIT_SIZE_OFFSET		(0)
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun /* SGRF SOC_CON13 */
206*4882a593Smuzhiyun #define UPCTL2_ASRSTN_REQ(n)		(((0x1 << 0) << 16) | ((n) << 0))
207*4882a593Smuzhiyun #define UPCTL2_PSRSTN_REQ(n)		(((0x1 << 1) << 16) | ((n) << 1))
208*4882a593Smuzhiyun #define UPCTL2_SRSTN_REQ(n)		(((0x1 << 2) << 16) | ((n) << 2))
209*4882a593Smuzhiyun 
210*4882a593Smuzhiyun /* CRU define */
211*4882a593Smuzhiyun /* CRU_PLL_CON0 */
212*4882a593Smuzhiyun #define PB(n)				((0x1 << (15 + 16)) | ((n) << 15))
213*4882a593Smuzhiyun #define POSTDIV1(n)			((0x7 << (12 + 16)) | ((n) << 12))
214*4882a593Smuzhiyun #define FBDIV(n)			((0xFFF << 16) | (n))
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun /* CRU_PLL_CON1 */
217*4882a593Smuzhiyun #define RSTMODE(n)			((0x1 << (15 + 16)) | ((n) << 15))
218*4882a593Smuzhiyun #define RST(n)				((0x1 << (14 + 16)) | ((n) << 14))
219*4882a593Smuzhiyun #define PD(n)				((0x1 << (13 + 16)) | ((n) << 13))
220*4882a593Smuzhiyun #define DSMPD(n)			((0x1 << (12 + 16)) | ((n) << 12))
221*4882a593Smuzhiyun #define LOCK(n)				(((n) >> 10) & 0x1)
222*4882a593Smuzhiyun #define POSTDIV2(n)			((0x7 << (6 + 16)) | ((n) << 6))
223*4882a593Smuzhiyun #define REFDIV(n)			((0x3F << 16) | (n))
224*4882a593Smuzhiyun 
225*4882a593Smuzhiyun /* CRU_PLL_CON3 */
226*4882a593Smuzhiyun #define SSMOD_SPREAD(n)			((0x1f << (8 + 16)) | ((n) << 8))
227*4882a593Smuzhiyun #define SSMOD_DIVVAL(n)			((0xf << (4 + 16)) | ((n) << 4))
228*4882a593Smuzhiyun #define SSMOD_DOWNSPREAD(n)		((0x1 << (3 + 16)) | ((n) << 3))
229*4882a593Smuzhiyun #define SSMOD_RESET(n)			((0x1 << (2 + 16)) | ((n) << 2))
230*4882a593Smuzhiyun #define SSMOD_DIS_SSCG(n)		((0x1 << (1 + 16)) | ((n) << 1))
231*4882a593Smuzhiyun #define SSMOD_BP(n)			((0x1 << (0 + 16)) | ((n) << 0))
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun /* CRU_MODE */
234*4882a593Smuzhiyun #define CLOCK_FROM_XIN_OSC		(0)
235*4882a593Smuzhiyun #define CLOCK_FROM_PLL			(1)
236*4882a593Smuzhiyun #define CLOCK_FROM_RTC_32K		(2)
237*4882a593Smuzhiyun #define DPLL_MODE(n)			((0x3 << (2 + 16)) | ((n) << 2))
238*4882a593Smuzhiyun 
239*4882a593Smuzhiyun /* CRU_SOFTRESET_CON1 */
240*4882a593Smuzhiyun #define DDRPHY_PSRSTN_REQ(n)		(((0x1 << 14) << 16) | ((n) << 14))
241*4882a593Smuzhiyun #define DDRPHY_SRSTN_REQ(n)		(((0x1 << 15) << 16) | ((n) << 15))
242*4882a593Smuzhiyun /* CRU_CLKGATE_CON2 */
243*4882a593Smuzhiyun #define DDR_MSCH_EN_MASK		((0x1 << 10) << 16)
244*4882a593Smuzhiyun #define DDR_MSCH_EN_SHIFT		(10)
245*4882a593Smuzhiyun 
246*4882a593Smuzhiyun /* CRU register */
247*4882a593Smuzhiyun #define CRU_PLL_CON(pll_id, n)		((pll_id)  * 0x20 + (n) * 4)
248*4882a593Smuzhiyun #define CRU_MODE			(0xa0)
249*4882a593Smuzhiyun #define CRU_GLB_CNT_TH			(0xb0)
250*4882a593Smuzhiyun #define CRU_CLKSEL_CON_BASE		0x100
251*4882a593Smuzhiyun #define CRU_CLKSELS_CON(i)		(CRU_CLKSEL_CON_BASE + ((i) * 4))
252*4882a593Smuzhiyun #define CRU_CLKGATE_CON_BASE		0x230
253*4882a593Smuzhiyun #define CRU_CLKGATE_CON(i)		(CRU_CLKGATE_CON_BASE + ((i) * 4))
254*4882a593Smuzhiyun #define CRU_CLKSFTRST_CON_BASE		0x300
255*4882a593Smuzhiyun #define CRU_CLKSFTRST_CON(i)		(CRU_CLKSFTRST_CON_BASE + ((i) * 4))
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun /* SGRF_SOC_CON2 */
258*4882a593Smuzhiyun #define MSCH_AXI_BYPASS_ALL_MASK	(1)
259*4882a593Smuzhiyun #define MSCH_AXI_BYPASS_ALL_SHIFT	(15)
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun /* SGRF_SOC_CON12 */
262*4882a593Smuzhiyun #define CLK_DDR_UPCTL_EN_MASK		((0x1 << 2) << 16)
263*4882a593Smuzhiyun #define CLK_DDR_UPCTL_EN_SHIFT		(2)
264*4882a593Smuzhiyun #define ACLK_DDR_UPCTL_EN_MASK		((0x1 << 0) << 16)
265*4882a593Smuzhiyun #define ACLK_DDR_UPCTL_EN_SHIFT		(0)
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun /* DDRGRF DDR CON2 */
268*4882a593Smuzhiyun #define DFI_FREQ_CHANGE_ACK		BIT(10)
269*4882a593Smuzhiyun /* DDRGRF status8 */
270*4882a593Smuzhiyun #define DFI_FREQ_CHANGE_REQ		BIT(19)
271*4882a593Smuzhiyun 
272*4882a593Smuzhiyun struct rv1126_ddrgrf {
273*4882a593Smuzhiyun 	u32 ddr_grf_con[4];
274*4882a593Smuzhiyun 	u32 grf_ddrsplit_con;
275*4882a593Smuzhiyun 	u32 reserved1[(0x20 - 0x10) / 4 - 1];
276*4882a593Smuzhiyun 	u32 ddr_grf_lp_con;
277*4882a593Smuzhiyun 	u32 reserved2[(0x40 - 0x20) / 4 - 1];
278*4882a593Smuzhiyun 	u32 grf_ddrphy_con[6];
279*4882a593Smuzhiyun 	u32 reserved3[(0x100 - 0x54) / 4 - 1];
280*4882a593Smuzhiyun 	u32 ddr_grf_status[18];
281*4882a593Smuzhiyun 	u32 reserved4[(0x150 - 0x144) / 4 - 1];
282*4882a593Smuzhiyun 	u32 grf_ddrhold_status;
283*4882a593Smuzhiyun 	u32 reserved5[(0x160 - 0x150) / 4 - 1];
284*4882a593Smuzhiyun 	u32 grf_ddrphy_status[2];
285*4882a593Smuzhiyun };
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun struct rv1126_ddr_phy_regs {
288*4882a593Smuzhiyun 	u32 phy[8][2];
289*4882a593Smuzhiyun };
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun struct msch_regs {
292*4882a593Smuzhiyun 	u32 coreid;
293*4882a593Smuzhiyun 	u32 revisionid;
294*4882a593Smuzhiyun 	u32 deviceconf;
295*4882a593Smuzhiyun 	u32 devicesize;
296*4882a593Smuzhiyun 	u32 ddrtiminga0;
297*4882a593Smuzhiyun 	u32 ddrtimingb0;
298*4882a593Smuzhiyun 	u32 ddrtimingc0;
299*4882a593Smuzhiyun 	u32 devtodev0;
300*4882a593Smuzhiyun 	u32 reserved1[(0x110 - 0x20) / 4];
301*4882a593Smuzhiyun 	u32 ddrmode;
302*4882a593Smuzhiyun 	u32 ddr4timing;
303*4882a593Smuzhiyun 	u32 reserved2[(0x1000 - 0x118) / 4];
304*4882a593Smuzhiyun 	u32 agingx0;
305*4882a593Smuzhiyun 	u32 reserved3[(0x1040 - 0x1004) / 4];
306*4882a593Smuzhiyun 	u32 aging0;
307*4882a593Smuzhiyun 	u32 aging1;
308*4882a593Smuzhiyun 	u32 aging2;
309*4882a593Smuzhiyun 	u32 aging3;
310*4882a593Smuzhiyun };
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun struct sdram_msch_timings {
313*4882a593Smuzhiyun 	union noc_ddrtiminga0 ddrtiminga0;
314*4882a593Smuzhiyun 	union noc_ddrtimingb0 ddrtimingb0;
315*4882a593Smuzhiyun 	union noc_ddrtimingc0 ddrtimingc0;
316*4882a593Smuzhiyun 	union noc_devtodev_rv1126 devtodev0;
317*4882a593Smuzhiyun 	union noc_ddrmode ddrmode;
318*4882a593Smuzhiyun 	union noc_ddr4timing ddr4timing;
319*4882a593Smuzhiyun 	u32 agingx0;
320*4882a593Smuzhiyun 	u32 aging0;
321*4882a593Smuzhiyun 	u32 aging1;
322*4882a593Smuzhiyun 	u32 aging2;
323*4882a593Smuzhiyun 	u32 aging3;
324*4882a593Smuzhiyun };
325*4882a593Smuzhiyun 
326*4882a593Smuzhiyun struct rv1126_sdram_channel {
327*4882a593Smuzhiyun 	struct sdram_cap_info cap_info;
328*4882a593Smuzhiyun 	struct sdram_msch_timings noc_timings;
329*4882a593Smuzhiyun };
330*4882a593Smuzhiyun 
331*4882a593Smuzhiyun struct rv1126_sdram_params {
332*4882a593Smuzhiyun 	struct rv1126_sdram_channel ch;
333*4882a593Smuzhiyun 	struct sdram_base_params base;
334*4882a593Smuzhiyun 	struct ddr_pctl_regs pctl_regs;
335*4882a593Smuzhiyun 	struct rv1126_ddr_phy_regs phy_regs;
336*4882a593Smuzhiyun };
337*4882a593Smuzhiyun 
338*4882a593Smuzhiyun struct rv1126_fsp_param {
339*4882a593Smuzhiyun 	u32 flag;
340*4882a593Smuzhiyun 	u32 freq_mhz;
341*4882a593Smuzhiyun 
342*4882a593Smuzhiyun 	/* dram size */
343*4882a593Smuzhiyun 	u32 dq_odt;
344*4882a593Smuzhiyun 	u32 ca_odt;
345*4882a593Smuzhiyun 	u32 ds_pdds;
346*4882a593Smuzhiyun 	u32 vref_ca[2];
347*4882a593Smuzhiyun 	u32 vref_dq[2];
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun 	/* phy side */
350*4882a593Smuzhiyun 	u32 wr_dq_drv;
351*4882a593Smuzhiyun 	u32 wr_ca_drv;
352*4882a593Smuzhiyun 	u32 wr_ckcs_drv;
353*4882a593Smuzhiyun 	u32 rd_odt;
354*4882a593Smuzhiyun 	u32 rd_odt_up_en;
355*4882a593Smuzhiyun 	u32 rd_odt_down_en;
356*4882a593Smuzhiyun 	u32 vref_inner;
357*4882a593Smuzhiyun 	u32 vref_out;
358*4882a593Smuzhiyun 	u32 lp4_drv_pd_en;
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun 	struct sdram_msch_timings noc_timings;
361*4882a593Smuzhiyun };
362*4882a593Smuzhiyun 
363*4882a593Smuzhiyun #define MAX_IDX			(4)
364*4882a593Smuzhiyun #define FSP_FLAG		(0xfead0001)
365*4882a593Smuzhiyun #define SHARE_MEM_BASE		(0x100000)
366*4882a593Smuzhiyun /*
367*4882a593Smuzhiyun  * Borrow share memory space to temporarily store FSP parame.
368*4882a593Smuzhiyun  * In the stage of DDR init write FSP parame to this space.
369*4882a593Smuzhiyun  * In the stage of trust init move FSP parame to SRAM space
370*4882a593Smuzhiyun  * from share memory space.
371*4882a593Smuzhiyun  */
372*4882a593Smuzhiyun #define FSP_PARAM_STORE_ADDR	(SHARE_MEM_BASE)
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun /* store result of read and write training, for ddr_dq_eye tool in u-boot */
375*4882a593Smuzhiyun #define RW_TRN_RESULT_ADDR	(0x2000000 + 0x8000)	/* 32M + 32k */
376*4882a593Smuzhiyun #define PRINT_STEP		1
377*4882a593Smuzhiyun 
378*4882a593Smuzhiyun #undef FSP_NUM
379*4882a593Smuzhiyun #undef CS_NUM
380*4882a593Smuzhiyun #undef BYTE_NUM
381*4882a593Smuzhiyun 
382*4882a593Smuzhiyun #define FSP_NUM			4
383*4882a593Smuzhiyun #define CS_NUM			2
384*4882a593Smuzhiyun #define BYTE_NUM		4
385*4882a593Smuzhiyun #define RD_DESKEW_NUM		64
386*4882a593Smuzhiyun #define WR_DESKEW_NUM		64
387*4882a593Smuzhiyun 
388*4882a593Smuzhiyun #define LP4_WIDTH_REF_MHZ_H	1056
389*4882a593Smuzhiyun #define LP4_RD_WIDTH_REF_H	12
390*4882a593Smuzhiyun #define LP4_WR_WIDTH_REF_H	13
391*4882a593Smuzhiyun 
392*4882a593Smuzhiyun #define LP4_WIDTH_REF_MHZ_L	924
393*4882a593Smuzhiyun #define LP4_RD_WIDTH_REF_L	15
394*4882a593Smuzhiyun #define LP4_WR_WIDTH_REF_L	15
395*4882a593Smuzhiyun 
396*4882a593Smuzhiyun #define DDR4_WIDTH_REF_MHZ_H	1056
397*4882a593Smuzhiyun #define DDR4_RD_WIDTH_REF_H	13
398*4882a593Smuzhiyun #define DDR4_WR_WIDTH_REF_H	9
399*4882a593Smuzhiyun 
400*4882a593Smuzhiyun #define DDR4_WIDTH_REF_MHZ_L	924
401*4882a593Smuzhiyun #define DDR4_RD_WIDTH_REF_L	15
402*4882a593Smuzhiyun #define DDR4_WR_WIDTH_REF_L	11
403*4882a593Smuzhiyun 
404*4882a593Smuzhiyun #define LP3_WIDTH_REF_MHZ_H	1056
405*4882a593Smuzhiyun #define LP3_RD_WIDTH_REF_H	15
406*4882a593Smuzhiyun #define LP3_WR_WIDTH_REF_H	13
407*4882a593Smuzhiyun 
408*4882a593Smuzhiyun #define LP3_WIDTH_REF_MHZ_L	924
409*4882a593Smuzhiyun #define LP3_RD_WIDTH_REF_L	16
410*4882a593Smuzhiyun #define LP3_WR_WIDTH_REF_L	15
411*4882a593Smuzhiyun 
412*4882a593Smuzhiyun #define DDR3_WIDTH_REF_MHZ_H	1056
413*4882a593Smuzhiyun #define DDR3_RD_WIDTH_REF_H	14
414*4882a593Smuzhiyun #define DDR3_WR_WIDTH_REF_H	14
415*4882a593Smuzhiyun 
416*4882a593Smuzhiyun #define DDR3_WIDTH_REF_MHZ_L	924
417*4882a593Smuzhiyun #define DDR3_RD_WIDTH_REF_L	17
418*4882a593Smuzhiyun #define DDR3_WR_WIDTH_REF_L	17
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun #endif /* _ASM_ARCH_SDRAM_RK1126_H */
421