VOID MemRecNFinalizeMctDR ( IN OUT MEM_NB_BLOCK *NBPtr ) { MEM_DATA_STRUCT *MemPtr; S_UINT64 SMsr; MemPtr = NBPtr->MemPtr; // Recommended settings for F2x11C MemRecNSetBitFieldNb (NBPtr, BFMctWrLimit, 16); MemRecNSetBitFieldNb (NBPtr, BFPrefCpuDis, 0); MemRecNSetBitFieldNb (NBPtr, BFPrefIoDis, 0); MemRecNSetBitFieldNb (NBPtr, BFFlushWrOnStpGnt, 1); LibAmdMsrRead (BU_CFG2, (UINT64 *)&SMsr, &MemPtr->StdHeader); if (!NBPtr->ClToNbFlag) { SMsr.lo &= ~((UINT32) 1 << 15); // ClLinesToNbDis } LibAmdMsrWrite (BU_CFG2, (UINT64 *)&SMsr, &MemPtr->StdHeader); LibAmdMsrRead (BU_CFG, (UINT64 *)&SMsr, &MemPtr->StdHeader); SMsr.hi &= ~((UINT32) 1 << (48 - 32)); // WbEnhWsbDis LibAmdMsrWrite (BU_CFG, (UINT64 *)&SMsr, &MemPtr->StdHeader); }
VOID MemRecNFinalizeMctML ( IN OUT MEM_NB_BLOCK *NBPtr ) { MEM_DATA_STRUCT *MemPtr; MemPtr = NBPtr->MemPtr; // // Recommended registers setting after DRAM device initialization and training // // BFDcqBypassMax = 0x1F MemRecNSetBitFieldNb (NBPtr, BFDcqBypassMax, 0x1F); }
VOID MemRecNFinalizeMctHy ( IN OUT MEM_NB_BLOCK *NBPtr ) { MEM_DATA_STRUCT *MemPtr; S_UINT64 SMsr; MemPtr = NBPtr->MemPtr; // Recommended settings for F2x11C MemRecNSetBitFieldNb (NBPtr, BFMctCfgHiReg, 0x2CE00F60); LibAmdMsrRead (BU_CFG2, (UINT64 *)&SMsr, &MemPtr->StdHeader); if (!NBPtr->ClToNbFlag) { SMsr.lo &= ~((UINT32) 1 << 15); // ClLinesToNbDis } LibAmdMsrWrite (BU_CFG2, (UINT64 *)&SMsr, &MemPtr->StdHeader); LibAmdMsrRead (BU_CFG, (UINT64 *)&SMsr, &MemPtr->StdHeader); SMsr.hi &= ~((UINT32) 1 << (48 - 32)); // WbEnhWsbDis LibAmdMsrWrite (BU_CFG, (UINT64 *)&SMsr, &MemPtr->StdHeader); }