All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lokesh Vutla <lokeshvutla@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration
Date: Tue, 6 Aug 2013 19:51:39 +0530	[thread overview]
Message-ID: <52010673.30106@ti.com> (raw)
In-Reply-To: <1375791531-31014-4-git-send-email-taras@ti.com>

Hi Taras,
On Tuesday 06 August 2013 05:48 PM, Taras Kondratiuk wrote:
> From: Lubomir Popov <lpopov@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 <lpopov@mm-sol.com>
> [taras at ti.com: cleaned up patch and fixed precalculated values]
> Signed-off-by: Taras Kondratiuk <taras@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;
> 

  reply	other threads:[~2013-08-06 14:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-06 12:18 [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support Taras Kondratiuk
2013-08-06 12:18 ` [U-Boot] [PATCH 1/4] ARM: OMAP4470: Add OMAP4470 identification Taras Kondratiuk
2013-08-06 12:18 ` [U-Boot] [PATCH 2/4] ARM: OMAP4470: Add voltage and dpll data Taras Kondratiuk
2013-08-06 12:18 ` [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration Taras Kondratiuk
2013-08-06 14:21   ` Lokesh Vutla [this message]
2013-08-06 15:57     ` Taras Kondratiuk
2013-08-06 16:31       ` Lokesh Vutla
2013-08-06 12:18 ` [U-Boot] [PATCH 4/4] ARM: OMAP4460: sdp: Limit TPS mux config to 4460 Taras Kondratiuk
2013-08-28 18:25 ` [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52010673.30106@ti.com \
    --to=lokeshvutla@ti.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.