* [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 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.