[coreboot-gerrit] Patch set updated for coreboot: nb/amd/mct_ddr3: Set read DQS delay to 1UI before calculating read latency

Timothy Pearson (tpearson@raptorengineeringinc.com) gerrit at coreboot.org
Thu Mar 10 00:41:28 CET 2016


Timothy Pearson (tpearson at raptorengineeringinc.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13995

-gerrit

commit 079300886585700b53ed17294fb9c37738831a3b
Author: Timothy Pearson <tpearson at raptorengineeringinc.com>
Date:   Tue Mar 8 18:40:28 2016 -0600

    nb/amd/mct_ddr3: Set read DQS delay to 1UI before calculating read latency
    
    The AMD Family 15h BKDG rev. 3.14 indicates that the maximum read latency
    must be calculated prior to DQS position training, however the read
    latency calculations use read DQS delay values that have not been
    set prior to DQS position training.
    
    Set the read DQS delay values to 1UI (i.e worst case) before calculating
    the read latency prior to DQS position training.
    
    Change-Id: I6ae88c891e92b21dc0ca3c47b8f3d269f83b3204
    Signed-off-by: Timothy Pearson <tpearson at raptorengineeringinc.com>
---
 src/northbridge/amd/amdmct/mct_ddr3/mctdqs_d.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/northbridge/amd/amdmct/mct_ddr3/mctdqs_d.c b/src/northbridge/amd/amdmct/mct_ddr3/mctdqs_d.c
index 19a7acb..1f71b2c 100644
--- a/src/northbridge/amd/amdmct/mct_ddr3/mctdqs_d.c
+++ b/src/northbridge/amd/amdmct/mct_ddr3/mctdqs_d.c
@@ -1664,9 +1664,11 @@ static void TrainDQSReceiverEnCyc_D_Fam15(struct MCTStatStruc *pMCTstat,
 	uint8_t lane;
 	uint32_t dword;
 	uint32_t rx_en_offset;
+	uint8_t internal_lane;
 	uint8_t dct_training_success;
 	uint16_t initial_phy_phase_delay[MAX_BYTE_LANES];
 	uint16_t current_phy_phase_delay[MAX_BYTE_LANES];
+	uint16_t current_read_dqs_delay[MAX_BYTE_LANES];
 	uint8_t lane_training_success[MAX_BYTE_LANES];
 	uint8_t dqs_results_array[1024];
 
@@ -1753,6 +1755,11 @@ static void TrainDQSReceiverEnCyc_D_Fam15(struct MCTStatStruc *pMCTstat,
 					/* 2.10.5.8.3 (4 A) */
 					write_dqs_receiver_enable_control_registers(current_phy_phase_delay, dev, dct, dimm, index_reg);
 
+					/* Reset the read data timing registers to 1UI before calculating MaxRdLatency */
+					for (internal_lane = 0; internal_lane < MAX_BYTE_LANES; internal_lane++)
+						current_read_dqs_delay[internal_lane] = 0x20 << 1;
+					write_dqs_read_data_timing_registers(current_read_dqs_delay, dev, dct, dimm, index_reg);
+
 					/* Calculate and program MaxRdLatency */
 					Calc_SetMaxRdLatency_D_Fam15(pMCTstat, pDCTstat, dct, 0);
 



More information about the coreboot-gerrit mailing list