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