xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/sdram_rv1126.h (revision f627cf25e97b0bb49b3faf2118965c992c4dee8f)
1f520bb22SYouMin Chen /* SPDX-License-Identifier:     GPL-2.0+ */
2f520bb22SYouMin Chen /*
3f520bb22SYouMin Chen  * Copyright (C) 2020 Rockchip Electronics Co., Ltd
4f520bb22SYouMin Chen  */
5f520bb22SYouMin Chen 
6f520bb22SYouMin Chen #ifndef _ASM_ARCH_SDRAM_RK1126_H
7f520bb22SYouMin Chen #define _ASM_ARCH_SDRAM_RK1126_H
8f520bb22SYouMin Chen 
9f520bb22SYouMin Chen #include <asm/arch/dram_spec_timing.h>
10f520bb22SYouMin Chen #include <asm/arch/sdram.h>
11f520bb22SYouMin Chen #include <asm/arch/sdram_common.h>
12f520bb22SYouMin Chen #include <asm/arch/sdram_msch.h>
13f520bb22SYouMin Chen #include <asm/arch/sdram_pctl_px30.h>
14f520bb22SYouMin Chen #include <asm/arch/sdram_phy_rv1126.h>
15f520bb22SYouMin Chen 
16f520bb22SYouMin Chen #define AGINGX0_VAL			(4)
17f520bb22SYouMin Chen #define AGING_CPU_VAL			(0xff)
18f520bb22SYouMin Chen #define AGING_NPU_VAL			(0xff)
19f520bb22SYouMin Chen #define AGING_OTHER_VAL			(0x33)
20f520bb22SYouMin Chen 
21f520bb22SYouMin Chen #define PATTERN				(0x5aa5f00f)
22f520bb22SYouMin Chen 
23f520bb22SYouMin Chen #define PHY_DDR3_RON_DISABLE		(0)
2470fee8b3STang Yun ping #define PHY_DDR3_RON_455ohm		(1)
2570fee8b3STang Yun ping #define PHY_DDR3_RON_230ohm		(2)
2670fee8b3STang Yun ping #define PHY_DDR3_RON_153ohm		(3)
2770fee8b3STang Yun ping #define PHY_DDR3_RON_115ohm		(4)
2870fee8b3STang Yun ping #define PHY_DDR3_RON_91ohm		(5)
2970fee8b3STang Yun ping #define PHY_DDR3_RON_76ohm		(6)
3070fee8b3STang Yun ping #define PHY_DDR3_RON_65ohm		(7)
3170fee8b3STang Yun ping #define PHY_DDR3_RON_57ohm		(16)
3270fee8b3STang Yun ping #define PHY_DDR3_RON_51ohm		(17)
3370fee8b3STang Yun ping #define PHY_DDR3_RON_46ohm		(18)
3470fee8b3STang Yun ping #define PHY_DDR3_RON_41ohm		(19)
3570fee8b3STang Yun ping #define PHY_DDR3_RON_38ohm		(20)
3670fee8b3STang Yun ping #define PHY_DDR3_RON_35ohm		(21)
3770fee8b3STang Yun ping #define PHY_DDR3_RON_32ohm		(22)
3870fee8b3STang Yun ping #define PHY_DDR3_RON_30ohm		(23)
3970fee8b3STang Yun ping #define PHY_DDR3_RON_28ohm		(24)
4070fee8b3STang Yun ping #define PHY_DDR3_RON_27ohm		(25)
4170fee8b3STang Yun ping #define PHY_DDR3_RON_25ohm		(26)
4270fee8b3STang Yun ping #define PHY_DDR3_RON_24ohm		(27)
4370fee8b3STang Yun ping #define PHY_DDR3_RON_23ohm		(28)
4470fee8b3STang Yun ping #define PHY_DDR3_RON_22ohm		(29)
4570fee8b3STang Yun ping #define PHY_DDR3_RON_21ohm		(30)
4670fee8b3STang Yun ping #define PHY_DDR3_RON_20ohm		(31)
47f520bb22SYouMin Chen 
48f520bb22SYouMin Chen #define PHY_DDR3_RTT_DISABLE		(0)
4970fee8b3STang Yun ping #define PHY_DDR3_RTT_561ohm		(1)
5070fee8b3STang Yun ping #define PHY_DDR3_RTT_282ohm		(2)
5170fee8b3STang Yun ping #define PHY_DDR3_RTT_188ohm		(3)
5270fee8b3STang Yun ping #define PHY_DDR3_RTT_141ohm		(4)
5370fee8b3STang Yun ping #define PHY_DDR3_RTT_113ohm		(5)
5470fee8b3STang Yun ping #define PHY_DDR3_RTT_94ohm		(6)
5570fee8b3STang Yun ping #define PHY_DDR3_RTT_81ohm		(7)
5670fee8b3STang Yun ping #define PHY_DDR3_RTT_72ohm		(16)
5770fee8b3STang Yun ping #define PHY_DDR3_RTT_64ohm		(17)
5870fee8b3STang Yun ping #define PHY_DDR3_RTT_58ohm		(18)
5970fee8b3STang Yun ping #define PHY_DDR3_RTT_52ohm		(19)
6070fee8b3STang Yun ping #define PHY_DDR3_RTT_48ohm		(20)
6170fee8b3STang Yun ping #define PHY_DDR3_RTT_44ohm		(21)
6270fee8b3STang Yun ping #define PHY_DDR3_RTT_41ohm		(22)
6370fee8b3STang Yun ping #define PHY_DDR3_RTT_38ohm		(23)
6470fee8b3STang Yun ping #define PHY_DDR3_RTT_37ohm		(24)
6570fee8b3STang Yun ping #define PHY_DDR3_RTT_34ohm		(25)
6670fee8b3STang Yun ping #define PHY_DDR3_RTT_32ohm		(26)
6770fee8b3STang Yun ping #define PHY_DDR3_RTT_31ohm		(27)
6870fee8b3STang Yun ping #define PHY_DDR3_RTT_29ohm		(28)
6970fee8b3STang Yun ping #define PHY_DDR3_RTT_28ohm		(29)
7070fee8b3STang Yun ping #define PHY_DDR3_RTT_27ohm		(30)
7170fee8b3STang Yun ping #define PHY_DDR3_RTT_25ohm		(31)
72f520bb22SYouMin Chen 
73f520bb22SYouMin Chen #define PHY_DDR4_LPDDR3_RON_DISABLE	(0)
7470fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_482ohm	(1)
7570fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_244ohm	(2)
7670fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_162ohm	(3)
7770fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_122ohm	(4)
7870fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_97ohm	(5)
7970fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_81ohm	(6)
8070fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_69ohm	(7)
8170fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_61ohm	(16)
8270fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_54ohm	(17)
8370fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_48ohm	(18)
8470fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_44ohm	(19)
8570fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_40ohm	(20)
8670fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_37ohm	(21)
8770fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_34ohm	(22)
8870fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_32ohm	(23)
8970fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_30ohm	(24)
9070fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_28ohm	(25)
9170fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_27ohm	(26)
9270fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_25ohm	(27)
9370fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_24ohm	(28)
9470fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_23ohm	(29)
9570fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_22ohm	(30)
9670fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RON_21ohm	(31)
97f520bb22SYouMin Chen 
98f520bb22SYouMin Chen #define PHY_DDR4_LPDDR3_RTT_DISABLE	(0)
9970fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_586ohm	(1)
10070fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_294ohm	(2)
10170fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_196ohm	(3)
10270fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_148ohm	(4)
10370fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_118ohm	(5)
10470fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_99ohm	(6)
10570fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_85ohm	(7)
10670fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_76ohm	(16)
10770fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_67ohm	(17)
10870fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_60ohm	(18)
10970fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_55ohm	(19)
11070fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_50ohm	(20)
11170fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_46ohm	(21)
11270fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_43ohm	(22)
11370fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_40ohm	(23)
11470fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_38ohm	(24)
11570fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_36ohm	(25)
11670fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_34ohm	(26)
11770fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_32ohm	(27)
11870fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_31ohm	(28)
11970fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_29ohm	(29)
12070fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_28ohm	(30)
12170fee8b3STang Yun ping #define PHY_DDR4_LPDDR3_RTT_27ohm	(31)
122f520bb22SYouMin Chen 
123f520bb22SYouMin Chen #define PHY_LPDDR4_RON_DISABLE		(0)
12470fee8b3STang Yun ping #define PHY_LPDDR4_RON_501ohm		(1)
12570fee8b3STang Yun ping #define PHY_LPDDR4_RON_253ohm		(2)
12670fee8b3STang Yun ping #define PHY_LPDDR4_RON_168ohm		(3)
12770fee8b3STang Yun ping #define PHY_LPDDR4_RON_126ohm		(4)
12870fee8b3STang Yun ping #define PHY_LPDDR4_RON_101ohm		(5)
12970fee8b3STang Yun ping #define PHY_LPDDR4_RON_84ohm		(6)
13070fee8b3STang Yun ping #define PHY_LPDDR4_RON_72ohm		(7)
13170fee8b3STang Yun ping #define PHY_LPDDR4_RON_63ohm		(16)
13270fee8b3STang Yun ping #define PHY_LPDDR4_RON_56ohm		(17)
13370fee8b3STang Yun ping #define PHY_LPDDR4_RON_50ohm		(18)
13470fee8b3STang Yun ping #define PHY_LPDDR4_RON_46ohm		(19)
13570fee8b3STang Yun ping #define PHY_LPDDR4_RON_42ohm		(20)
13670fee8b3STang Yun ping #define PHY_LPDDR4_RON_38ohm		(21)
13770fee8b3STang Yun ping #define PHY_LPDDR4_RON_36ohm		(22)
13870fee8b3STang Yun ping #define PHY_LPDDR4_RON_33ohm		(23)
13970fee8b3STang Yun ping #define PHY_LPDDR4_RON_31ohm		(24)
14070fee8b3STang Yun ping #define PHY_LPDDR4_RON_29ohm		(25)
14170fee8b3STang Yun ping #define PHY_LPDDR4_RON_28ohm		(26)
14270fee8b3STang Yun ping #define PHY_LPDDR4_RON_26ohm		(27)
14370fee8b3STang Yun ping #define PHY_LPDDR4_RON_25ohm		(28)
14470fee8b3STang Yun ping #define PHY_LPDDR4_RON_24ohm		(29)
14570fee8b3STang Yun ping #define PHY_LPDDR4_RON_23ohm		(30)
14670fee8b3STang Yun ping #define PHY_LPDDR4_RON_22ohm		(31)
147f520bb22SYouMin Chen 
148f520bb22SYouMin Chen #define PHY_LPDDR4_RTT_DISABLE		(0)
14970fee8b3STang Yun ping #define PHY_LPDDR4_RTT_604ohm		(1)
15070fee8b3STang Yun ping #define PHY_LPDDR4_RTT_303ohm		(2)
15170fee8b3STang Yun ping #define PHY_LPDDR4_RTT_202ohm		(3)
15270fee8b3STang Yun ping #define PHY_LPDDR4_RTT_152ohm		(4)
15370fee8b3STang Yun ping #define PHY_LPDDR4_RTT_122ohm		(5)
15470fee8b3STang Yun ping #define PHY_LPDDR4_RTT_101ohm		(6)
15570fee8b3STang Yun ping #define PHY_LPDDR4_RTT_87ohm		(7)
15670fee8b3STang Yun ping #define PHY_LPDDR4_RTT_78ohm		(16)
15770fee8b3STang Yun ping #define PHY_LPDDR4_RTT_69ohm		(17)
15870fee8b3STang Yun ping #define PHY_LPDDR4_RTT_62ohm		(18)
15970fee8b3STang Yun ping #define PHY_LPDDR4_RTT_56ohm		(19)
16070fee8b3STang Yun ping #define PHY_LPDDR4_RTT_52ohm		(20)
16170fee8b3STang Yun ping #define PHY_LPDDR4_RTT_48ohm		(21)
16270fee8b3STang Yun ping #define PHY_LPDDR4_RTT_44ohm		(22)
16370fee8b3STang Yun ping #define PHY_LPDDR4_RTT_41ohm		(23)
16470fee8b3STang Yun ping #define PHY_LPDDR4_RTT_39ohm		(24)
16570fee8b3STang Yun ping #define PHY_LPDDR4_RTT_37ohm		(25)
16670fee8b3STang Yun ping #define PHY_LPDDR4_RTT_35ohm		(26)
16770fee8b3STang Yun ping #define PHY_LPDDR4_RTT_33ohm		(27)
16870fee8b3STang Yun ping #define PHY_LPDDR4_RTT_32ohm		(28)
16970fee8b3STang Yun ping #define PHY_LPDDR4_RTT_30ohm		(29)
17070fee8b3STang Yun ping #define PHY_LPDDR4_RTT_29ohm		(30)
17170fee8b3STang Yun ping #define PHY_LPDDR4_RTT_27ohm		(31)
172f520bb22SYouMin Chen 
173f520bb22SYouMin Chen #define ADD_CMD_CA			(0x150)
174f520bb22SYouMin Chen #define ADD_GROUP_CS0_A			(0x170)
175f520bb22SYouMin Chen #define ADD_GROUP_CS0_B			(0x1d0)
176f520bb22SYouMin Chen #define ADD_GROUP_CS1_A			(0x1a0)
177f520bb22SYouMin Chen #define ADD_GROUP_CS1_B			(0x200)
178f520bb22SYouMin Chen 
179f520bb22SYouMin Chen /* PMUGRF */
180f520bb22SYouMin Chen #define PMUGRF_OS_REG0			(0x200)
181f520bb22SYouMin Chen #define PMUGRF_OS_REG(n)		(PMUGRF_OS_REG0 + (n) * 4)
182f520bb22SYouMin Chen #define PMUGRF_CON_DDRPHY_BUFFEREN_MASK		(0x3 << (12 + 16))
183f520bb22SYouMin Chen #define PMUGRF_CON_DDRPHY_BUFFEREN_EN		(0x1 << 12)
184f520bb22SYouMin Chen #define PMUGRF_CON_DDRPHY_BUFFEREN_DIS	(0x2 << 12)
185f520bb22SYouMin Chen 
186f520bb22SYouMin Chen /* DDR GRF */
187f520bb22SYouMin Chen #define DDR_GRF_CON(n)			(0 + (n) * 4)
188f520bb22SYouMin Chen #define DDR_GRF_STATUS_BASE		(0X100)
189f520bb22SYouMin Chen #define DDR_GRF_STATUS(n)		(DDR_GRF_STATUS_BASE + (n) * 4)
190f520bb22SYouMin Chen #define DDR_GRF_LP_CON			(0x20)
191f520bb22SYouMin Chen 
192f520bb22SYouMin Chen #define SPLIT_MODE_32_L16_VALID		(0)
193f520bb22SYouMin Chen #define SPLIT_MODE_32_H16_VALID		(1)
194f520bb22SYouMin Chen #define SPLIT_MODE_16_L8_VALID		(2)
195f520bb22SYouMin Chen #define SPLIT_MODE_16_H8_VALID		(3)
196f520bb22SYouMin Chen 
197f520bb22SYouMin Chen #define DDR_GRF_SPLIT_CON		(0x10)
198f520bb22SYouMin Chen #define SPLIT_MODE_MASK			(0x3)
199f520bb22SYouMin Chen #define SPLIT_MODE_OFFSET		(9)
200f520bb22SYouMin Chen #define SPLIT_BYPASS_MASK		(1)
201f520bb22SYouMin Chen #define SPLIT_BYPASS_OFFSET		(8)
202f520bb22SYouMin Chen #define SPLIT_SIZE_MASK			(0xff)
203f520bb22SYouMin Chen #define SPLIT_SIZE_OFFSET		(0)
204f520bb22SYouMin Chen 
205f520bb22SYouMin Chen /* SGRF SOC_CON13 */
206f520bb22SYouMin Chen #define UPCTL2_ASRSTN_REQ(n)		(((0x1 << 0) << 16) | ((n) << 0))
207f520bb22SYouMin Chen #define UPCTL2_PSRSTN_REQ(n)		(((0x1 << 1) << 16) | ((n) << 1))
208f520bb22SYouMin Chen #define UPCTL2_SRSTN_REQ(n)		(((0x1 << 2) << 16) | ((n) << 2))
209f520bb22SYouMin Chen 
210f520bb22SYouMin Chen /* CRU define */
211f520bb22SYouMin Chen /* CRU_PLL_CON0 */
212f520bb22SYouMin Chen #define PB(n)				((0x1 << (15 + 16)) | ((n) << 15))
213f520bb22SYouMin Chen #define POSTDIV1(n)			((0x7 << (12 + 16)) | ((n) << 12))
214f520bb22SYouMin Chen #define FBDIV(n)			((0xFFF << 16) | (n))
215f520bb22SYouMin Chen 
216f520bb22SYouMin Chen /* CRU_PLL_CON1 */
217f520bb22SYouMin Chen #define RSTMODE(n)			((0x1 << (15 + 16)) | ((n) << 15))
218f520bb22SYouMin Chen #define RST(n)				((0x1 << (14 + 16)) | ((n) << 14))
219f520bb22SYouMin Chen #define PD(n)				((0x1 << (13 + 16)) | ((n) << 13))
220f520bb22SYouMin Chen #define DSMPD(n)			((0x1 << (12 + 16)) | ((n) << 12))
221f520bb22SYouMin Chen #define LOCK(n)				(((n) >> 10) & 0x1)
222f520bb22SYouMin Chen #define POSTDIV2(n)			((0x7 << (6 + 16)) | ((n) << 6))
223f520bb22SYouMin Chen #define REFDIV(n)			((0x3F << 16) | (n))
224f520bb22SYouMin Chen 
2250367dfefSZhihuan He /* CRU_PLL_CON3 */
2260367dfefSZhihuan He #define SSMOD_SPREAD(n)			((0x1f << (8 + 16)) | ((n) << 8))
2270367dfefSZhihuan He #define SSMOD_DIVVAL(n)			((0xf << (4 + 16)) | ((n) << 4))
2280367dfefSZhihuan He #define SSMOD_DOWNSPREAD(n)		((0x1 << (3 + 16)) | ((n) << 3))
2290367dfefSZhihuan He #define SSMOD_RESET(n)			((0x1 << (2 + 16)) | ((n) << 2))
2300367dfefSZhihuan He #define SSMOD_DIS_SSCG(n)		((0x1 << (1 + 16)) | ((n) << 1))
2310367dfefSZhihuan He #define SSMOD_BP(n)			((0x1 << (0 + 16)) | ((n) << 0))
2320367dfefSZhihuan He 
233f520bb22SYouMin Chen /* CRU_MODE */
234f520bb22SYouMin Chen #define CLOCK_FROM_XIN_OSC		(0)
235f520bb22SYouMin Chen #define CLOCK_FROM_PLL			(1)
236f520bb22SYouMin Chen #define CLOCK_FROM_RTC_32K		(2)
237f520bb22SYouMin Chen #define DPLL_MODE(n)			((0x3 << (2 + 16)) | ((n) << 2))
238f520bb22SYouMin Chen 
239f520bb22SYouMin Chen /* CRU_SOFTRESET_CON1 */
240f520bb22SYouMin Chen #define DDRPHY_PSRSTN_REQ(n)		(((0x1 << 14) << 16) | ((n) << 14))
241f520bb22SYouMin Chen #define DDRPHY_SRSTN_REQ(n)		(((0x1 << 15) << 16) | ((n) << 15))
242f520bb22SYouMin Chen /* CRU_CLKGATE_CON2 */
243f520bb22SYouMin Chen #define DDR_MSCH_EN_MASK		((0x1 << 10) << 16)
244f520bb22SYouMin Chen #define DDR_MSCH_EN_SHIFT		(10)
245f520bb22SYouMin Chen 
246f520bb22SYouMin Chen /* CRU register */
247f520bb22SYouMin Chen #define CRU_PLL_CON(pll_id, n)		((pll_id)  * 0x20 + (n) * 4)
248f520bb22SYouMin Chen #define CRU_MODE			(0xa0)
249f520bb22SYouMin Chen #define CRU_GLB_CNT_TH			(0xb0)
250f520bb22SYouMin Chen #define CRU_CLKSEL_CON_BASE		0x100
251f520bb22SYouMin Chen #define CRU_CLKSELS_CON(i)		(CRU_CLKSEL_CON_BASE + ((i) * 4))
252f520bb22SYouMin Chen #define CRU_CLKGATE_CON_BASE		0x230
253f520bb22SYouMin Chen #define CRU_CLKGATE_CON(i)		(CRU_CLKGATE_CON_BASE + ((i) * 4))
254f520bb22SYouMin Chen #define CRU_CLKSFTRST_CON_BASE		0x300
255f520bb22SYouMin Chen #define CRU_CLKSFTRST_CON(i)		(CRU_CLKSFTRST_CON_BASE + ((i) * 4))
256f520bb22SYouMin Chen 
257*f627cf25SZhihuan He /* SGRF_SOC_CON2 */
258*f627cf25SZhihuan He #define MSCH_AXI_BYPASS_ALL_MASK	(1)
259*f627cf25SZhihuan He #define MSCH_AXI_BYPASS_ALL_SHIFT	(15)
260*f627cf25SZhihuan He 
261f520bb22SYouMin Chen /* SGRF_SOC_CON12 */
262f520bb22SYouMin Chen #define CLK_DDR_UPCTL_EN_MASK		((0x1 << 2) << 16)
263f520bb22SYouMin Chen #define CLK_DDR_UPCTL_EN_SHIFT		(2)
264f520bb22SYouMin Chen #define ACLK_DDR_UPCTL_EN_MASK		((0x1 << 0) << 16)
265f520bb22SYouMin Chen #define ACLK_DDR_UPCTL_EN_SHIFT		(0)
266f520bb22SYouMin Chen 
267f520bb22SYouMin Chen /* DDRGRF DDR CON2 */
268f520bb22SYouMin Chen #define DFI_FREQ_CHANGE_ACK		BIT(10)
269f520bb22SYouMin Chen /* DDRGRF status8 */
270f520bb22SYouMin Chen #define DFI_FREQ_CHANGE_REQ		BIT(19)
271f520bb22SYouMin Chen 
272f520bb22SYouMin Chen struct rv1126_ddrgrf {
273f520bb22SYouMin Chen 	u32 ddr_grf_con[4];
274f520bb22SYouMin Chen 	u32 grf_ddrsplit_con;
275f520bb22SYouMin Chen 	u32 reserved1[(0x20 - 0x10) / 4 - 1];
276f520bb22SYouMin Chen 	u32 ddr_grf_lp_con;
277f520bb22SYouMin Chen 	u32 reserved2[(0x40 - 0x20) / 4 - 1];
278f520bb22SYouMin Chen 	u32 grf_ddrphy_con[6];
279f520bb22SYouMin Chen 	u32 reserved3[(0x100 - 0x54) / 4 - 1];
280f520bb22SYouMin Chen 	u32 ddr_grf_status[18];
281f520bb22SYouMin Chen 	u32 reserved4[(0x150 - 0x144) / 4 - 1];
282f520bb22SYouMin Chen 	u32 grf_ddrhold_status;
283f520bb22SYouMin Chen 	u32 reserved5[(0x160 - 0x150) / 4 - 1];
284f520bb22SYouMin Chen 	u32 grf_ddrphy_status[2];
285f520bb22SYouMin Chen };
286f520bb22SYouMin Chen 
287f520bb22SYouMin Chen struct rv1126_ddr_phy_regs {
288f520bb22SYouMin Chen 	u32 phy[8][2];
289f520bb22SYouMin Chen };
290f520bb22SYouMin Chen 
291f520bb22SYouMin Chen struct msch_regs {
292f520bb22SYouMin Chen 	u32 coreid;
293f520bb22SYouMin Chen 	u32 revisionid;
294f520bb22SYouMin Chen 	u32 deviceconf;
295f520bb22SYouMin Chen 	u32 devicesize;
296f520bb22SYouMin Chen 	u32 ddrtiminga0;
297f520bb22SYouMin Chen 	u32 ddrtimingb0;
298f520bb22SYouMin Chen 	u32 ddrtimingc0;
299f520bb22SYouMin Chen 	u32 devtodev0;
300f520bb22SYouMin Chen 	u32 reserved1[(0x110 - 0x20) / 4];
301f520bb22SYouMin Chen 	u32 ddrmode;
302f520bb22SYouMin Chen 	u32 ddr4timing;
303f520bb22SYouMin Chen 	u32 reserved2[(0x1000 - 0x118) / 4];
304f520bb22SYouMin Chen 	u32 agingx0;
305f520bb22SYouMin Chen 	u32 reserved3[(0x1040 - 0x1004) / 4];
306f520bb22SYouMin Chen 	u32 aging0;
307f520bb22SYouMin Chen 	u32 aging1;
308f520bb22SYouMin Chen 	u32 aging2;
309f520bb22SYouMin Chen 	u32 aging3;
310f520bb22SYouMin Chen };
311f520bb22SYouMin Chen 
312f520bb22SYouMin Chen struct sdram_msch_timings {
313f520bb22SYouMin Chen 	union noc_ddrtiminga0 ddrtiminga0;
314f520bb22SYouMin Chen 	union noc_ddrtimingb0 ddrtimingb0;
315f520bb22SYouMin Chen 	union noc_ddrtimingc0 ddrtimingc0;
3163c13acb0SYouMin Chen 	union noc_devtodev_rv1126 devtodev0;
317f520bb22SYouMin Chen 	union noc_ddrmode ddrmode;
318f520bb22SYouMin Chen 	union noc_ddr4timing ddr4timing;
319f520bb22SYouMin Chen 	u32 agingx0;
320f520bb22SYouMin Chen 	u32 aging0;
321f520bb22SYouMin Chen 	u32 aging1;
322f520bb22SYouMin Chen 	u32 aging2;
323f520bb22SYouMin Chen 	u32 aging3;
324f520bb22SYouMin Chen };
325f520bb22SYouMin Chen 
326f520bb22SYouMin Chen struct rv1126_sdram_channel {
327f520bb22SYouMin Chen 	struct sdram_cap_info cap_info;
328f520bb22SYouMin Chen 	struct sdram_msch_timings noc_timings;
329f520bb22SYouMin Chen };
330f520bb22SYouMin Chen 
331f520bb22SYouMin Chen struct rv1126_sdram_params {
332f520bb22SYouMin Chen 	struct rv1126_sdram_channel ch;
333f520bb22SYouMin Chen 	struct sdram_base_params base;
334f520bb22SYouMin Chen 	struct ddr_pctl_regs pctl_regs;
335f520bb22SYouMin Chen 	struct rv1126_ddr_phy_regs phy_regs;
336f520bb22SYouMin Chen };
337f520bb22SYouMin Chen 
338f520bb22SYouMin Chen struct rv1126_fsp_param {
339f520bb22SYouMin Chen 	u32 flag;
340f520bb22SYouMin Chen 	u32 freq_mhz;
341f520bb22SYouMin Chen 
342f520bb22SYouMin Chen 	/* dram size */
343f520bb22SYouMin Chen 	u32 dq_odt;
344f520bb22SYouMin Chen 	u32 ca_odt;
345f520bb22SYouMin Chen 	u32 ds_pdds;
346f520bb22SYouMin Chen 	u32 vref_ca[2];
347f520bb22SYouMin Chen 	u32 vref_dq[2];
348f520bb22SYouMin Chen 
349f520bb22SYouMin Chen 	/* phy side */
350f520bb22SYouMin Chen 	u32 wr_dq_drv;
351f520bb22SYouMin Chen 	u32 wr_ca_drv;
352f520bb22SYouMin Chen 	u32 wr_ckcs_drv;
353f520bb22SYouMin Chen 	u32 rd_odt;
354f520bb22SYouMin Chen 	u32 rd_odt_up_en;
355f520bb22SYouMin Chen 	u32 rd_odt_down_en;
356f520bb22SYouMin Chen 	u32 vref_inner;
357f520bb22SYouMin Chen 	u32 vref_out;
358f520bb22SYouMin Chen 	u32 lp4_drv_pd_en;
359f520bb22SYouMin Chen 
360f520bb22SYouMin Chen 	struct sdram_msch_timings noc_timings;
361f520bb22SYouMin Chen };
362f520bb22SYouMin Chen 
363f520bb22SYouMin Chen #define MAX_IDX			(4)
364f520bb22SYouMin Chen #define FSP_FLAG		(0xfead0001)
365f520bb22SYouMin Chen #define SHARE_MEM_BASE		(0x100000)
366f520bb22SYouMin Chen /*
367f520bb22SYouMin Chen  * Borrow share memory space to temporarily store FSP parame.
368f520bb22SYouMin Chen  * In the stage of DDR init write FSP parame to this space.
369f520bb22SYouMin Chen  * In the stage of trust init move FSP parame to SRAM space
370f520bb22SYouMin Chen  * from share memory space.
371f520bb22SYouMin Chen  */
372f520bb22SYouMin Chen #define FSP_PARAM_STORE_ADDR	(SHARE_MEM_BASE)
373f520bb22SYouMin Chen 
374c71eeac4SWesley Yao /* store result of read and write training, for ddr_dq_eye tool in u-boot */
375c71eeac4SWesley Yao #define RW_TRN_RESULT_ADDR	(0x2000000 + 0x8000)	/* 32M + 32k */
3765ddf1318SWesley Yao #define PRINT_STEP		1
377c71eeac4SWesley Yao 
378c71eeac4SWesley Yao #undef FSP_NUM
379c71eeac4SWesley Yao #undef CS_NUM
380c71eeac4SWesley Yao #undef BYTE_NUM
381c71eeac4SWesley Yao 
382c71eeac4SWesley Yao #define FSP_NUM			4
383c71eeac4SWesley Yao #define CS_NUM			2
384c71eeac4SWesley Yao #define BYTE_NUM		4
385c71eeac4SWesley Yao #define RD_DESKEW_NUM		64
386c71eeac4SWesley Yao #define WR_DESKEW_NUM		64
387c71eeac4SWesley Yao 
388c71eeac4SWesley Yao #define LP4_WIDTH_REF_MHZ_H	1056
389c71eeac4SWesley Yao #define LP4_RD_WIDTH_REF_H	12
390c71eeac4SWesley Yao #define LP4_WR_WIDTH_REF_H	13
391c71eeac4SWesley Yao 
392c71eeac4SWesley Yao #define LP4_WIDTH_REF_MHZ_L	924
393c71eeac4SWesley Yao #define LP4_RD_WIDTH_REF_L	15
394c71eeac4SWesley Yao #define LP4_WR_WIDTH_REF_L	15
395c71eeac4SWesley Yao 
396c71eeac4SWesley Yao #define DDR4_WIDTH_REF_MHZ_H	1056
397c71eeac4SWesley Yao #define DDR4_RD_WIDTH_REF_H	13
398c71eeac4SWesley Yao #define DDR4_WR_WIDTH_REF_H	9
399c71eeac4SWesley Yao 
400c71eeac4SWesley Yao #define DDR4_WIDTH_REF_MHZ_L	924
401c71eeac4SWesley Yao #define DDR4_RD_WIDTH_REF_L	15
402c71eeac4SWesley Yao #define DDR4_WR_WIDTH_REF_L	11
403c71eeac4SWesley Yao 
404c71eeac4SWesley Yao #define LP3_WIDTH_REF_MHZ_H	1056
405c71eeac4SWesley Yao #define LP3_RD_WIDTH_REF_H	15
406c71eeac4SWesley Yao #define LP3_WR_WIDTH_REF_H	13
407c71eeac4SWesley Yao 
408c71eeac4SWesley Yao #define LP3_WIDTH_REF_MHZ_L	924
409c71eeac4SWesley Yao #define LP3_RD_WIDTH_REF_L	16
410c71eeac4SWesley Yao #define LP3_WR_WIDTH_REF_L	15
411c71eeac4SWesley Yao 
412c71eeac4SWesley Yao #define DDR3_WIDTH_REF_MHZ_H	1056
413c71eeac4SWesley Yao #define DDR3_RD_WIDTH_REF_H	14
414c71eeac4SWesley Yao #define DDR3_WR_WIDTH_REF_H	14
415c71eeac4SWesley Yao 
416c71eeac4SWesley Yao #define DDR3_WIDTH_REF_MHZ_L	924
417c71eeac4SWesley Yao #define DDR3_RD_WIDTH_REF_L	17
418c71eeac4SWesley Yao #define DDR3_WR_WIDTH_REF_L	17
419c71eeac4SWesley Yao 
420f520bb22SYouMin Chen #endif /* _ASM_ARCH_SDRAM_RK1126_H */
421