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