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