1 /** @file 2 * 3 * Copyright (c) 2015, Hisilicon Limited. All rights reserved. 4 * Copyright (c) 2015, Linaro Limited. All rights reserved. 5 * 6 * This program and the accompanying materials 7 * are licensed and made available under the terms and conditions of the BSD License 8 * which accompanies this distribution. The full text of the license may be found at 9 * http://opensource.org/licenses/bsd-license.php 10 * 11 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 * 14 **/ 15 16 #ifndef _HW_MEM_INIT_LIB_H_ 17 #define _HW_MEM_INIT_LIB_H_ 18 19 #include <PlatformArch.h> 20 21 #define I2C_CHANNEL 2 22 #define MAX_I2C_DEV 6 23 24 #define SPD_MODULE_PART 18 25 #define SPD_MODULE_PART_DDR4 20 26 27 #define NVRAM_ADDR 0x00D00000 28 29 typedef enum { 30 DDR_FREQ_AUTO = 0, 31 DDR_FREQ_800, 32 DDR_FREQ_1000, 33 DDR_FREQ_1066, 34 DDR_FREQ_1200, 35 DDR_FREQ_1333, 36 DDR_FREQ_1400, 37 DDR_FREQ_1600, 38 DDR_FREQ_1800, 39 DDR_FREQ_1866, 40 DDR_FREQ_2000, 41 DDR_FREQ_2133, 42 DDR_FREQ_2200, 43 DDR_FREQ_2400, 44 DDR_FREQ_2600, 45 DDR_FREQ_2666, 46 DDR_FREQ_2800, 47 DDR_FREQ_2933, 48 DDR_FREQ_3000, 49 DDR_FREQ_3200, 50 DDR_FREQ_MAX 51 } DDR_FREQUENCY_INDEX; 52 53 typedef struct _DDR_FREQ_TCK 54 { 55 UINT32 ddrFreq; 56 UINT32 ddrCk; 57 }DDR_FREQ_TCK; 58 59 typedef struct _GBL_CFG{ 60 61 62 }GBL_CFG; 63 64 typedef struct _GBL_VAR{ 65 66 67 }GBL_VAR; 68 69 typedef struct _GBL_NVDATA{ 70 71 72 }GBL_NVDATA; 73 74 typedef struct _GOBAL { 75 const GBL_CFG Config; // constant input data 76 GBL_VAR Variable; // variable, volatile data 77 GBL_NVDATA NvData; // variable, non-volatile data for S3, warm boot path 78 UINT32 PreBootFailed; 79 }GOBAL, *PGOBAL; 80 81 struct DDR_RANK { 82 BOOLEAN Status; 83 UINT16 RttNom; 84 UINT16 RttPark; 85 UINT16 RttWr; 86 UINT16 MR0; 87 UINT16 MR1; 88 UINT16 MR2; 89 UINT16 MR3; 90 UINT16 MR4; 91 UINT16 MR5; 92 UINT16 MR6[9]; 93 }; 94 95 struct baseMargin { 96 INT16 n; 97 INT16 p; 98 }; 99 100 struct rankMargin { 101 struct baseMargin rank[MAX_CHANNEL][MAX_RANK_CH]; 102 }; 103 104 typedef struct _DDR_DIMM{ 105 BOOLEAN Status; 106 UINT8 mapout; 107 UINT8 DramType; //Byte 2 108 UINT8 ModuleType; //Byte 3 109 UINT8 ExtendModuleType; 110 UINT8 SDRAMCapacity; //Byte 4 111 UINT8 BankNum; 112 UINT8 BGNum; //Byte 4 For DDR4 113 UINT8 RowBits; //Byte 5 114 UINT8 ColBits; //Byte 5 115 UINT8 SpdVdd; //Byte 6 116 UINT8 DramWidth; //Byte 7 117 UINT8 RankNum; //Byte 7 118 UINT8 PrimaryBusWidth; //Byte 8 119 UINT8 ExtensionBusWidth; //Byte 8 120 UINT32 Mtb; 121 UINT32 Ftb; 122 UINT32 minTck; 123 UINT8 MtbDividend; 124 UINT8 MtbDivsor; 125 UINT8 nCL; 126 UINT32 nRCD; 127 UINT32 nRP; 128 UINT8 SPDftb; 129 UINT8 SpdMinTCK; 130 UINT8 SpdMinTCKFtb; 131 UINT8 SpdMaxTCK; 132 UINT8 SpdMinTCL; 133 UINT8 SpdMinTCLFtb; 134 UINT8 SpdMinTWR; 135 UINT8 SpdMinTRCD; 136 UINT8 SpdMinTRCDFtb; 137 UINT8 SpdMinTRRD; 138 UINT8 SpdMinTRRDL; 139 UINT16 SpdMinTRAS; 140 UINT16 SpdMinTRC; 141 UINT16 SpdMinTRCFtb; 142 UINT16 SpdMinTRFC; 143 UINT8 SpdMinTWTR; 144 UINT8 SpdMinTRTP; 145 UINT8 SpdMinTAA; 146 UINT8 SpdMinTAAFtb; 147 UINT8 SpdMinTFAW; 148 UINT8 SpdMinTRP; 149 UINT8 SpdMinTRPFtb; 150 UINT8 SpdMinTCCDL; 151 UINT8 SpdMinTCCDLFtb; 152 UINT8 SpdAddrMap; 153 UINT8 SpdModuleAttr; 154 155 UINT8 SpdModPart[SPD_MODULE_PART]; // Module Part Number 156 UINT8 SpdModPartDDR4[SPD_MODULE_PART_DDR4]; // Module Part Number DDR4 157 UINT16 SpdMMfgId; // Module Mfg Id from SPD 158 UINT16 SpdRMId; // Register Manufacturer Id 159 UINT16 SpdMMDate; // Module Manufacturing Date 160 UINT32 SpdSerialNum; 161 UINT16 DimmSize; 162 UINT16 DimmSpeed; 163 UINT32 RankSize; 164 UINT8 SpdMirror; //Denote the dram address mapping is standard mode or mirrored mode 165 struct DDR_RANK Rank[MAX_RANK_DIMM]; 166 }DDR_DIMM; 167 168 typedef struct { 169 UINT32 ddrcTiming0; 170 UINT32 ddrcTiming1; 171 UINT32 ddrcTiming2; 172 UINT32 ddrcTiming3; 173 UINT32 ddrcTiming4; 174 UINT32 ddrcTiming5; 175 UINT32 ddrcTiming6; 176 UINT32 ddrcTiming7; 177 UINT32 ddrcTiming8; 178 }DDRC_TIMING; 179 180 typedef struct _MARGIN_RESULT{ 181 UINT32 OptimalDramVref[12]; 182 UINT32 optimalPhyVref[18]; 183 }MARGIN_RESULT; 184 185 typedef struct _DDR_Channel{ 186 BOOLEAN Status; 187 UINT8 CurrentDimmNum; 188 UINT8 CurrentRankNum; 189 UINT16 RankPresent; 190 UINT8 DramType; 191 UINT8 DramWidth; 192 UINT8 ModuleType; 193 UINT32 MemSize; 194 UINT32 tck; 195 UINT32 ratio; 196 UINT32 CLSupport; 197 UINT32 minTck; 198 UINT32 taref; 199 UINT32 nAA; 200 UINT32 nAOND; 201 UINT32 nCKE; 202 UINT32 nCL; 203 UINT32 nCCDL; 204 UINT32 nCKSRX; 205 UINT32 nCKSRE; 206 UINT32 nCCDNSW; 207 UINT32 nCCDNSR; 208 UINT32 nFAW; 209 UINT32 nMRD; 210 UINT32 nMOD; 211 UINT32 nRCD; 212 UINT32 nRRD; 213 UINT32 nRRDL; 214 UINT32 nRAS; 215 UINT32 nRC; 216 UINT32 nRFC; 217 UINT32 nRFCAB; 218 UINT32 nRTP; 219 UINT32 nRTW; 220 UINT32 nRP; 221 UINT32 nSRE; 222 UINT32 nWL; 223 UINT32 nWR; 224 UINT32 nWTR; 225 UINT32 nWTRL; 226 UINT32 nXARD; 227 UINT32 nZQPRD; 228 UINT32 nZQINIT; 229 UINT32 nZQCS; 230 UINT8 cwl; //tWL? 231 UINT8 pl; //parity latency 232 UINT8 wr_pre_2t_en; 233 UINT8 rd_pre_2t_en; 234 UINT8 cmd_2t_en; 235 UINT8 parity_en; 236 UINT8 wr_dbi_en; 237 UINT8 wr_dm_en; 238 UINT8 ddr4_crc_en; 239 UINT16 emrs0; 240 UINT16 emrs1; 241 UINT16 emrs1Wr; 242 UINT16 emrs2; 243 UINT16 emrs3; 244 UINT16 emrs4; 245 UINT16 emrs5; 246 UINT16 emrs5Wr; 247 UINT16 emrs6; 248 UINT16 emrs7; 249 UINT8 phy_rddata_set; 250 UINT8 phyif_tim_rdcs; 251 UINT8 phyif_tim_rden; 252 UINT8 phyif_tim_wden; 253 UINT8 phyif_tim_wdda; 254 UINT8 phyif_tim_wdcs; 255 UINT8 per_cs_training_en; 256 UINT32 phyRdDataEnIeDly; 257 UINT32 phyPadCalConfig; 258 UINT32 phyDqsFallRiseDelay; 259 UINT32 ddrcCfgDfiLat0; 260 UINT32 ddrcCfgDfiLat1; 261 UINT32 parityLatency; 262 UINT32 dimm_parity_en; 263 DDRC_TIMING ddrcTiming; 264 DDR_DIMM Dimm[MAX_DIMM]; 265 MARGIN_RESULT sMargin; 266 }DDR_CHANNEL; 267 268 typedef struct _NVRAM_RANK{ 269 UINT16 MR0; 270 UINT16 MR1; 271 UINT16 MR2; 272 UINT16 MR3; 273 UINT16 MR4; 274 UINT16 MR5; 275 UINT16 MR6[9]; 276 }NVRAM_RANK; 277 278 typedef struct _NVRAM_DIMM{ 279 NVRAM_RANK Rank[MAX_RANK_DIMM]; 280 }NVRAM_DIMM; 281 282 283 typedef struct _NVRAM_CHANNEL{ 284 NVRAM_DIMM Dimm[MAX_DIMM]; 285 UINT32 DDRC_CFG_ECC; 286 UINT32 DDRC_CFG_WORKMODE; 287 UINT32 DDRC_CFG_WORKMODE1; 288 UINT32 DDRC_CFG_WORKMODE2; 289 UINT32 DDRC_CFG_DDRMODE; 290 UINT32 DDRC_CFG_DIMM; 291 UINT32 DDRC_CFG_RNKVOL_0; 292 UINT32 DDRC_CFG_RNKVOL_1; 293 UINT32 DDRC_CFG_RNKVOL_2; 294 UINT32 DDRC_CFG_RNKVOL_3; 295 UINT32 DDRC_CFG_RNKVOL_4; 296 UINT32 DDRC_CFG_RNKVOL_5; 297 UINT32 DDRC_CFG_RNKVOL_6; 298 UINT32 DDRC_CFG_RNKVOL_7; 299 UINT32 DDRC_CFG_RNKVOL_8; 300 UINT32 DDRC_CFG_RNKVOL_9; 301 UINT32 DDRC_CFG_RNKVOL_10; 302 UINT32 DDRC_CFG_RNKVOL_11; 303 UINT32 DDRC_CFG_ODT_0; 304 UINT32 DDRC_CFG_ODT_1; 305 UINT32 DDRC_CFG_ODT_2; 306 UINT32 DDRC_CFG_ODT_3; 307 UINT32 DDRC_CFG_ODT_4; 308 UINT32 DDRC_CFG_ODT_5; 309 UINT32 DDRC_CFG_ODT_6; 310 UINT32 DDRC_CFG_ODT_7; 311 UINT32 DDRC_CFG_ODT_8; 312 UINT32 DDRC_CFG_ODT_9; 313 UINT32 DDRC_CFG_ODT_10; 314 UINT32 DDRC_CFG_ODT_11; 315 UINT32 DDRC_CFG_TIMING0; 316 UINT32 DDRC_CFG_TIMING1; 317 UINT32 DDRC_CFG_TIMING2; 318 UINT32 DDRC_CFG_TIMING3; 319 UINT32 DDRC_CFG_TIMING4; 320 UINT32 DDRC_CFG_TIMING5; 321 UINT32 DDRC_CFG_TIMING6; 322 UINT32 DDRC_CFG_TIMING7; 323 UINT32 DDRC_CFG_DFI_LAT0; 324 UINT32 DDRC_CFG_DFI_LAT1; 325 UINT32 DDRC_CFG_DDRPHY; 326 UINT32 Config[24]; 327 BOOLEAN Status; 328 }NVRAM_CHANNEL; 329 330 typedef struct _NVRAM{ 331 UINT32 NvramCrc; 332 NVRAM_CHANNEL Channel[MAX_SOCKET][MAX_CHANNEL]; 333 UINT32 DdrFreqIdx; 334 335 }NVRAM; 336 337 typedef struct _MEMORY{ 338 UINT8 Config0; 339 UINT8 marginTest; 340 UINT8 Config1[5]; 341 UINT8 ErrorBypass; //register of spd mirror mode 342 UINT32 Config2; 343 }MEMORY; 344 345 typedef struct _NUMAINFO{ 346 UINT8 NodeId; 347 UINT64 Base; 348 UINT64 Length; 349 UINT32 ScclInterleaveEn; 350 }NUMAINFO; 351 352 353 typedef struct _GBL_DATA 354 { 355 DDR_CHANNEL Channel[MAX_SOCKET][MAX_CHANNEL]; 356 UINT8 DramType; 357 UINT8 CurrentDimmNum; 358 UINT8 CurrentRankNum; 359 UINT8 MaxSPCNum; 360 UINT32 Freq; 361 UINT32 SpdTckMtb; 362 UINT32 SpdTckFtb; 363 UINT32 SpdTck; 364 UINT32 Tck; 365 UINT32 DdrFreqIdx; 366 UINT32 DevParaFreqIdx; //Maximum frequency of DDR device 367 UINT32 MemSize; 368 UINT32 EccEn; 369 370 BOOLEAN SetupExist; 371 UINT8 warmReset; 372 UINT8 needColdReset; 373 374 UINT8 cl; 375 UINT8 cwl; 376 UINT8 pl; 377 UINT8 wr_pre_2t_en; 378 UINT8 rd_pre_2t_en; 379 UINT8 cmd_2t_en; 380 UINT8 ddr4_parity_en; 381 UINT8 wr_dbi_en; 382 UINT8 wr_dm_en; 383 UINT8 ddr4_crc_en; 384 UINT16 emrs0; 385 UINT16 emrs1; 386 UINT16 emrs2; 387 UINT16 emrs3; 388 UINT16 emrs4; 389 UINT16 emrs5; 390 UINT16 emrs6; 391 UINT16 emrs7; 392 UINT8 phy_rddata_set; 393 UINT8 phyif_tim_rdcs; 394 UINT8 phyif_tim_rden; 395 UINT8 phyif_tim_wden; 396 UINT8 phyif_tim_wdda; 397 UINT8 phyif_tim_wdcs; 398 UINT8 dimm_trtr; 399 UINT8 dimm_twtw; 400 UINT8 rnk_trtr; 401 UINT8 rnk_twtw; 402 UINT8 rnk_trtw; 403 UINT8 rnk_twtr; 404 UINT8 per_cs_training_en; 405 UINT8 scale; 406 UINT8 ddrFreq; 407 UINT8 debugNeed; 408 UINT8 ddr3OdtEnable; 409 double fprd; 410 BOOLEAN chipIsEc; 411 NVRAM nvram; 412 MEMORY mem; 413 NUMAINFO NumaInfo[MAX_SOCKET][MAX_NUM_PER_TYPE]; 414 415 }GBL_DATA, *pGBL_DATA; 416 417 typedef union { 418 struct { 419 UINT16 freqIndex:4; //Frequency Index; 420 UINT16 slot0:4; //Channel slot0 for DIMM 421 UINT16 slot1:4; //Channel slot1 for DIMM 422 UINT16 slot2:4; //Channel slot2 for DIMM 423 }Bits; 424 UINT16 Data; 425 }ODT_VALUE_INDEX; 426 427 typedef union { 428 struct { 429 UINT8 RTTNom:3; 430 UINT8 reserved_3:1; 431 UINT8 RTTWr:2; 432 UINT8 reserved_6:2; 433 }Bits; 434 UINT8 Data; 435 }ODT_RTT_VALUE_DDR3; 436 437 typedef union { 438 struct { 439 UINT8 RTTNom:3; 440 UINT8 RTTPark:3; 441 UINT8 RTTWr:2; 442 }Bits; 443 UINT8 Data; 444 }ODT_RTT_VALUE_DDR4; 445 446 typedef union { 447 struct { 448 UINT16 tarDimm:2; // target DIMM 449 UINT16 tarRank:2; // target Rank 450 UINT16 slot0:4; // Channel slot0 for DIMM 451 UINT16 slot1:4; // Channel slot1 for DIMM 452 UINT16 slot2:4; // Channel slot2 for DIMM 453 }Bits; 454 UINT16 Data; 455 }ODT_ACTIVE_INDEX; 456 457 struct ODT_VALUE_STRUCT_DDR3 { 458 UINT16 config; // ODT_VALUE_INDEX 459 UINT8 dramOdt[MAX_DIMM][MAX_RANK_DIMM]; // ODT_VALUE_RTT_DDR3 460 }; 461 462 struct ODT_VALUE_STRUCT_DDR4 { 463 UINT16 config; 464 UINT8 dramOdt[MAX_DIMM][MAX_RANK_DIMM]; 465 }; 466 467 struct ODT_ACTIVE_STRUCT { 468 UINT16 config; // ODT config index 469 UINT16 actBits[2]; // WR :Bits[3;0] = D0_R[3:0] Bits[7:4] = D1_R[3:0] Bits[11:8] = D2_R[3:0] 470 }; 471 472 // JEDEC manufacturer IDs from JEP-106 473 #define MFGID_AENEON 0x5705 474 #define MFGID_QIMONDA 0x5105 475 #define MFGID_NEC 0x1000 476 #define MFGID_IDT 0xB300 477 #define MFGID_TI 0x9700 478 #define MFGID_HYNIX 0xAD00 479 #define MFGID_MICRON 0x2C00 480 #define MFGID_INFINEON 0xC100 481 #define MFGID_SAMSUNG 0xCE00 482 #define MFGID_TEK 0x3D00 483 #define MFGID_KINGSTON 0x9801 484 #define MFGID_ELPIDA 0xFE02 485 #define MFGID_SMART 0x9401 486 #define MFGID_AGILENT 0xC802 487 #define MFGID_NANYA 0x0B03 488 #define MFGID_INPHI 0xB304 489 #define MFGID_MONTAGE 0x3206 490 #define MFGID_RAMAXEL 0x4304 491 492 // 493 // DDR3 frequencies 800 - 2667 494 // DDR4 frequencies 1333 - 3200 495 // 496 #define DDR_800 0 // tCK(ns)=2.5 497 #define DDR_1000 1 // tCK(ns)=2.0 498 #define DDR_1066 2 // tCK(ns)=1.875 499 #define DDR_1200 3 // tCK(ns)=1.667 500 #define DDR_1333 4 // tCK(ns)=1.5 501 #define DDR_1400 5 // tCK(ns)=1.429 502 #define DDR_1600 6 // tCK(ns)=1.25 503 #define DDR_1800 7 // tCK(ns)=1.11 504 #define DDR_1866 8 // tCK(ns)=1.07 505 #define DDR_2000 9 // tCK(ns)=1.0 506 #define DDR_2133 10 // tCK(ns)=0.9375 507 #define DDR_2200 11 // tCK(ns)=0.909 508 #define DDR_2400 12 // tCK(ns)=0.833 509 #define DDR_2600 13 // tCK(ns)=0.769 510 #define DDR_2666 14 // tCK(ns)=0.750 511 #define DDR_2800 15 // tCK(ns)=0.714 512 #define DDR_2933 16 // tCK(ns)=0.682 513 #define DDR_3000 17 // tCK(ns)=0.667 514 #define DDR_3200 18 // tCK(ns)=0.625 515 #define DDR_MAX (DDR_3200) 516 517 #define FREQUENCY_MTB_OFFSET 1000000 518 #define FREQUENCY_FTB_OFFSET 1000 519 520 // 521 #define DDR_800_TCK_MIN 25000 522 #define DDR_1000_TCK_MIN 20000 523 #define DDR_1067_TCK_MIN 18750 524 #define DDR_1200_TCK_MIN 16670 525 #define DDR_1333_TCK_MIN 15000 526 #define DDR_1400_TCK_MIN 14290 527 #define DDR_1600_TCK_MIN 12500 528 #define DDR_1800_TCK_MIN 11100 529 #define DDR_1867_TCK_MIN 10710 530 #define DDR_2000_TCK_MIN 10000 531 #define DDR_2133_TCK_MIN 9380 532 #define DDR_2200_TCK_MIN 9090 533 #define DDR_2400_TCK_MIN 8330 534 #define DDR_2600_TCK_MIN 7690 535 #define DDR_2667_TCK_MIN 7500 536 #define DDR_2800_TCK_MIN 7140 537 #define DDR_2933_TCK_MIN 6820 538 #define DDR_3000_TCK_MIN 6670 539 #define DDR_3200_TCK_MIN 6250 540 541 542 // 543 // Serial Presence Detect bytes (JEDEC revision 1.0) 544 // 545 #define SPD_SIZE 0 // Bytes used, Device size, CRC coverage 546 #define SPD_REVISION 1 // SPD Encoding Revision 547 #define SPD_KEY_BYTE 2 // DRAM Device Type 548 #define SPD_TYPE_DDR3 0x0B // DDR3 SDRAM 549 #define SPD_TYPE_DDR4 0x0C // DDR4 SDRAM 550 #define SPD_KEY_BYTE2 3 // Module Type and Thickness (RDIMM or UDIMM) 551 #define SPD_RDIMM 1 // Module type is RDIMM 552 #define SPD_UDIMM 2 // Module type is UDIMM 553 #define SPD_SODIMM 3 // Module type is SODIMM 554 #define SPD_MICRO_DIMM 4 // Module type is Micro-DIMM 555 #define SPD_LRDIMM_DDR4 4 // Module type is LRDIMM (DDR4) 556 #define SPD_MINI_RDIMM 5 // Module type is Mini-RDIMM 557 #define SPD_MINI_UDIMM 6 // Module type is Mini-UDIMM 558 #define SPD_MINI_CDIMM 7 // Module type is Mini-CDIMM 559 #define SPD_ECC_SO_UDIMM 9 // Module type is 72b-SO-UDIMM 560 #define SPD_ECC_SO_RDIMM 8 // Module type is 72b-SO-RDIMM 561 #define SPD_ECC_SO_CDIMM 10 // Module type is 72b-SO-CDIMM 562 #define SPD_LRDIMM 11 // Module type is LRDIMM 563 #define SPD_UDIMM_ECC 18 // Module type is UDIMM-ECC 564 #define SPD_SDRAM_BANKS 4 // SDRAM Density and number of internal banks 565 #define SPD_1Gb 2 // Total SDRAM Capacity 1 Gigabits 566 #define SPD_2Gb 3 // Total SDRAM Capacity 2 Gigabits 567 #define SPD_4Gb 4 // Total SDRAM Capacity 4 Gigabits 568 #define SPD_8Gb 5 // Total SDRAM Capacity 8 Gigabits 569 #define SPD_16Gb 6 // Total SDRAM Capacity 16 Gigabits 570 #define SPD_32Gb 7 // Total SDRAM Capacity 32 Gigabits 571 #define SPD_SDRAM_ADDR 5 // Number of Row and Column address bits 572 #define SPD_ROW_12 0 // 12 row bits 573 #define SPD_ROW_13 1 // 13 row bits 574 #define SPD_ROW_14 2 // 14 row bits 575 #define SPD_ROW_15 3 // 15 row bits 576 #define SPD_ROW_16 4 // 16 row bits 577 #define SPD_ROW_17 5 // 17 row bits 578 #define SPD_ROW_18 6 // 18 row bits 579 #define SPD_COL_9 0 // 9 colum bits 580 #define SPD_COL_10 1 // 10 colum bits 581 #define SPD_COL_11 2 // 11 colum bits 582 #define SPD_COL_12 3 // 12 colum bits 583 #define SPD_VDD_SUPPORT 6 // Vdd DIMM supports 584 #define SPD_VDD_150 0 // Module Supports 1.50V 585 #define SPD_VDD_135 BIT1 // Module Supports 1.35V 586 #define SPD_VDD_125 BIT2 // Module Supports 1.25V 587 #define SPD_MODULE_ORG_DDR3 7 // Number of Ranks and SDRAM device width 588 #define SPD_MODULE_ORG_DDR4 12 // DDR4 Module Organization 589 #define DEVICE_WIDTH_X4 0 // SDRAM device width = 4 bits 590 #define DEVICE_WIDTH_X8 1 // SDRAM device width = 8 bits 591 #define DEVICE_WIDTH_X16 2 // SDRAM device width = 16 bits 592 #define SPD_NUM_RANKS_1 0 593 #define SPD_NUM_RANKS_2 1 594 #define SPD_NUM_RANKS_4 3 595 #define SPD_NUM_RANKS_8 4 596 #define SPD_MEM_BUS_WID 8 // Width of SDRAM memory bus 597 #define SPD_FTB 9 // Timebase for fine grain timing calculations 598 #define SPD_MTB_DIVEND 10 // Medium Time Base Dividend 599 #define SPD_MTB_DIVISOR 11 // Medium Time Base Divisor 600 #define SPD_MIN_TCK 12 // Minimum cycle time (at max CL) 601 #define SPD_TCKMIN_800 20 // tCK(MTB)=20, tCK(ns)=2.5 602 #define SPD_TCKMIN_1067 15 // tCK(MTB)=15, tCK(ns)=1.875 603 #define SPD_TCKMIN_1333 12 // tCK(MTB)=12, tCK(ns)=1.5 604 #define SPD_TCKMIN_1600 10 // tCK(MTB)=10, tCK(ns)=1.25 605 #define SPD_TCKMIN_1867 9 // tCK(MTB)=9, tCK(ns)=1.07 606 #define SPD_TCKMIN_2133 8 // tCK(MTB)=8, tCK(ns)=0.9375 607 #define SPD_TCKMIN_2400 7 // tCK(MTB)=7, tCK(ns)=.833 608 #define SPD_CAS_LT_SUP_LSB 14 // CAS Latencies Supported, Least Significant Byte 609 #define SPD_CAS_LT_SUP_MSB 15 // CAS Latencies Supported, Most Significant Byte 610 #define SPD_MIN_TAA 16 // Minimum CAS Latency Time (tAAmin) 611 #define SPD_MIN_TWR 17 // Minimum Write Recovery Time 612 #define SPD_MIN_TRCD 18 // Minimum RAS to CAS delay 613 #define SPD_MIN_TRRD 19 // Minimum Row active to row active delay 614 #define SPD_MIN_TRP 20 // Minimum Row Precharge time 615 #define SPD_EXT_TRC_TRAS 21 // Upper nibbles for min tRAS and tRC 616 #define SPD_MIN_TRAS 22 // Minimum Active to Precharge time 617 #define SPD_MIN_TRC 23 // Minimum Active to Active/Refresh time 618 #define SPD_MIN_TRFC_LSB 24 // Minimum Refresh Recovery time least-significant byte 619 #define SPD_MIN_TRFC_MSB 25 // Minimum Refresh Recovery time most-significant byte 620 #define SPD_MIN_TWTR 26 // Minimum Internal Write to Read command delay 621 #define SPD_MIN_TRTP 27 // Minimum Internal Read to Precharge command delay 622 #define SPD_UN_TFAW 28 // Upper Nibble for tFAW 623 #define SPD_MIN_TFAW 29 // Minimum Four Activate Window Delay Time (tFAWmin) 624 #define SPD_OD_SUP 30 // SDRAM Output Drivers Supported 625 #define SPD_RFSH_OPT 31 // SDRAM Refresh Options 626 #define ETR BIT0 // Bit location for Extended Temp Range 627 #define ETRR BIT1 // Bit location for Extended Temp Refresh Rate 628 #define ASR BIT2 // Bit location for Automatic Self Refresh 629 #define ODTS BIT3 // Bit location for On-die Thermal Sensor 630 #define SPD_DIMM_TS 32 // Module Temperature Sensor 631 #define SPD_SDRAM_TYPE 33 // SDRAM device type 632 #define SPD_FTB_TCK 34 // Fine Offset for SDRAM tCK 633 #define SPD_FTB_TAA 35 // Fine Offset for SDRAM tAA 634 #define SPD_FTB_TRCD 36 // Fine Offset for SDRAM tRCD 635 #define SPD_FTB_TRP 37 // Fine Offset for SDRAM tRP 636 #define SPD_FTB_TRC 38 // Fine Offset for SDRAM tRC 637 #define SPD_OPT_FEAT 41 // SDRAM Optional Features 638 #define SPD_PTRR BIT7 // Indicates if the DIMM is pTRR compliant 639 640 // UDIMM specific bytes 641 // Applicable when Module Type (key byte 3) = 2, 3, 4, 6, or 8 642 643 #define SPD_ADDR_MAP_FECTD 63 // Address Mapping from Edge Connector to DRAM 644 645 // RDIMM specific bytes 646 // Applicable when Module Type (key byte 3) = 1, 5, or 9 647 648 #define SPD_RDIMM_ATTR 63 // RDIMM module attributes 649 #define SPD_DIMM_HS 64 // Module Heat Spreader Solution 650 #define SPD_REG_VEN_LSB 65 // Register Vendor ID LSB 651 #define SPD_REG_VEN_MSB 66 // Register Vendor ID MSB 652 #define SPD_REG_REV 67 // Register Revision 653 #define SPD_CNTL_0 69 // Register Control Word 0 & 1 654 #define SPD_CNTL_1 70 // Register Control Word 2 & 3 655 #define SPD_CNTL_2 71 // Register Control Word 4 & 5 656 #define SPD_CNTL_3 72 // Register Control Word 6 & 7 (reserved) 657 #define SPD_CNTL_4 73 // Register Control Word 8 & 9 (reserved) 658 #define SPD_CNTL_5 74 // Register Control Word 10 & 11 (reserved) 659 #define SPD_CNTL_6 75 // Register Control Word 12 & 13 (reserved) 660 #define SPD_CNTL_7 76 // Register Control Word 14 & 15 (reserved) 661 662 // LRDIMM specific bytes 663 // Applicable when Module Type (key byte 3) = 0xB 664 // Based on DDR3 SPD 1.0 Document Release 2.1 draft, dated May 27, 2011 665 666 #define SPD_LRDIMM_ATTR 63 // LRDIMM module attributes 667 #define SPD_LRBUF_REV 64 // LR Buffer Revision 668 #define SPD_LRBUF_VEN_LSB 65 // LR Buffer Vendor ID LSB 669 #define SPD_LRBUF_VEN_MSB 66 // LR Buffer Vendor ID MSB 670 #define SPD_LR_F0_RC2_3 67 // LR Buffer Function 0, Control Word 2 & 3 671 #define SPD_LR_F0_RC4_5 68 // LR Buffer Function 0, Control Word 4 & 5 672 #define SPD_LR_F1_RC8_11 69 // LR Buffer Function 1, Control Word 8 & 11 673 #define SPD_LR_F1_RC12_13 70 // LR Buffer Function 1, Control Word 12 & 13 674 #define SPD_LR_F1_RC14_15 71 // LR Buffer Function 1, Control Word 14 & 15 675 676 // Speed bin 0 = 800 & 1066 677 #define SPD_LR_SB0_MDQ_DS_ODT 72 // LR Buffer Function 3, Control Word 8 & 9 678 #define SPD_LR_SB0_DR01_QODT_ACT 73 // LR Buffer Function 3 & 4, Control Word 10 & 11 679 #define SPD_LR_SB0_DR23_QODT_ACT 74 // LR Buffer Function 5 & 6, Control Word 10 & 11 680 #define SPD_LR_SB0_DR45_QODT_ACT 75 // LR Buffer Function 7 & 8, Control Word 10 & 11 681 #define SPD_LR_SB0_DR67_QODT_ACT 76 // LR Buffer Function 9 & 10, Control Word 10 & 11 682 #define SPD_LR_SB0_MR1_2_RTT 77 // LR Buffer SMBus offsets 0xC0 - 0xC7 683 684 // Speed bin 1 = 1333 & 1600 685 #define SPD_LR_SB1_MDQ_DS_ODT 78 // LR Buffer Function 3, Control Word 8 & 9 686 #define SPD_LR_SB1_DR01_QODT_ACT 79 // LR Buffer Function 3 & 4, Control Word 10 & 11 687 #define SPD_LR_SB1_DR23_QODT_ACT 80 // LR Buffer Function 5 & 6, Control Word 10 & 11 688 #define SPD_LR_SB1_DR45_QODT_ACT 81 // LR Buffer Function 7 & 8, Control Word 10 & 11 689 #define SPD_LR_SB1_DR67_QODT_ACT 82 // LR Buffer Function 9 & 10, Control Word 10 & 11 690 #define SPD_LR_SB1_MR1_2_RTT 83 // LR Buffer SMBus offsets 0xC0 - 0xC7 691 692 // Speed bin 2 = 1866 & 2133 693 #define SPD_LR_SB2_MDQ_DS_ODT 84 // LR Buffer Function 3, Control Word 8 & 9 694 #define SPD_LR_SB2_DR01_QODT_ACT 85 // LR Buffer Function 3 & 4, Control Word 10 & 11 695 #define SPD_LR_SB2_DR23_QODT_ACT 86 // LR Buffer Function 5 & 6, Control Word 10 & 11 696 #define SPD_LR_SB2_DR45_QODT_ACT 87 // LR Buffer Function 7 & 8, Control Word 10 & 11 697 #define SPD_LR_SB2_DR67_QODT_ACT 88 // LR Buffer Function 9 & 10, Control Word 10 & 11 698 #define SPD_LR_SB2_MR1_2_RTT 89 // LR Buffer SMBus offsets 0xC0 - 0xC7 699 700 #define SPD_LR_150_MIN_MOD_DELAY 90 // LR DIMM minimum DQ Read propagation delay at 1.5V 701 #define SPD_LR_150_MAX_MOD_DELAY 91 // LR DIMM maximum DQ Read propagation delay at 1.5V 702 #define SPD_LR_135_MIN_MOD_DELAY 92 // LR DIMM minimum DQ Read propagation delay at 1.35V 703 #define SPD_LR_135_MAX_MOD_DELAY 93 // LR DIMM maximum DQ Read propagation delay at 1.35V 704 #define SPD_LR_12x_MIN_MOD_DELAY 94 // LR DIMM minimum DQ Read propagation delay at 1.2xV 705 #define SPD_LR_12x_MAX_MOD_DELAY 95 // LR DIMM maximum DQ Read propagation delay at 1.2xV 706 707 #define SPD_LR_PERS_BYTE_0 102 // LR DIMM Personality Byte 708 #define SPD_LR_PERS_BYTE_1 103 // LR DIMM Personality Byte 709 #define SPD_LR_PERS_BYTE_2 104 // LR DIMM Personality Byte 710 #define SPD_LR_PERS_BYTE_3 105 // LR DIMM Personality Byte 711 #define SPD_LR_PERS_BYTE_4 106 // LR DIMM Personality Byte 712 #define SPD_LR_PERS_BYTE_5 107 // LR DIMM Personality Byte 713 #define SPD_LR_PERS_BYTE_6 108 // LR DIMM Personality Byte 714 #define SPD_LR_PERS_BYTE_7 109 // LR DIMM Personality Byte 715 #define SPD_LR_PERS_BYTE_8 110 // LR DIMM Personality Byte 716 #define SPD_LR_PERS_BYTE_9 111 // LR DIMM Personality Byte 717 #define SPD_LR_PERS_BYTE_10 112 // LR DIMM Personality Byte 718 #define SPD_LR_PERS_BYTE_11 113 // LR DIMM Personality Byte 719 #define SPD_LR_PERS_BYTE_12 114 // LR DIMM Personality Byte 720 #define SPD_LR_PERS_BYTE_13 115 // LR DIMM Personality Byte 721 #define SPD_LR_PERS_BYTE_14 116 // LR DIMM Personality Byte 722 #define SPD_LR_PERS_BYTES_TOTAL 15 // LR DIMM Total number of Personality Bytes 723 724 // End module specific section 725 726 #define SPD_MMID_LSB 117 // Module Manufacturer ID Code, Least Significant Byte 727 #define SPD_MMID_MSB 118 // Module Manufacturer ID Code, Mostst Significant Byte 728 #define SPD_MM_LOC 119 // Module Manufacturing Location 729 #define SPD_MM_DATE 120 // Module Manufacturing Date 120-121 730 #define SPD_MODULE_SN 122 // Module Serial Number 122-125 731 #define SPD_CRC_LSB 126 // LSB of 16-bit CRC 732 #define SPD_CRC_MSB 127 // MSB of 16-bit CRC 733 734 #define SPD_MODULE_PN 128 // Module Part Number 128-145 735 #define SPD_MODULE_RC 146 // Module Revision Code 146-147 736 #define SPD_DRAM_MIDC_LSB 148 // DRAM Manufacturer ID Code, Least Significant Byte 737 #define SPD_DRAM_MIDC_MSB 149 // DRAM Manufacturer ID Code, Most Significant Byte 738 #ifdef MEM_NVDIMM_EN 739 #define SPD_NVDIMM_ID_N 174 // If NVDIMM value will be 'N' 740 #define SPD_NVDIMM_ID_V 175 // If NVDIMM value will be 'V' 741 #endif //MEM_NVDIMM_EN 742 #define SPD_BYTE_200 200 // Fixed value 0xBE 743 744 // 745 // DDR4 Specific Bytes 746 // 747 #define SPD_SDRAM_TYPE_DDR4 6 // SDRAM Device Type (DDR4) 748 #define SPD_OPT_FEAT_DDR4 7 // SDRAM Optional Features (DDR4) 749 #define SPD_MAC_MASK BIT0 | BIT1 | BIT2 // Mask for Maximum Active Count field 750 #define SPD_TRR_IMMUNE BIT3 // Indicates this DIMM does not require DRAM Maintenance 751 #define SPD_RFSH_OPT_DDR4 8 // SDRAM Refresh Options (DDR4) 752 #define SPD_VDD_DDR4 11 // Vdd DIMM supports (DDR4) 753 #define SPD_VDD_120 3 // Module operable and endurant 1.20V 754 #define SPD_MODULE_ORG_DDR4 12 // Number of Ranks and SDRAM device width (DDR4) 755 #define SPD_MEM_BUS_WID_DDR4 13 // Width of SDRAM memory bus 756 #define SPD_DIMM_TS_DDR4 14 // Module Thermal Sensor 757 #define SPD_TB_DDR4 17 // Timebase [3:2] MTB, [1:0] FTB 758 #define SPD_MIN_TCK_DDR4 18 // Minimum cycle time 759 #define SPD_TCKMIN_DDR4_1600 10 // tCK(MTB)=10, tCK(ns)=1.25 760 #define SPD_TCKMIN_DDR4_1866 9 // tCK(MTB)=9, tCK(ns)=1.071 761 #define SPD_TCKMIN_DDR4_2133 8 // tCK(MTB)=8, tCK(ns)=.938 762 #define SPD_TCKMIN_DDR4_2400 7 // tCK(MTB)=7, tCK(ns)=.833 763 #define SPD_MAX_TCK_DDR4 19 // Maximum cycle time 764 #define SPD_CAS_LT_SUP_1_DDR4 20 // CAS Latencies Supported, first byte 765 #define SPD_CAS_LT_SUP_2_DDR4 21 // CAS Latencies Supported, second byte 766 #define SPD_CAS_LT_SUP_3_DDR4 22 // CAS Latencies Supported, third byte 767 #define SPD_CAS_LT_SUP_4_DDR4 23 // CAS Latencies Supported, fourth byte 768 #define SPD_MIN_TAA_DDR4 24 // Minimum CAS Latency Time (tAAmin) 769 #define SPD_MIN_TRCD_DDR4 25 // Minimum RAS to CAS delay 770 #define SPD_MIN_TRP_DDR4 26 // Minimum Row Precharge time 771 #define SPD_EXT_TRC_TRAS_DDR4 27 // Upper nibbles for min tRAS and tRC 772 #define SPD_MIN_TRAS_DDR4 28 // Minimum Active to Precharge time 773 #define SPD_MIN_TRC_DDR4 29 // Minimum Active to Active/Refresh time 774 #define SPD_MIN_TRFC1_LSB_DDR4 30 // Minimum Refresh Recovery time least-significant byte 775 #define SPD_MIN_TRFC1_MSB_DDR4 31 // Minimum Refresh Recovery time most-significant byte 776 #define SPD_MIN_TRFC2_LSB_DDR4 32 // Minimum Refresh Recovery time least-significant byte 777 #define SPD_MIN_TRFC2_MSB_DDR4 33 // Minimum Refresh Recovery time most-significant byte 778 #define SPD_MIN_TRFC3_LSB_DDR4 34 // Minimum Refresh Recovery time least-significant byte 779 #define SPD_MIN_TRFC3_MSB_DDR4 35 // Minimum Refresh Recovery time most-significant byte 780 #define SPD_TFAW_UPPER_DDR4 36 // Upper nibble for tFAW 781 #define SPD_MIN_TFAW_DDR4 37 // Minimum For Active Window Delay Time (tFAW) 782 #define SPD_MIN_TRRDS_DDR4 38 // Minimum Active to Active Delay Time tRRD_S Different Bank Group 783 #define SPD_MIN_TRRDL_DDR4 39 // Minimum Active to Active Delay Time tRRD_L Same Bank Group 784 #define SPD_MIN_TCCDL_DDR4 40 // Minimum CAS to CAS Delay Time (tCCD_Lmin), same bank group 785 #define SPD_FTB_TCCDL_DDR4 117 // Fine offset for tCCD_L 786 #define SPD_FTB_TRRDL_DDR4 118 // Fine offset for tRRD_L 787 #define SPD_FTB_TRRDS_DDR4 119 // Fine offset for tRRD_S 788 #define SPD_FTB_TRC_DDR4 120 // Fine offset for TRC 789 #define SPD_FTB_TRP_DDR4 121 // Fine offset for TRP 790 #define SPD_FTB_TRCD_DDR4 122 // Fine offset for TRCD 791 #define SPD_FTB_TAA_DDR4 123 // Fine offset for TAA 792 #define SPD_FTB_MAX_TCK_DDR4 124 // Fine offset for max TCK 793 #define SPD_FTB_MIN_TCK_DDR4 125 // Fine offset for min TCK 794 #define SPD_MIRROR_UNBUFFERED 131 // Unbuffered:Address Mapping from Edge Connector to DRAM 795 #define SPD_MIRROR_REGISTERED 136 // Registered:Address Address Mapping from Register to DRAM 796 797 #define SPD_MMID_LSB_DDR4 320 // Module Manufacturer ID Code, Least Significant Byte 798 #define SPD_MMID_MSB_DDR4 321 // Module Manufacturer ID Code, Most Significant Byte 799 #define SPD_MM_LOC_DDR4 322 // Module Manufacturing Location 800 #define SPD_MM_DATE_DDR4 323 // Module Manufacturing Date 323-324 801 #define SPD_MODULE_SN_DDR4 325 // Module Serial Number 325-328 802 #define SPD_MODULE_PN_DDR4 329 // Module Part Number 329-348 803 #define SPD_MODULE_RC_DDR4 349 // Module Revision Code 804 #define SPD_DRAM_MIDC_LSB_DDR4 350 // DRAM Manufacturer ID Code, Least Significant Byte 805 #define SPD_DRAM_MIDC_MSB_DDR4 351 // DRAM Manufacturer ID Code, Most Significant Byte 806 #define SPD_DRAM_REV_DDR4 352 // DRAM Revision ID 807 #define SPD_CRC_LSB_DDR4 382 // LSB of 16-bit CRC 808 #define SPD_CRC_MSB_DDR4 383 // MSB of 16-bit CRC 809 810 // Begin DDR4 module specific section 811 #define SPD_MODULE_NH_DDR4 128 // Module Nominal Height 812 #define SPD_MODULE_MT_DDR4 129 // Module Maximum Thickness 813 #define SPD_REF_RAW_CARD_DDR4 130 // Reference Raw Card Used 814 815 // UDIMM specific bytes 816 // Applicable when Module Type (key byte 3) = 2 817 #define SPD_ADDR_MAP_FECTD_DDR4 131 // Address Mapping from Edge Connector to DRAM 818 819 // RDIMM specific bytes 820 // Applicable when Module Type (key byte 3) = 1 821 #define SPD_RDIMM_ATTR_DDR4 131 // RDIMM module attributes 822 #define SPD_DIMM_HS_DDR4 132 // Module Heat Spreader Solution 823 #define SPD_REG_VEN_LSB_DDR4 133 // Register Vendor ID LSB 824 #define SPD_REG_VEN_MSB_DDR4 134 // Register Vendor ID MSB 825 #define SPD_REG_REV_DDR4 135 // Register Revision 826 #define SPD_ADD_MAPPING_DDR4 136 // Address mapping from Reg to DRAM 827 #define SPD_REG_OD_CTL_DDR4 137 // Register Output Drive Strength for Control 828 #define SPD_REG_OD_CK_DDR4 138 // Register Output Drive Strength for Clock 829 830 // LRDIMM specific bytes 831 // Applicable when Module Type (key byte 3) = 0x4 832 #define SPD_LRDIMM_ATTR_DDR4 131 // LRDIMM module attributes 833 #define SPD_LRBUF_HS_DDR4 132 // LR Buffer Heat Spreader Solution 834 #define SPD_LRBUF_VEN_LSB_DDR4 133 // LR Buffer Vendor ID LSB 835 #define SPD_LRBUF_VEN_MSB_DDR4 134 // LR Buffer Vendor ID MSB 836 #define SPD_LRBUF_REV_DDR4 135 // LR Buffer Register Revision 837 #define SPD_LRBUF_DB_REV_DDR4 139 // LR Buffer Data Buffer Revision 838 #define SPD_LRBUF_DRAM_VREFDQ_R0_DDR4 140 // LR Buffer DRAM VrefDQ for Package Rank 0 839 #define SPD_LRBUF_DRAM_VREFDQ_R1_DDR4 141 // LR Buffer DRAM VrefDQ for Package Rank 1 840 #define SPD_LRBUF_DRAM_VREFDQ_R2_DDR4 142 // LR Buffer DRAM VrefDQ for Package Rank 2 841 #define SPD_LRBUF_DRAM_VREFDQ_R3_DDR4 143 // LR Buffer DRAM VrefDQ for Package Rank 3 842 #define SPD_LRBUF_DB_VREFDQ_DDR4 144 // LR Data Buffer VrefDQ for DRAM Interface 843 #define SPD_LRBUF_DB_DS_RTT_LE1866_DDR4 145 // LR Data Buffer MDQ Drive Strength and RTT for data rate <= 1866 844 #define SPD_LRBUF_DB_DS_RTT_GT1866_LE2400_DDR4 146 // LR Data Buffer MDQ Drive Strength and RTT for data rate > 1866 and <= 2400 845 #define SPD_LRBUF_DB_DS_RTT_GT2400_LE3200_DDR4 147 // LR Data Buffer MDQ Drive Strength and RTT for data rate > 2400 and <= 3200 846 #define SPD_LRBUF_DRAM_DS_DDR4 148 // LR Buffer DRAM Drive Strength (for data rates <= 1866, 1866 < data rate <= 2400, and 2400 < data rate <= 3200) 847 #define SPD_LRBUF_DRAM_ODT_WR_NOM_LE1866_DDR4 149 // LR Buffer DRAM ODT (RTT_WR and RTT_NOM) for data rate <= 1866 848 #define SPD_LRBUF_DRAM_ODT_WR_NOM_GT1866_LE2400_DDR4 150 // LR Buffer DRAM ODT (RTT_WR and RTT_NOM) for data rate > 1866 and <= 2400 849 #define SPD_LRBUF_DRAM_ODT_WR_NOM_GT2400_LE3200_DDR4 151 // LR Buffer DRAM ODT (RTT_WR and RTT_NOM) for data rate > 2400 and <= 3200 850 #define SPD_LRBUF_DRAM_ODT_PARK_LE1866_DDR4 152 // LR Buffer DRAM ODT (RTT_PARK) for data rate <= 1866 851 #define SPD_LRBUF_DRAM_ODT_PARK_GT1866_LE2400_DDR4 153 // LR Buffer DRAM ODT (RTT_PARK) for data rate > 1866 and <= 2400 852 #define SPD_LRBUF_DRAM_ODT_PARK_GT2400_LE3200_DDR4 154 // LR Buffer DRAM ODT (RTT_PARK) for data rate > 2400 and <= 3200 853 854 // 855 // End DDR4 Specific Bytes 856 // 857 #define BANK0 0 858 #define BANK1 BIT0 859 #define BANK2 BIT1 860 #define BANK3 BIT0 + BIT1 861 #define BANK4 BIT2 862 #define BANK5 BIT2 + BIT0 863 #define BANK6 BIT2 + BIT1 864 #define BANK7 BIT2 + BIT1 + BIT0 865 866 #define RDIMM_RC00 0x00 867 #define RDIMM_RC01 0x01 868 #define RDIMM_RC02 0x02 869 #define RDIMM_RC03 0x03 870 #define RDIMM_RC04 0x04 871 #define RDIMM_RC05 0x05 872 #define RDIMM_RC08 0x08 873 #define RDIMM_RC09 0x09 874 #define RDIMM_RC0A 0x0A 875 #define RDIMM_RC0B 0x0B 876 #define RDIMM_RC0C 0x0C 877 #define RDIMM_RC0D 0x0D 878 #define RDIMM_RC0E 0x0E 879 #define RDIMM_RC0F 0x0F 880 #define RDIMM_RC1x 0x10 881 #define RDIMM_RC2x 0x20 882 #define RDIMM_RC3x 0x30 883 #define RDIMM_RC4x 0x40 884 #define RDIMM_RC5x 0x50 885 #define RDIMM_RC6x 0x60 886 #define RDIMM_RC7x 0x70 887 #define RDIMM_RC8x 0x80 888 #define RDIMM_RC9x 0x90 889 #define RDIMM_RCAx 0xA0 890 891 #define LRDIMM_BC00 0x00 892 #define LRDIMM_BC01 0x01 893 #define LRDIMM_BC02 0x02 894 #define LRDIMM_BC03 0x03 895 #define LRDIMM_BC04 0x04 896 #define LRDIMM_BC05 0x05 897 #define LRDIMM_BC06 0x06 898 #define LRDIMM_BC07 0x07 899 #define LRDIMM_BC08 0x08 900 #define LRDIMM_BC09 0x09 901 #define LRDIMM_BC0A 0x0A 902 #define LRDIMM_BC0B 0x0B 903 #define LRDIMM_BC0C 0x0C 904 #define LRDIMM_BC0E 0x0E 905 906 #define LRDIMM_BC0x 0x00 907 #define LRDIMM_BC1x 0x10 908 #define LRDIMM_BC2x 0x20 909 #define LRDIMM_BC3x 0x30 910 #define LRDIMM_BC4x 0x40 911 #define LRDIMM_BC5x 0x50 912 #define LRDIMM_BC6x 0x60 913 #define LRDIMM_BC7x 0x70 914 #define LRDIMM_BC8x 0x80 915 #define LRDIMM_BC9x 0x90 916 #define LRDIMM_BCAx 0xA0 917 #define LRDIMM_BCBx 0xB0 918 #define LRDIMM_BCCx 0xC0 919 #define LRDIMM_BCDx 0xD0 920 #define LRDIMM_BCEx 0xE0 921 #define LRDIMM_BCFx 0xF0 922 #define LRDIMM_F0 0x0 923 #define LRDIMM_F1 0x1 924 #define LRDIMM_F5 0x5 925 #define LRDIMM_F6 0x6 926 #define LRDIMM_F7 0x7 927 #define LRDIMM_F8 0x8 928 #define LRDIMM_F9 0x9 929 930 #endif /* _HW_MEM_INIT_LIB_H_ */ 931