When the read gate training algorithm has completed, the final read DQS slave delay settings can be found in the following fields:
- DDRSS_PHY_121[17-8]
PHY_RDDQS_DQ0_RISE_SLAVE_DELAY_0
- DDRSS_PHY_122[25-16]
PHY_RDDQS_DQ1_RISE_SLAVE_DELAY_0
- DDRSS_PHY_123[25-16]
PHY_RDDQS_DQ2_RISE_SLAVE_DELAY_0
- DDRSS_PHY_124[25-16]
PHY_RDDQS_DQ3_RISE_SLAVE_DELAY_0
- DDRSS_PHY_125[25-16]
PHY_RDDQS_DQ4_RISE_SLAVE_DELAY_0
- DDRSS_PHY_126[25-16]
PHY_RDDQS_DQ5_RISE_SLAVE_DELAY_0
- DDRSS_PHY_127[25-16]
PHY_RDDQS_DQ6_RISE_SLAVE_DELAY_0
- DDRSS_PHY_128[25-16]
PHY_RDDQS_DQ7_RISE_SLAVE_DELAY_0
- DDRSS_PHY_377[17-8]
PHY_RDDQS_DQ0_RISE_SLAVE_DELAY_1
- DDRSS_PHY_378[25-16]
PHY_RDDQS_DQ1_RISE_SLAVE_DELAY_1
- DDRSS_PHY_379[25-16]
PHY_RDDQS_DQ2_RISE_SLAVE_DELAY_1
- DDRSS_PHY_380[25-16]
PHY_RDDQS_DQ3_RISE_SLAVE_DELAY_1
- DDRSS_PHY_381[25-16]
PHY_RDDQS_DQ4_RISE_SLAVE_DELAY_1
- DDRSS_PHY_382[25-16]
PHY_RDDQS_DQ5_RISE_SLAVE_DELAY_1
- DDRSS_PHY_383[25-16]
PHY_RDDQS_DQ6_RISE_SLAVE_DELAY_1
- DDRSS_PHY_384[25-16]
PHY_RDDQS_DQ7_RISE_SLAVE_DELAY_1
- DDRSS_PHY_633[17-8]
PHY_RDDQS_DQ0_RISE_SLAVE_DELAY_2
- DDRSS_PHY_634[25-16]
PHY_RDDQS_DQ1_RISE_SLAVE_DELAY_2
- DDRSS_PHY_635[25-16]
PHY_RDDQS_DQ2_RISE_SLAVE_DELAY_2
- DDRSS_PHY_636[25-16]
PHY_RDDQS_DQ3_RISE_SLAVE_DELAY_2
- DDRSS_PHY_637[25-16]
PHY_RDDQS_DQ4_RISE_SLAVE_DELAY_2
- DDRSS_PHY_638[25-16]
PHY_RDDQS_DQ5_RISE_SLAVE_DELAY_2
- DDRSS_PHY_639[25-16]
PHY_RDDQS_DQ6_RISE_SLAVE_DELAY_2
- DDRSS_PHY_640[25-16]
PHY_RDDQS_DQ7_RISE_SLAVE_DELAY_2
- DDRSS_PHY_889[17-8]
PHY_RDDQS_DQ0_RISE_SLAVE_DELAY_3
- DDRSS_PHY_890[25-16]
PHY_RDDQS_DQ1_RISE_SLAVE_DELAY_3
- DDRSS_PHY_891[25-16]
PHY_RDDQS_DQ2_RISE_SLAVE_DELAY_3
- DDRSS_PHY_892[25-16]
PHY_RDDQS_DQ3_RISE_SLAVE_DELAY_3
- DDRSS_PHY_893[25-16]
PHY_RDDQS_DQ4_RISE_SLAVE_DELAY_3
- DDRSS_PHY_894[25-16]
PHY_RDDQS_DQ5_RISE_SLAVE_DELAY_3
- DDRSS_PHY_895[25-16]
PHY_RDDQS_DQ6_RISE_SLAVE_DELAY_3
- DDRSS_PHY_896[25-16]
PHY_RDDQS_DQ7_RISE_SLAVE_DELAY_3
- DDRSS_PHY_122[9-0]
PHY_RDDQS_DQ0_FALL_SLAVE_DELAY_0
- DDRSS_PHY_123[9-0]
PHY_RDDQS_DQ1_FALL_SLAVE_DELAY_0
- DDRSS_PHY_124[9-0]
PHY_RDDQS_DQ2_FALL_SLAVE_DELAY_0
- DDRSS_PHY_125[9-0]
PHY_RDDQS_DQ3_FALL_SLAVE_DELAY_0
- DDRSS_PHY_126[9-0]
PHY_RDDQS_DQ4_FALL_SLAVE_DELAY_0
- DDRSS_PHY_127[9-0]
PHY_RDDQS_DQ5_FALL_SLAVE_DELAY_0
- DDRSS_PHY_128[9-0]
PHY_RDDQS_DQ6_FALL_SLAVE_DELAY_0
- DDRSS_PHY_129[9-0]
PHY_RDDQS_DQ7_FALL_SLAVE_DELAY_0
- DDRSS_PHY_378[9-0]
PHY_RDDQS_DQ0_FALL_SLAVE_DELAY_1
- DDRSS_PHY_379[9-0]
PHY_RDDQS_DQ1_FALL_SLAVE_DELAY_1
- DDRSS_PHY_380[9-0]
PHY_RDDQS_DQ2_FALL_SLAVE_DELAY_1
- DDRSS_PHY_381[9-0]
PHY_RDDQS_DQ3_FALL_SLAVE_DELAY_1
- DDRSS_PHY_382[9-0]
PHY_RDDQS_DQ4_FALL_SLAVE_DELAY_1
- DDRSS_PHY_383[9-0]
PHY_RDDQS_DQ5_FALL_SLAVE_DELAY_1
- DDRSS_PHY_384[9-0]
PHY_RDDQS_DQ6_FALL_SLAVE_DELAY_1
- DDRSS_PHY_385[9-0]
PHY_RDDQS_DQ7_FALL_SLAVE_DELAY_1
- DDRSS_PHY_634[9-0]
PHY_RDDQS_DQ0_FALL_SLAVE_DELAY_2
- DDRSS_PHY_635[9-0]
PHY_RDDQS_DQ1_FALL_SLAVE_DELAY_2
- DDRSS_PHY_636[9-0]
PHY_RDDQS_DQ2_FALL_SLAVE_DELAY_2
- DDRSS_PHY_637[9-0]
PHY_RDDQS_DQ3_FALL_SLAVE_DELAY_2
- DDRSS_PHY_638[9-0]
PHY_RDDQS_DQ4_FALL_SLAVE_DELAY_2
- DDRSS_PHY_639[9-0]
PHY_RDDQS_DQ5_FALL_SLAVE_DELAY_2
- DDRSS_PHY_640[9-0]
PHY_RDDQS_DQ6_FALL_SLAVE_DELAY_2
- DDRSS_PHY_641[9-0]
PHY_RDDQS_DQ7_FALL_SLAVE_DELAY_2
- DDRSS_PHY_890[9-0]
PHY_RDDQS_DQ0_FALL_SLAVE_DELAY_3
- DDRSS_PHY_891[9-0]
PHY_RDDQS_DQ1_FALL_SLAVE_DELAY_3
- DDRSS_PHY_892[9-0]
PHY_RDDQS_DQ2_FALL_SLAVE_DELAY_3
- DDRSS_PHY_893[9-0]
PHY_RDDQS_DQ3_FALL_SLAVE_DELAY_3
- DDRSS_PHY_894[9-0]
PHY_RDDQS_DQ4_FALL_SLAVE_DELAY_3
- DDRSS_PHY_895[9-0]
PHY_RDDQS_DQ5_FALL_SLAVE_DELAY_3
- DDRSS_PHY_896[9-0]
PHY_RDDQS_DQ6_FALL_SLAVE_DELAY_3
- DDRSS_PHY_897[9-0]
PHY_RDDQS_DQ7_FALL_SLAVE_DELAY_3
- DDRSS_PHY_129[25-16]
PHY_RDDQS_DM_RISE_SLAVE_DELAY_0
- DDRSS_PHY_385[25-16]
PHY_RDDQS_DM_RISE_SLAVE_DELAY_1
- DDRSS_PHY_641[25-16]
PHY_RDDQS_DM_RISE_SLAVE_DELAY_2
- DDRSS_PHY_897[25-16]
PHY_RDDQS_DM_RISE_SLAVE_DELAY_3
- DDRSS_PHY_130[9-0]
PHY_RDDQS_DM_FALL_SLAVE_DELAY_0
- DDRSS_PHY_386[9-0]
PHY_RDDQS_DM_FALL_SLAVE_DELAY_1
- DDRSS_PHY_642[9-0]
PHY_RDDQS_DM_FALL_SLAVE_DELAY_2
- DDRSS_PHY_898[9-0]
PHY_RDDQS_DM_FALL_SLAVE_DELAY_3
Read data eye training for LPDDR4 devices does return data on the DM pin so the DBI data is trained along with the other DQ pins. In this case, the PHY_RDDQS_DM_RISE_SLAVE_DELAY_x and PHY_RDDQS_DM_FALL_SLAVE_DELAY_x fields receive their own unique values.
After read data eye training is complete, no error condition is noted in the read leveling status fields. The RISE and FALL field results in the previously described registers can be checked to look for values that appear out of place (for example, near 0x000, near 0x100 or greater) or to look for a DQ that is much different than the rest. After read data eye training is complete, software can always override the results by writing directly to the PHY_RDDQS_DQy_RISE_SLAVE_DELAY_x, PHY_RDDQS_DQy_FALL_SLAVE_DELAY_x, PHY_RDDQS_DM_RISE_SLAVE_DELAY_x and PHY_RDDQS_DM_FALL_SLAVE_DELAY_x fields.