1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2011 Andes Technology Corp 3*4882a593Smuzhiyun * Macpaul Lin <macpaul@andestech.com> 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* 9*4882a593Smuzhiyun * DWCDDR21MCTL - Synopsys DWC DDR2/DDR1 Memory Controller 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun #ifndef __DWCDDR21MCTL_H 12*4882a593Smuzhiyun #define __DWCDDR21MCTL_H 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 15*4882a593Smuzhiyun struct dwcddr21mctl { 16*4882a593Smuzhiyun unsigned int ccr; /* Controller Configuration */ 17*4882a593Smuzhiyun unsigned int dcr; /* DRAM Configuration */ 18*4882a593Smuzhiyun unsigned int iocr; /* I/O Configuration */ 19*4882a593Smuzhiyun unsigned int csr; /* Controller Status */ 20*4882a593Smuzhiyun unsigned int drr; /* DRAM refresh */ 21*4882a593Smuzhiyun unsigned int tpr0; /* SDRAM Timing Parameters 0 */ 22*4882a593Smuzhiyun unsigned int tpr1; /* SDRAM Timing Parameters 1 */ 23*4882a593Smuzhiyun unsigned int tpr2; /* SDRAM Timing Parameters 2 */ 24*4882a593Smuzhiyun unsigned int gdllcr; /* Global DLL Control */ 25*4882a593Smuzhiyun unsigned int dllcr[10]; /* DLL Control */ 26*4882a593Smuzhiyun unsigned int rslr[4]; /* Rank System Lantency */ 27*4882a593Smuzhiyun unsigned int rdgr[4]; /* Rank DQS Gating */ 28*4882a593Smuzhiyun unsigned int dqtr[9]; /* DQ Timing */ 29*4882a593Smuzhiyun unsigned int dqstr; /* DQS Timing */ 30*4882a593Smuzhiyun unsigned int dqsbtr; /* DQS_b Timing */ 31*4882a593Smuzhiyun unsigned int odtcr; /* ODT Configuration */ 32*4882a593Smuzhiyun unsigned int dtr[2]; /* Data Training */ 33*4882a593Smuzhiyun unsigned int dtar; /* Data Training Address */ 34*4882a593Smuzhiyun unsigned int rsved[82]; /* Reserved */ 35*4882a593Smuzhiyun unsigned int mr; /* Mode Register */ 36*4882a593Smuzhiyun unsigned int emr; /* Extended Mode Register */ 37*4882a593Smuzhiyun unsigned int emr2; /* Extended Mode Register 2 */ 38*4882a593Smuzhiyun unsigned int emr3; /* Extended Mode Register 3 */ 39*4882a593Smuzhiyun unsigned int hpcr[32]; /* Host Port Configurarion */ 40*4882a593Smuzhiyun unsigned int pqcr[8]; /* Priority Queue Configuration */ 41*4882a593Smuzhiyun unsigned int mmgcr; /* Memory Manager General Config */ 42*4882a593Smuzhiyun }; 43*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */ 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /* 46*4882a593Smuzhiyun * Control Configuration Register 47*4882a593Smuzhiyun */ 48*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_ECCEN(x) ((x) << 0) 49*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_NOMRWR(x) ((x) << 1) 50*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_HOSTEN(x) ((x) << 2) 51*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_XBISC(x) ((x) << 3) 52*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_NOAPD(x) ((x) << 4) 53*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_RRB(x) ((x) << 13) 54*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DQSCFG(x) ((x) << 14) 55*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DFTLM(x) (((x) & 0x3) << 15) 56*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DFTCMP(x) ((x) << 17) 57*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_FLUSH(x) ((x) << 27) 58*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_ITMRST(x) ((x) << 28) 59*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_IB(x) ((x) << 29) 60*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_DTT(x) ((x) << 30) 61*4882a593Smuzhiyun #define DWCDDR21MCTL_CCR_IT(x) ((x) << 31) 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /* 64*4882a593Smuzhiyun * DRAM Configuration Register 65*4882a593Smuzhiyun */ 66*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_DDRMD(x) ((x) << 0) 67*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_DIO(x) (((x) & 0x3) << 1) 68*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_DSIZE(x) (((x) & 0x7) << 3) 69*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_SIO(x) (((x) & 0x7) << 6) 70*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_PIO(x) ((x) << 9) 71*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_RANKS(x) (((x) & 0x3) << 10) 72*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_RNKALL(x) ((x) << 12) 73*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_AMAP(x) (((x) & 0x3) << 13) 74*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_RANK(x) (((x) & 0x3) << 25) 75*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_CMD(x) (((x) & 0xf) << 27) 76*4882a593Smuzhiyun #define DWCDDR21MCTL_DCR_EXE(x) ((x) << 31) 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun /* 79*4882a593Smuzhiyun * I/O Configuration Register 80*4882a593Smuzhiyun */ 81*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_RTT(x) (((x) & 0xf) << 0) 82*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_DS(x) (((x) & 0xf) << 4) 83*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_TESTEN(x) ((x) << 0x8) 84*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_RTTOH(x) (((x) & 0x7) << 26) 85*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_RTTOE(x) ((x) << 29) 86*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_DQRTT(x) ((x) << 30) 87*4882a593Smuzhiyun #define DWCDDR21MCTL_IOCR_DQSRTT(x) ((x) << 31) 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun /* 90*4882a593Smuzhiyun * Controller Status Register 91*4882a593Smuzhiyun */ 92*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DRIFT(x) (((x) & 0x3ff) << 0) 93*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DFTERR(x) ((x) << 18) 94*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_ECCERR(x) ((x) << 19) 95*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DTERR(x) ((x) << 20) 96*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_DTIERR(x) ((x) << 21) 97*4882a593Smuzhiyun #define DWCDDR21MCTL_CSR_ECCSEC(x) ((x) << 22) 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun /* 100*4882a593Smuzhiyun * DRAM Refresh Register 101*4882a593Smuzhiyun */ 102*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_TRFC(x) (((x) & 0xff) << 0) 103*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_TRFPRD(x) (((x) & 0xffff) << 8) 104*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_RFBURST(x) (((x) & 0xf) << 24) 105*4882a593Smuzhiyun #define DWCDDR21MCTL_DRR_RD(x) ((x) << 31) 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun /* 108*4882a593Smuzhiyun * SDRAM Timing Parameters Register 0 109*4882a593Smuzhiyun */ 110*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TMRD(x) (((x) & 0x3) << 0) 111*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRTP(x) (((x) & 0x7) << 2) 112*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TWTR(x) (((x) & 0x7) << 5) 113*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRP(x) (((x) & 0xf) << 8) 114*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRCD(x) (((x) & 0xf) << 12) 115*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRAS(x) (((x) & 0x1f) << 16) 116*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRRD(x) (((x) & 0xf) << 21) 117*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TRC(x) (((x) & 0x3f) << 25) 118*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR0_TCCD(x) ((x) << 31) 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun /* 121*4882a593Smuzhiyun * SDRAM Timing Parameters Register 1 122*4882a593Smuzhiyun */ 123*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TAOND(x) (((x) & 0x3) << 0) 124*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TRTW(x) ((x) << 2) 125*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TFAW(x) (((x) & 0x3f) << 3) 126*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TRNKRTR(x) (((x) & 0x3) << 12) 127*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_TRNKWTW(x) (((x) & 0x3) << 14) 128*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_XCL(x) (((x) & 0xf) << 23) 129*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_XWR(x) (((x) & 0xf) << 27) 130*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR1_XTP(x) ((x) << 31) 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun /* 133*4882a593Smuzhiyun * SDRAM Timing Parameters Register 2 134*4882a593Smuzhiyun */ 135*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR2_TXS(x) (((x) & 0x3ff) << 0) 136*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR2_TXP(x) (((x) & 0x1f) << 10) 137*4882a593Smuzhiyun #define DWCDDR21MCTL_TPR2_TCKE(x) (((x) & 0xf) << 15) 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun /* 140*4882a593Smuzhiyun * Global DLL Control Register 141*4882a593Smuzhiyun */ 142*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_DRES(x) (((x) & 0x3) << 0) 143*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_IPUMP(x) (((x) & 0x7) << 2) 144*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_TESTEN(x) ((x) << 5) 145*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_DTC(x) (((x) & 0x7) << 6) 146*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_ATC(x) (((x) & 0x3) << 9) 147*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_TESTSW(x) ((x) << 11) 148*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_MBIAS(x) (((x) & 0xff) << 12) 149*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_SBIAS(x) (((x) & 0xff) << 20) 150*4882a593Smuzhiyun #define DWCDDR21MCTL_GDLLCR_LOCKDET(x) ((x) << 29) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun /* 153*4882a593Smuzhiyun * DLL Control Register 0-9 154*4882a593Smuzhiyun */ 155*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_SFBDLY(x) (((x) & 0x7) << 0) 156*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_SFWDLY(x) (((x) & 0x7) << 3) 157*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_MFBDLY(x) (((x) & 0x7) << 6) 158*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_MFWDLY(x) (((x) & 0x7) << 9) 159*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_SSTART(x) (((x) & 0x3) << 12) 160*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_PHASE(x) (((x) & 0xf) << 14) 161*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_ATESTEN(x) ((x) << 18) 162*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_DRSVD(x) ((x) << 19) 163*4882a593Smuzhiyun #define DWCDDR21MCTL_DLLCR_DD(x) ((x) << 31) 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun /* 166*4882a593Smuzhiyun * Rank System Lantency Register 167*4882a593Smuzhiyun */ 168*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL0(x) (((x) & 0x7) << 0) 169*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL1(x) (((x) & 0x7) << 3) 170*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL2(x) (((x) & 0x7) << 6) 171*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL3(x) (((x) & 0x7) << 9) 172*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL4(x) (((x) & 0x7) << 12) 173*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL5(x) (((x) & 0x7) << 15) 174*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL6(x) (((x) & 0x7) << 18) 175*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL7(x) (((x) & 0x7) << 21) 176*4882a593Smuzhiyun #define DWCDDR21MCTL_RSLR_SL8(x) (((x) & 0x7) << 24) 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun /* 179*4882a593Smuzhiyun * Rank DQS Gating Register 180*4882a593Smuzhiyun */ 181*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL0(x) (((x) & 0x3) << 0) 182*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL1(x) (((x) & 0x3) << 2) 183*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL2(x) (((x) & 0x3) << 4) 184*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL3(x) (((x) & 0x3) << 6) 185*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL4(x) (((x) & 0x3) << 8) 186*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL5(x) (((x) & 0x3) << 10) 187*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL6(x) (((x) & 0x3) << 12) 188*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL7(x) (((x) & 0x3) << 14) 189*4882a593Smuzhiyun #define DWCDDR21MCTL_RDGR_DQSSEL8(x) (((x) & 0x3) << 16) 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun /* 192*4882a593Smuzhiyun * DQ Timing Register 193*4882a593Smuzhiyun */ 194*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY0(x) (((x) & 0xf) << 0) 195*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY1(x) (((x) & 0xf) << 4) 196*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY2(x) (((x) & 0xf) << 8) 197*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY3(x) (((x) & 0xf) << 12) 198*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY4(x) (((x) & 0xf) << 16) 199*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY5(x) (((x) & 0xf) << 20) 200*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY6(x) (((x) & 0xf) << 24) 201*4882a593Smuzhiyun #define DWCDDR21MCTL_DQTR_DQDLY7(x) (((x) & 0xf) << 28) 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun /* 204*4882a593Smuzhiyun * DQS Timing Register 205*4882a593Smuzhiyun */ 206*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY0(x) (((x) & 0x7) << 0) 207*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY1(x) (((x) & 0x7) << 3) 208*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY2(x) (((x) & 0x7) << 6) 209*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY3(x) (((x) & 0x7) << 9) 210*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY4(x) (((x) & 0x7) << 12) 211*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY5(x) (((x) & 0x7) << 15) 212*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY6(x) (((x) & 0x7) << 18) 213*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY7(x) (((x) & 0x7) << 21) 214*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSTR_DQSDLY8(x) (((x) & 0x7) << 24) 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* 217*4882a593Smuzhiyun * DQS_b (DQSBTR) Timing Register 218*4882a593Smuzhiyun */ 219*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY0(x) (((x) & 0x7) << 0) 220*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY1(x) (((x) & 0x7) << 3) 221*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY2(x) (((x) & 0x7) << 6) 222*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY3(x) (((x) & 0x7) << 9) 223*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY4(x) (((x) & 0x7) << 12) 224*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY5(x) (((x) & 0x7) << 15) 225*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY6(x) (((x) & 0x7) << 18) 226*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY7(x) (((x) & 0x7) << 21) 227*4882a593Smuzhiyun #define DWCDDR21MCTL_DQSBTR_DQSDLY8(x) (((x) & 0x7) << 24) 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun /* 230*4882a593Smuzhiyun * ODT Configuration Register 231*4882a593Smuzhiyun */ 232*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT0(x) (((x) & 0xf) << 0) 233*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT1(x) (((x) & 0xf) << 4) 234*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT2(x) (((x) & 0xf) << 8) 235*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_RDODT3(x) (((x) & 0xf) << 12) 236*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT0(x) (((x) & 0xf) << 16) 237*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT1(x) (((x) & 0xf) << 20) 238*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT2(x) (((x) & 0xf) << 24) 239*4882a593Smuzhiyun #define DWCDDR21MCTL_ODTCR_WDODT3(x) (((x) & 0xf) << 28) 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun /* 242*4882a593Smuzhiyun * Data Training Register 243*4882a593Smuzhiyun */ 244*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE0(x) (((x) & 0xff) << 0) /* def: 0x11 */ 245*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE1(x) (((x) & 0xff) << 8) /* def: 0xee */ 246*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE2(x) (((x) & 0xff) << 16) /* def: 0x22 */ 247*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR0_DTBYTE3(x) (((x) & 0xff) << 24) /* def: 0xdd */ 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE4(x) (((x) & 0xff) << 0) /* def: 0x44 */ 250*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE5(x) (((x) & 0xff) << 8) /* def: 0xbb */ 251*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE6(x) (((x) & 0xff) << 16) /* def: 0x88 */ 252*4882a593Smuzhiyun #define DWCDDR21MCTL_DTR1_DTBYTE7(x) (((x) & 0xff) << 24) /* def: 0x77 */ 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun /* 255*4882a593Smuzhiyun * Data Training Address Register 256*4882a593Smuzhiyun */ 257*4882a593Smuzhiyun #define DWCDDR21MCTL_DTAR_DTCOL(x) (((x) & 0xfff) << 0) 258*4882a593Smuzhiyun #define DWCDDR21MCTL_DTAR_DTROW(x) (((x) & 0xffff) << 12) 259*4882a593Smuzhiyun #define DWCDDR21MCTL_DTAR_DTBANK(x) (((x) & 0x7) << 28) 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun /* 262*4882a593Smuzhiyun * Mode Register 263*4882a593Smuzhiyun */ 264*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_BL(x) (((x) & 0x7) << 0) 265*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_BT(x) ((x) << 3) 266*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_CL(x) (((x) & 0x7) << 4) 267*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_TM(x) ((x) << 7) 268*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_DR(x) ((x) << 8) 269*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_WR(x) (((x) & 0x7) << 9) 270*4882a593Smuzhiyun #define DWCDDR21MCTL_MR_PD(x) ((x) << 12) 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun /* 273*4882a593Smuzhiyun * Extended Mode register 274*4882a593Smuzhiyun */ 275*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_DE(x) ((x) << 0) 276*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_ODS(x) ((x) << 1) 277*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT2(x) ((x) << 2) 278*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_AL(x) (((x) & 0x7) << 3) 279*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT6(x) ((x) << 6) 280*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_OCD(x) (((x) & 0x7) << 7) 281*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_DQS(x) ((x) << 10) 282*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RDQS(x) ((x) << 11) 283*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_OE(x) ((x) << 12) 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun #define EMR_RTT2(x) DWCDDR21MCTL_EMR_RTT2(x) 286*4882a593Smuzhiyun #define EMR_RTT6(x) DWCDDR21MCTL_EMR_RTT6(x) 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_DISABLED (EMR_RTT6(0) | EMR_RTT2(0)) 289*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_75 (EMR_RTT6(0) | EMR_RTT2(1)) 290*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_150 (EMR_RTT6(1) | EMR_RTT2(0)) 291*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR_RTT_50 (EMR_RTT6(1) | EMR_RTT2(1)) 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun /* 294*4882a593Smuzhiyun * Extended Mode register 2 295*4882a593Smuzhiyun */ 296*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR2_PASR(x) (((x) & 0x7) << 0) 297*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR2_DCC(x) ((x) << 3) 298*4882a593Smuzhiyun #define DWCDDR21MCTL_EMR2_SRF(x) ((x) << 7) 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun /* 301*4882a593Smuzhiyun * Extended Mode register 3: [15:0] reserved for JEDEC. 302*4882a593Smuzhiyun */ 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun /* 305*4882a593Smuzhiyun * Host port Configuration register 0-31 306*4882a593Smuzhiyun */ 307*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_HPBL(x) (((x) & 0xf) << 0) 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun /* 310*4882a593Smuzhiyun * Priority Queue Configuration register 0-7 311*4882a593Smuzhiyun */ 312*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_TOUT(x) (((x) & 0xf) << 0) 313*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_TOUTX(x) (((x) & 0x3) << 8) 314*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_LPQS(x) (((x) & 0x3) << 10) 315*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_PQBL(x) (((x) & 0xff) << 12) 316*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_SWAIT(x) (((x) & 0x1f) << 20) 317*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_INTRPT(x) (((x) & 0x7) << 25) 318*4882a593Smuzhiyun #define DWCDDR21MCTL_HPCR_APQS(x) ((x) << 28) 319*4882a593Smuzhiyun 320*4882a593Smuzhiyun /* 321*4882a593Smuzhiyun * Memory Manager General Configuration register 322*4882a593Smuzhiyun */ 323*4882a593Smuzhiyun #define DWCDDR21MCTL_MMGCR_UHPP(x) (((x) & 0x3) << 0) 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun #endif /* __DWCDDR21MCTL_H */ 326