Skip to content
  • Adam Graham's avatar
    ppc4xx: Autocalibration can set RDCC to over aggressive value. · c645012a
    Adam Graham authored
    
    
    The criteria of the AMCC SDRAM Controller DDR autocalibration
    U-Boot code is to pick the largest passing write/read/compare
    window that also has the smallest SDRAM_RDCC.[RDSS] Read Sample
    Cycle Select value.
    
    On some Kilauea boards the DDR autocalibration algorithm can
    find a large passing write/read/compare window with a small
    SDRAM_RDCC.[RDSS] aggressive value of Read Sample Cycle Select
    value "T1 Sample".
    
    This SDRAM_RDCC.[RDSS] Read Sample Cycle Select value of
    "T1 Sample" proves to be to aggressive when later on U-Boot
    relocates into DDR memory and executes.
    
    The memory traces on the Kilauea board are short so on some
    Kilauea boards the SDRAM_RDCC.[RDSS] Read Sample Cycle Select
    value of "T1 Sample" shows up as a potentially valid value for
    the DDR autocalibratiion algorithm.
    
    The fix is to define a weak default function which provides
    the minimum SDRAM_RDCC.[RDSS] Read Sample Cycle Select value
    to accept for DDR autocalibration.  The default will be the
    "T2 Sample" value.  A board developer who has a well defined
    board and chooses to be more aggressive can always provide
    their own board specific string function with the more
    aggressive "T1 Sample" value or stick with the default
    minimum SDRAM_RDCC.[RDSS] value of "T2".
    
    Also put in a autocalibration loop fix for case where current
    write/read/compare passing window size is the same as a prior
    window size, then in this case choose the write/read/compare
    result that has the associated smallest RDCC T-Sample value.
    
    Signed-off-by: default avatarAdam Graham <agraham@amcc.com>
    Signed-off-by: default avatarStefan Roese <sr@denx.de>
    c645012a