Hi Taras,
On Tuesday 06 August 2013 05:48 PM, Taras Kondratiuk wrote:
> From: Lubomir Popov <lpo...@mm-sol.com>
> 
> OMAP4470 SDP SoM has EDB8164B3PF PoP memory on board.
> This memory has 4Gb x 2CS = 8Gb configuration.
> Add configuration for runtime calculation and precalculated cases.
> 
> Patch is based on a draft Lubomir's patch [1].
> 
> [1] http://lists.denx.de/pipermail/u-boot/2013-April/150851.html
Just curious to know, Have you tried SDRAM_AUTO_DETECTION ?
Rest looks fine to me.

Thanks and regards,
Lokesh
> 
> Signed-off-by: Lubomir Popov <lpo...@mm-sol.com>
> [ta...@ti.com: cleaned up patch and fixed precalculated values]
> Signed-off-by: Taras Kondratiuk <ta...@ti.com>
@@ -138,6 +138,9 @@ void init_omap_revision(void)
                break;
        case MIDR_CORTEX_A9_R2P10:
                switch (readl(CONTROL_ID_CODE)) {
+               case OMAP4470_CONTROL_ID_CODE_ES1_0:
+                       *omap_si_rev = OMAP4470_ES1_0;
+                       break;
                case OMAP4460_CONTROL_ID_CODE_ES1_1:
                        *omap_si_rev = OMAP4460_ES1_1;
                        break;
@@ -138,6 +138,9 @@ void init_omap_revision(void)
                break;
        case MIDR_CORTEX_A9_R2P10:
                switch (readl(CONTROL_ID_CODE)) {
+               case OMAP4470_CONTROL_ID_CODE_ES1_0:
+                       *omap_si_rev = OMAP4470_ES1_0;
+                       break;
                case OMAP4460_CONTROL_ID_CODE_ES1_1:
                        *omap_si_rev = OMAP4460_ES1_1;
                        break;
> ---
>  arch/arm/cpu/armv7/omap4/sdram_elpida.c |   41 
> +++++++++++++++++++++++++------
>  1 file changed, 34 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv7/omap4/sdram_elpida.c 
> b/arch/arm/cpu/armv7/omap4/sdram_elpida.c
> index d76dde7..67a7926 100644
> --- a/arch/arm/cpu/armv7/omap4/sdram_elpida.c
> +++ b/arch/arm/cpu/armv7/omap4/sdram_elpida.c
> @@ -60,6 +60,20 @@ static const struct emif_regs emif_regs_elpida_380_mhz_1cs 
> = {
>       .emif_ddr_phy_ctlr_1            = 0x049ff418
>  };
>  
> +const struct emif_regs emif_regs_elpida_400_mhz_1cs = {
> +     .sdram_config_init              = 0x80800eb2,
> +     .sdram_config                   = 0x80801ab2,
> +     .ref_ctrl                       = 0x00000618,
> +     .sdram_tim1                     = 0x10eb0662,
> +     .sdram_tim2                     = 0x20370dd2,
> +     .sdram_tim3                     = 0x00b1c33f,
> +     .read_idle_ctrl                 = 0x000501ff,
> +     .zq_config                      = 0x500b3215,
> +     .temp_alert_config              = 0x58016893,
> +     .emif_ddr_phy_ctlr_1_init       = 0x049ffff5,
> +     .emif_ddr_phy_ctlr_1            = 0x049ff418
> +};
> +
>  const struct emif_regs emif_regs_elpida_400_mhz_2cs = {
>       .sdram_config_init              = 0x80000eb9,
>       .sdram_config                   = 0x80001ab9,
> @@ -107,8 +121,10 @@ static void emif_get_reg_dump_sdp(u32 emif_nr, const 
> struct emif_regs **regs)
>               *regs = &emif_regs_elpida_380_mhz_1cs;
>       else if (omap4_rev == OMAP4430_ES2_0)
>               *regs = &emif_regs_elpida_200_mhz_2cs;
> -     else
> +     else if (omap4_rev < OMAP4470_ES1_0)
>               *regs = &emif_regs_elpida_400_mhz_2cs;
> +     else
> +             *regs = &emif_regs_elpida_400_mhz_1cs;
>  }
>  void emif_get_reg_dump(u32 emif_nr, const struct emif_regs **regs)
>       __attribute__((weak, alias("emif_get_reg_dump_sdp")));
> @@ -138,20 +154,31 @@ static const struct lpddr2_device_details 
> elpida_2G_S4_details = {
>       .manufacturer   = LPDDR2_MANUFACTURER_ELPIDA
>  };
>  
> +static const struct lpddr2_device_details elpida_4G_S4_details = {
> +     .type           = LPDDR2_TYPE_S4,
> +     .density        = LPDDR2_DENSITY_4Gb,
@@ -138,6 +138,9 @@ void init_omap_revision(void)
                break;
        case MIDR_CORTEX_A9_R2P10:
                switch (readl(CONTROL_ID_CODE)) {
+               case OMAP4470_CONTROL_ID_CODE_ES1_0:
+                       *omap_si_rev = OMAP4470_ES1_0;
+                       break;
                case OMAP4460_CONTROL_ID_CODE_ES1_1:
                        *omap_si_rev = OMAP4460_ES1_1;
                        break;
> +     .io_width       = LPDDR2_IO_WIDTH_32,
> +     .manufacturer   = LPDDR2_MANUFACTURER_ELPIDA
> +};
> +
>  struct lpddr2_device_details *emif_get_device_details_sdp(u32 emif_nr, u8 cs,
>                       struct lpddr2_device_details *lpddr2_dev_details)
>  {
>       u32 omap_rev = omap_revision();
>  
>       /* EMIF1 & EMIF2 have identical configuration */
> -     if ((omap_rev == OMAP4430_ES1_0) && (cs == CS1)) {
> -             /* Nothing connected on CS1 for ES1.0 */
> +     if (((omap_rev == OMAP4430_ES1_0) || (omap_rev == OMAP4470_ES1_0))
> +             && (cs == CS1)) {
> +             /* Nothing connected on CS1 for 4430/4470 ES1.0 */
>               return NULL;
> -     } else {
> -             /* In all other cases Elpida 2G device */
> +     } else if (omap_rev < OMAP4470_ES1_0) {
> +             /* In all other 4430/4460 cases Elpida 2G device */
>               *lpddr2_dev_details = elpida_2G_S4_details;
> -             return lpddr2_dev_details;
> +     } else {
> +             /* 4470: 4G device */
> +             *lpddr2_dev_details = elpida_4G_S4_details;
>       }
> +     return lpddr2_dev_details;
>  }
>  
>  struct lpddr2_device_details *emif_get_device_details(u32 emif_nr, u8 cs,
> @@ -265,7 +292,7 @@ void emif_get_device_timings_sdp(u32 emif_nr,
>       /* Identical devices on EMIF1 & EMIF2 */
>       *cs0_device_timings = &elpida_2G_S4_timings;
>  
> -     if (omap_rev == OMAP4430_ES1_0)
> +     if ((omap_rev == OMAP4430_ES1_0) || (omap_rev == OMAP4470_ES1_0))
>               *cs1_device_timings = NULL;
>       else
>               *cs1_device_timings = &elpida_2G_S4_timings;
> 

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

Reply via email to