On Thu, 2011-04-14 at 14:54 +0200, Andre Schwarz wrote:
> CPO value and driver strength settings are board specifc.
> Also allow SPD data fetch from any accessible I2C EEPROM.
> 
> Signed-off-by: Andre Schwarz <andre.schw...@matrix-vision.de>
> ---
>  arch/powerpc/cpu/mpc83xx/spd_sdram.c |   19 ++++++++++++++++++-
>  1 files changed, 18 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/powerpc/cpu/mpc83xx/spd_sdram.c 
> b/arch/powerpc/cpu/mpc83xx/spd_sdram.c
> index 44aaa9a..9b01f0d 100644
> --- a/arch/powerpc/cpu/mpc83xx/spd_sdram.c
> +++ b/arch/powerpc/cpu/mpc83xx/spd_sdram.c
> @@ -68,6 +68,12 @@ void board_add_ram_info(int use_default)
>  #ifndef      CONFIG_SYS_READ_SPD
>  #define CONFIG_SYS_READ_SPD  i2c_read
>  #endif
> +#ifndef SPD_EEPROM_OFFSET
> +#define SPD_EEPROM_OFFSET    0
> +#endif
> +#ifndef SPD_EEPROM_ADDR_LEN
> +#define SPD_EEPROM_ADDR_LEN     1
> +#endif
>  
>  /*
>   * Convert picoseconds into clock cycles (rounding up if needed).
> @@ -160,7 +166,8 @@ long int spd_sdram()
>       isync();
>  
>       /* Read SPD parameters with I2C */
> -     CONFIG_SYS_READ_SPD(SPD_EEPROM_ADDRESS, 0, 1, (uchar *) & spd, sizeof 
> (spd));
> +     CONFIG_SYS_READ_SPD(SPD_EEPROM_ADDRESS, SPD_EEPROM_OFFSET,
> +             SPD_EEPROM_ADDR_LEN, (uchar *) &spd, sizeof(spd));
>  #ifdef SPD_DEBUG
>       spd_debug(&spd);
>  #endif
> @@ -562,6 +569,9 @@ long int spd_sdram()
>        * Empirically, 0x3 == 6/8 clock delay is suggested for DDR I 266.
>        */
>       wr_data_delay = 2;
> +#ifdef CONFIG_SYS_DDR_WRITE_DATA_DELAY
> +     wr_data_delay = CONFIG_SYS_DDR_WRITE_DATA_DELAY;
> +#endif
>  
>       /*
>        * Write Latency
> @@ -601,6 +611,9 @@ long int spd_sdram()
>        */
>       cpo = 0;
>       if (spd.mem_type == SPD_MEMTYPE_DDR2) {
> +#ifdef CONFIG_SYS_DDR_CPO
> +             cpo = CONFIG_SYS_DDR_CPO;
> +#else
>               if (effective_data_rate == 266) {
>                       cpo = 0x4;              /* READ_LAT + 1/2 */
>               } else if (effective_data_rate == 333) {
> @@ -611,6 +624,7 @@ long int spd_sdram()
>                       /* Automatic calibration */
>                       cpo = 0x1f;
>               }
> +#endif
>       }
>  
>       ddr->timing_cfg_2 = (0
> @@ -679,6 +693,9 @@ long int spd_sdram()
>               ddr->sdram_mode =
>                       (0
>                        | (1 << (16 + 10))             /* DQS Differential 
> disable */
> +#ifdef CONFIG_SYS_DDR_MODE_WEAK
> +                      | (1 << (16 + 1))              /* weak driver (~60%) */
> +#endif
>                        | (add_lat << (16 + 3))        /* Additive Latency in 
> EMRS1 */
>                        | (mode_odt_enable << 16)      /* ODT Enable in EMRS1 
> */
>                        | ((twr_clk - 1) << 9)         /* Write Recovery 
> Autopre */

Looks good to me.

Acked-by: York Sun <york...@freescale.com>



_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to