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