public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support
@ 2013-08-06 12:18 Taras Kondratiuk
  2013-08-06 12:18 ` [U-Boot] [PATCH 1/4] ARM: OMAP4470: Add OMAP4470 identification Taras Kondratiuk
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Taras Kondratiuk @ 2013-08-06 12:18 UTC (permalink / raw)
  To: u-boot

This series adds OMAP4470 support. It initializes clocks, voltages and EMIF.
This is enough to boot SLP, but U-Boot will try to start battery charging
on TWL6032 and will crash, because registers GPADC registers are different.

To get fully functional system Oleg's TWL6032 series [1] is needed 
on top of this one.

Tested on TI Blaze Tablet2 board.

Based on v2013.07+ commit f53932a "dts/Makefile: pass -undef -D__DTS__ to cpp"

[1] http://www.mail-archive.com/u-boot at lists.denx.de/msg118364.html

Lubomir Popov (1):
  ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration

Taras Kondratiuk (3):
  ARM: OMAP4470: Add OMAP4470 identification
  ARM: OMAP4470: Add voltage and dpll data
  ARM: OMAP4460: sdp: Limit TPS mux config to 4460

 arch/arm/cpu/armv7/omap4/hw_data.c      |   36 +++++++++++++++++++++++++++
 arch/arm/cpu/armv7/omap4/hwinit.c       |    3 +++
 arch/arm/cpu/armv7/omap4/sdram_elpida.c |   41 +++++++++++++++++++++++++------
 arch/arm/include/asm/arch-omap4/clock.h |    7 +++++-
 arch/arm/include/asm/arch-omap4/omap.h  |    1 +
 arch/arm/include/asm/omap_common.h      |    1 +
 board/ti/sdp4430/sdp.c                  |    3 ++-
 7 files changed, 83 insertions(+), 9 deletions(-)

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/4] ARM: OMAP4470: Add OMAP4470 identification
  2013-08-06 12:18 [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support Taras Kondratiuk
@ 2013-08-06 12:18 ` Taras Kondratiuk
  2013-08-06 12:18 ` [U-Boot] [PATCH 2/4] ARM: OMAP4470: Add voltage and dpll data Taras Kondratiuk
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Taras Kondratiuk @ 2013-08-06 12:18 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Taras Kondratiuk <taras@ti.com>
---
 arch/arm/cpu/armv7/omap4/hwinit.c      |    3 +++
 arch/arm/include/asm/arch-omap4/omap.h |    1 +
 arch/arm/include/asm/omap_common.h     |    1 +
 3 files changed, 5 insertions(+)

diff --git a/arch/arm/cpu/armv7/omap4/hwinit.c b/arch/arm/cpu/armv7/omap4/hwinit.c
index 4da0fc0..b0598a0 100644
--- a/arch/arm/cpu/armv7/omap4/hwinit.c
+++ b/arch/arm/cpu/armv7/omap4/hwinit.c
@@ -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;
diff --git a/arch/arm/include/asm/arch-omap4/omap.h b/arch/arm/include/asm/arch-omap4/omap.h
index 3823a37..9129c0d 100644
--- a/arch/arm/include/asm/arch-omap4/omap.h
+++ b/arch/arm/include/asm/arch-omap4/omap.h
@@ -41,6 +41,7 @@
 #define OMAP4_CONTROL_ID_CODE_ES2_3	0x6B95C02F
 #define OMAP4460_CONTROL_ID_CODE_ES1_0	0x0B94E02F
 #define OMAP4460_CONTROL_ID_CODE_ES1_1	0x2B94E02F
+#define OMAP4470_CONTROL_ID_CODE_ES1_0	0x0B97502F
 
 /* UART */
 #define UART1_BASE		(OMAP44XX_L4_PER_BASE + 0x6a000)
diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index b56e949..d6ff030 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -612,6 +612,7 @@ static inline u8 is_omap54xx(void)
 #define OMAP4430_ES2_3	0x44300230
 #define OMAP4460_ES1_0	0x44600100
 #define OMAP4460_ES1_1	0x44600110
+#define OMAP4470_ES1_0	0x44700100
 
 /* omap5 */
 #define OMAP5430_SILICON_ID_INVALID	0
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 2/4] ARM: OMAP4470: Add voltage and dpll data
  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 ` Taras Kondratiuk
  2013-08-06 12:18 ` [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration Taras Kondratiuk
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Taras Kondratiuk @ 2013-08-06 12:18 UTC (permalink / raw)
  To: u-boot

OMAP4470 reference design uses TWL6032 PMIC
with a following connection scheme:
  VDD_CORE = TWL6032 SMPS2
  VDD_MPU  = TWL6032 SMPS1
  VDD_IVA  = TWL6032 SMPS5

Set voltage and frequency values according to
OMAP4470 Data Manual Operating Condition Addendum v0.7

Signed-off-by: Taras Kondratiuk <taras@ti.com>
---
 arch/arm/cpu/armv7/omap4/hw_data.c      |   36 +++++++++++++++++++++++++++++++
 arch/arm/include/asm/arch-omap4/clock.h |    7 +++++-
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/armv7/omap4/hw_data.c b/arch/arm/cpu/armv7/omap4/hw_data.c
index 310df5a..6a225c8 100644
--- a/arch/arm/cpu/armv7/omap4/hw_data.c
+++ b/arch/arm/cpu/armv7/omap4/hw_data.c
@@ -50,6 +50,7 @@ static const struct dpll_params mpu_dpll_params_1400mhz[NUM_SYS_CLKS] = {
 /*
  * dpll locked at 1600 MHz - MPU clk at 800 MHz(OPP Turbo 4430)
  * OMAP4430 OPP_TURBO frequency
+ * OMAP4470 OPP_NOM frequency
  */
 static const struct dpll_params mpu_dpll_params_1600mhz[NUM_SYS_CLKS] = {
 	{200, 2, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	/* 12 MHz   */
@@ -76,6 +77,7 @@ static const struct dpll_params mpu_dpll_params_1200mhz[NUM_SYS_CLKS] = {
 };
 
 /* OMAP4460 OPP_NOM frequency */
+/* OMAP4470 OPP_NOM (Low Power) frequency */
 static const struct dpll_params core_dpll_params_1600mhz[NUM_SYS_CLKS] = {
 	{200, 2, 1, 5, 8, 4, 6, 5, -1, -1, -1, -1},	/* 12 MHz   */
 	{800, 12, 1, 5, 8, 4, 6, 5, -1, -1, -1, -1},	/* 13 MHz   */
@@ -198,6 +200,20 @@ struct dplls omap4460_dplls = {
 	.ddr = NULL
 };
 
+struct dplls omap4470_dplls = {
+	.mpu = mpu_dpll_params_1600mhz,
+	.core = core_dpll_params_1600mhz,
+	.per = per_dpll_params_1536mhz,
+	.iva = iva_dpll_params_1862mhz,
+#ifdef CONFIG_SYS_OMAP_ABE_SYSCK
+	.abe = abe_dpll_params_sysclk_196608khz,
+#else
+	.abe = &abe_dpll_params_32k_196608khz,
+#endif
+	.usb = usb_dpll_params_1920mhz,
+	.ddr = NULL
+};
+
 struct pmic_data twl6030_4430es1 = {
 	.base_offset = PHOENIX_SMPS_BASE_VOLT_STD_MODE_UV,
 	.step = 12660, /* 12.66 mV represented in uV */
@@ -208,6 +224,7 @@ struct pmic_data twl6030_4430es1 = {
 	.pmic_write	= omap_vc_bypass_send_value,
 };
 
+/* twl6030 struct is used for TWL6030 and TWL6032 PMIC */
 struct pmic_data twl6030 = {
 	.base_offset = PHOENIX_SMPS_BASE_VOLT_STD_MODE_WITH_OFFSET_UV,
 	.step = 12660, /* 12.66 mV represented in uV */
@@ -271,6 +288,20 @@ struct vcores_data omap4460_volts = {
 	.mm.pmic = &twl6030,
 };
 
+struct vcores_data omap4470_volts = {
+	.mpu.value = 1200,
+	.mpu.addr = SMPS_REG_ADDR_SMPS1,
+	.mpu.pmic = &twl6030,
+
+	.core.value = 1126,
+	.core.addr = SMPS_REG_ADDR_SMPS1,
+	.core.pmic = &twl6030,
+
+	.mm.value = 1137,
+	.mm.addr = SMPS_REG_ADDR_SMPS1,
+	.mm.pmic = &twl6030,
+};
+
 /*
  * Enable essential clock domains, modules and
  * do some additional special settings needed
@@ -476,6 +507,11 @@ void hw_data_init(void)
 	*omap_vcores = &omap4460_volts;
 	break;
 
+	case OMAP4470_ES1_0:
+	*dplls_data = &omap4470_dplls;
+	*omap_vcores = &omap4470_volts;
+	break;
+
 	default:
 		printf("\n INVALID OMAP REVISION ");
 	}
diff --git a/arch/arm/include/asm/arch-omap4/clock.h b/arch/arm/include/asm/arch-omap4/clock.h
index b2e03d6..f3a682a 100644
--- a/arch/arm/include/asm/arch-omap4/clock.h
+++ b/arch/arm/include/asm/arch-omap4/clock.h
@@ -149,11 +149,16 @@
 /* PRM_VC_VAL_BYPASS */
 #define PRM_VC_I2C_CHANNEL_FREQ_KHZ	400
 
-/* SMPS */
+/* PMIC */
 #define SMPS_I2C_SLAVE_ADDR	0x12
+/* TWL6030 SMPS */
 #define SMPS_REG_ADDR_VCORE1	0x55
 #define SMPS_REG_ADDR_VCORE2	0x5B
 #define SMPS_REG_ADDR_VCORE3	0x61
+/* TWL6032 SMPS */
+#define SMPS_REG_ADDR_SMPS1	0x55
+#define SMPS_REG_ADDR_SMPS2	0x5B
+#define SMPS_REG_ADDR_SMPS5	0x49
 
 #define PHOENIX_SMPS_BASE_VOLT_STD_MODE_UV		607700
 #define PHOENIX_SMPS_BASE_VOLT_STD_MODE_WITH_OFFSET_UV	709000
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration
  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 ` Taras Kondratiuk
  2013-08-06 14:21   ` 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
  4 siblings, 1 reply; 9+ messages in thread
From: Taras Kondratiuk @ 2013-08-06 12:18 UTC (permalink / raw)
  To: u-boot

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

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>
---
 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,
+	.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;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 4/4] ARM: OMAP4460: sdp: Limit TPS mux config to 4460
  2013-08-06 12:18 [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support Taras Kondratiuk
                   ` (2 preceding siblings ...)
  2013-08-06 12:18 ` [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration Taras Kondratiuk
@ 2013-08-06 12:18 ` Taras Kondratiuk
  2013-08-28 18:25 ` [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support Tom Rini
  4 siblings, 0 replies; 9+ messages in thread
From: Taras Kondratiuk @ 2013-08-06 12:18 UTC (permalink / raw)
  To: u-boot

TPS mux config is 4460 specific, so it should be limited to 4460 only.

Signed-off-by: Taras Kondratiuk <taras@ti.com>
---
 board/ti/sdp4430/sdp.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/board/ti/sdp4430/sdp.c b/board/ti/sdp4430/sdp.c
index 25daaa9..0479a56 100644
--- a/board/ti/sdp4430/sdp.c
+++ b/board/ti/sdp4430/sdp.c
@@ -66,7 +66,8 @@ void set_muxconf_regs_essential(void)
 		   sizeof(wkup_padconf_array_essential) /
 		   sizeof(struct pad_conf_entry));
 
-	if (omap_revision() >= OMAP4460_ES1_0)
+	if ((omap_revision() >= OMAP4460_ES1_0) &&
+			(omap_revision() < OMAP4470_ES1_0))
 		do_set_mux((*ctrl)->control_padconf_wkup_base,
 				 wkup_padconf_array_essential_4460,
 				 sizeof(wkup_padconf_array_essential_4460) /
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration
  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
  2013-08-06 15:57     ` Taras Kondratiuk
  0 siblings, 1 reply; 9+ messages in thread
From: Lokesh Vutla @ 2013-08-06 14:21 UTC (permalink / raw)
  To: u-boot

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;
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration
  2013-08-06 14:21   ` Lokesh Vutla
@ 2013-08-06 15:57     ` Taras Kondratiuk
  2013-08-06 16:31       ` Lokesh Vutla
  0 siblings, 1 reply; 9+ messages in thread
From: Taras Kondratiuk @ 2013-08-06 15:57 UTC (permalink / raw)
  To: u-boot

On 08/06/2013 05:21 PM, Lokesh Vutla wrote:
> 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.

If you mean SYS_AUTOMATIC_SDRAM_DETECTION then yes I've tried it and it 
works.
The only minor issue is that detection is called twice during boot:
for dmm_init() and for do_sdram_init().

In case you need additional details I've put boot log with debug enabled 
below.

U-Boot SPL 2013.07-00116-gd7325e5-dirty (Aug 06 2013 - 18:20:56)
OMAP4470 ES1.0
 >>sdram_init()
in_sdram = 0
get_mr: EMIF1 cs 0 mr 00000000 val 0x0
get_mr: EMIF1 cs 0 mr 00000004 val 0x3
get_mr: EMIF1 cs 0 mr 00000005 val 0x3
get_mr: EMIF1 cs 0 mr 00000006 val 0x0
get_mr: EMIF1 cs 0 mr 00000007 val 0x0
get_mr: EMIF1 cs 0 mr 00000008 val 0x18
EMIF1 CS0       Elpida          LPDDR2-S4       512 MB
get_mr: EMIF1 cs 1 mr 80000000 val 0x3
get_mr: EMIF2 cs 0 mr 00000000 val 0x0
get_mr: EMIF2 cs 0 mr 00000004 val 0x3
get_mr: EMIF2 cs 0 mr 00000005 val 0x3
get_mr: EMIF2 cs 0 mr 00000006 val 0x0
get_mr: EMIF2 cs 0 mr 00000007 val 0x0
get_mr: EMIF2 cs 0 mr 00000008 val 0x18
EMIF2 CS0       Elpida          LPDDR2-S4       512 MB
get_mr: EMIF2 cs 1 mr 80000000 val 0x3
emif1_size 0x20000000 emif2_size 0x20000000
 >>do_sdram_init() 4c000000
get_mr: EMIF1 cs 0 mr 00000000 val 0x0
get_mr: EMIF1 cs 0 mr 00000004 val 0x3
get_mr: EMIF1 cs 0 mr 00000005 val 0x3
get_mr: EMIF1 cs 0 mr 00000006 val 0x0
get_mr: EMIF1 cs 0 mr 00000007 val 0x0
get_mr: EMIF1 cs 0 mr 00000008 val 0x18
EMIF1 CS0       Elpida          LPDDR2-S4       512 MB
get_mr: EMIF1 cs 1 mr 80000000 val 0x3
emif: timings table: 400000000
emif: addressing table index 6
regs->sdram_config_init - 0x80000eb2
regs->sdram_config - 0x80001ab2
regs->ref_ctrl - 0x00000618
regs->sdram_tim1 - 0x10eb0662
regs->sdram_tim2 - 0x20370dd2
regs->sdram_tim3 - 0x00b1c33f
regs->read_idle_ctrl - 0x000501ff
regs->temp_alert_config - 0x58016893
regs->zq_config - 0x500b3214
regs->emif_ddr_phy_ctlr_1 - 0x049ff418
regs->emif_ddr_phy_ctlr_1_init - 0x049ffff5
get_mr: EMIF1 cs 0 mr 00000000 val 0x0
<<do_sdram_init() 4c000000
 >>do_sdram_init() 4d000000
get_mr: EMIF2 cs 0 mr 00000000 val 0x0
get_mr: EMIF2 cs 0 mr 00000004 val 0x3
get_mr: EMIF2 cs 0 mr 00000005 val 0x3
get_mr: EMIF2 cs 0 mr 00000006 val 0x0
get_mr: EMIF2 cs 0 mr 00000007 val 0x0
get_mr: EMIF2 cs 0 mr 00000008 val 0x18
EMIF2 CS0       Elpida          LPDDR2-S4       512 MB
get_mr: EMIF2 cs 1 mr 80000000 val 0x3
emif: timings table: 400000000
emif: addressing table index 6
regs->sdram_config_init - 0x80000eb2
regs->sdram_config - 0x80001ab2
regs->ref_ctrl - 0x00000618
regs->sdram_tim1 - 0x10eb0662
regs->sdram_tim2 - 0x20370dd2
regs->sdram_tim3 - 0x00b1c33f
regs->read_idle_ctrl - 0x000501ff
regs->temp_alert_config - 0x58016893
regs->zq_config - 0x500b3214
regs->emif_ddr_phy_ctlr_1 - 0x049ff418
regs->emif_ddr_phy_ctlr_1_init - 0x049ffff5
get_mr: EMIF2 cs 0 mr 00000000 val 0x0
<<do_sdram_init() 4d000000
get_ram_size() successful<<sdram_init()
OMAP SD/MMC: 0
reading u-boot.img
reading u-boot.img

-- 
BR
Taras Kondratiuk | GlobalLogic

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/4] ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration
  2013-08-06 15:57     ` Taras Kondratiuk
@ 2013-08-06 16:31       ` Lokesh Vutla
  0 siblings, 0 replies; 9+ messages in thread
From: Lokesh Vutla @ 2013-08-06 16:31 UTC (permalink / raw)
  To: u-boot

Hi,
On Tuesday 06 August 2013 09:27 PM, Taras Kondratiuk wrote:
> On 08/06/2013 05:21 PM, Lokesh Vutla wrote:
>> 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.
> 
> If you mean SYS_AUTOMATIC_SDRAM_DETECTION then yes I've tried it and it works.
Cool, thats fine...!!

Thanks and regards,
Lokesh
> The only minor issue is that detection is called twice during boot:
> for dmm_init() and for do_sdram_init().
> 
> In case you need additional details I've put boot log with debug enabled below.
> 
> U-Boot SPL 2013.07-00116-gd7325e5-dirty (Aug 06 2013 - 18:20:56)
> OMAP4470 ES1.0
>>>sdram_init()
> in_sdram = 0
> get_mr: EMIF1 cs 0 mr 00000000 val 0x0
> get_mr: EMIF1 cs 0 mr 00000004 val 0x3
> get_mr: EMIF1 cs 0 mr 00000005 val 0x3
> get_mr: EMIF1 cs 0 mr 00000006 val 0x0
> get_mr: EMIF1 cs 0 mr 00000007 val 0x0
> get_mr: EMIF1 cs 0 mr 00000008 val 0x18
> EMIF1 CS0       Elpida          LPDDR2-S4       512 MB
> get_mr: EMIF1 cs 1 mr 80000000 val 0x3
> get_mr: EMIF2 cs 0 mr 00000000 val 0x0
> get_mr: EMIF2 cs 0 mr 00000004 val 0x3
> get_mr: EMIF2 cs 0 mr 00000005 val 0x3
> get_mr: EMIF2 cs 0 mr 00000006 val 0x0
> get_mr: EMIF2 cs 0 mr 00000007 val 0x0
> get_mr: EMIF2 cs 0 mr 00000008 val 0x18
> EMIF2 CS0       Elpida          LPDDR2-S4       512 MB
> get_mr: EMIF2 cs 1 mr 80000000 val 0x3
> emif1_size 0x20000000 emif2_size 0x20000000
>>>do_sdram_init() 4c000000
> get_mr: EMIF1 cs 0 mr 00000000 val 0x0
> get_mr: EMIF1 cs 0 mr 00000004 val 0x3
> get_mr: EMIF1 cs 0 mr 00000005 val 0x3
> get_mr: EMIF1 cs 0 mr 00000006 val 0x0
> get_mr: EMIF1 cs 0 mr 00000007 val 0x0
> get_mr: EMIF1 cs 0 mr 00000008 val 0x18
> EMIF1 CS0       Elpida          LPDDR2-S4       512 MB
> get_mr: EMIF1 cs 1 mr 80000000 val 0x3
> emif: timings table: 400000000
> emif: addressing table index 6
> regs->sdram_config_init - 0x80000eb2
> regs->sdram_config - 0x80001ab2
> regs->ref_ctrl - 0x00000618
> regs->sdram_tim1 - 0x10eb0662
> regs->sdram_tim2 - 0x20370dd2
> regs->sdram_tim3 - 0x00b1c33f
> regs->read_idle_ctrl - 0x000501ff
> regs->temp_alert_config - 0x58016893
> regs->zq_config - 0x500b3214
> regs->emif_ddr_phy_ctlr_1 - 0x049ff418
> regs->emif_ddr_phy_ctlr_1_init - 0x049ffff5
> get_mr: EMIF1 cs 0 mr 00000000 val 0x0
> <<do_sdram_init() 4c000000
>>>do_sdram_init() 4d000000
> get_mr: EMIF2 cs 0 mr 00000000 val 0x0
> get_mr: EMIF2 cs 0 mr 00000004 val 0x3
> get_mr: EMIF2 cs 0 mr 00000005 val 0x3
> get_mr: EMIF2 cs 0 mr 00000006 val 0x0
> get_mr: EMIF2 cs 0 mr 00000007 val 0x0
> get_mr: EMIF2 cs 0 mr 00000008 val 0x18
> EMIF2 CS0       Elpida          LPDDR2-S4       512 MB
> get_mr: EMIF2 cs 1 mr 80000000 val 0x3
> emif: timings table: 400000000
> emif: addressing table index 6
> regs->sdram_config_init - 0x80000eb2
> regs->sdram_config - 0x80001ab2
> regs->ref_ctrl - 0x00000618
> regs->sdram_tim1 - 0x10eb0662
> regs->sdram_tim2 - 0x20370dd2
> regs->sdram_tim3 - 0x00b1c33f
> regs->read_idle_ctrl - 0x000501ff
> regs->temp_alert_config - 0x58016893
> regs->zq_config - 0x500b3214
> regs->emif_ddr_phy_ctlr_1 - 0x049ff418
> regs->emif_ddr_phy_ctlr_1_init - 0x049ffff5
> get_mr: EMIF2 cs 0 mr 00000000 val 0x0
> <<do_sdram_init() 4d000000
> get_ram_size() successful<<sdram_init()
> OMAP SD/MMC: 0
> reading u-boot.img
> reading u-boot.img
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support
  2013-08-06 12:18 [U-Boot] [PATCH 0/4] ARM: OMAP4: Add OMAP4470 support Taras Kondratiuk
                   ` (3 preceding siblings ...)
  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 ` Tom Rini
  4 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2013-08-28 18:25 UTC (permalink / raw)
  To: u-boot

On Tue, Aug 06, 2013 at 03:18:47PM +0300, Taras Kondratiuk wrote:

> This series adds OMAP4470 support. It initializes clocks, voltages and EMIF.
> This is enough to boot SLP, but U-Boot will try to start battery charging
> on TWL6032 and will crash, because registers GPADC registers are different.
> 
> To get fully functional system Oleg's TWL6032 series [1] is needed 
> on top of this one.
> 
> Tested on TI Blaze Tablet2 board.
> 
> Based on v2013.07+ commit f53932a "dts/Makefile: pass -undef -D__DTS__ to cpp"
> 
> [1] http://www.mail-archive.com/u-boot at lists.denx.de/msg118364.html
> 
> Lubomir Popov (1):
>   ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration
> 
> Taras Kondratiuk (3):
>   ARM: OMAP4470: Add OMAP4470 identification
>   ARM: OMAP4470: Add voltage and dpll data
>   ARM: OMAP4460: sdp: Limit TPS mux config to 4460
> 
>  arch/arm/cpu/armv7/omap4/hw_data.c      |   36 +++++++++++++++++++++++++++
>  arch/arm/cpu/armv7/omap4/hwinit.c       |    3 +++
>  arch/arm/cpu/armv7/omap4/sdram_elpida.c |   41 +++++++++++++++++++++++++------
>  arch/arm/include/asm/arch-omap4/clock.h |    7 +++++-
>  arch/arm/include/asm/arch-omap4/omap.h  |    1 +
>  arch/arm/include/asm/omap_common.h      |    1 +
>  board/ti/sdp4430/sdp.c                  |    3 ++-
>  7 files changed, 83 insertions(+), 9 deletions(-)

Applied to u-boot-ti/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130828/b24adcef/attachment.pgp>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-08-28 18:25 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox