unsigned int ext_caslat = 0; /* Extended MCAS latency from READ cmd */
        unsigned int cntl_adj = 0; /* Control Adjust */
 
+       /* If the tRAS > 19 MCLK, we use the ext mode */
+       if (picos_to_mclk(common_dimm->tRAS_ps) > 0x13)
+               ext_acttopre = 1;
+
        ext_refrec = (picos_to_mclk(common_dimm->tRFC_ps) - 8) >> 4;
        ddr->timing_cfg_3 = (0
                | ((ext_acttopre & 0x1) << 24)
-               | ((ext_refrec & 0x7) << 16)
+               | ((ext_refrec & 0xF) << 16)
                | ((ext_caslat & 0x1) << 12)
                | ((cntl_adj & 0x7) << 0)
                );
        wrtord_mclk = picos_to_mclk(common_dimm->tWTR_ps);
 
        ddr->timing_cfg_1 = (0
-               | ((pretoact_mclk & 0x07) << 28)
+               | ((pretoact_mclk & 0x0F) << 28)
                | ((acttopre_mclk & 0x0F) << 24)
-               | ((acttorw_mclk & 0x7) << 20)
+               | ((acttorw_mclk & 0xF) << 20)
                | ((caslat_ctrl & 0xF) << 16)
                | ((refrec_ctrl & 0xF) << 12)
-               | ((wrrec_mclk & 0x07) << 8)
+               | ((wrrec_mclk & 0x0F) << 8)
                | ((acttoact_mclk & 0x07) << 4)
                | ((wrtord_mclk & 0x07) << 0)
                );