* [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable
@ 2013-05-03 14:00 Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 1/7] mx23: Fix pad voltage selection bit Fabio Estevam
` (6 more replies)
0 siblings, 7 replies; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
Prior to this series running 'memtester' utility in Linux on a mx23evk
always resulted in many errors during stress testing, if the kernel is loaded
via U-boot.
Running the same test and loading the kernel via FSL bootlets resulted on
zero errors.
Adjust U-boot so that it can also pass the 'memtester' stress test.
After this series was applied, no more DDR errors were observed on a mx23evk.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 1/7] mx23: Fix pad voltage selection bit
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
@ 2013-05-03 14:00 ` Fabio Estevam
2013-05-03 14:11 ` Marek Vasut
2013-05-03 14:00 ` [U-Boot] [PATCH v4 2/7] mx23evk: Fix DDR pin iomux settings Fabio Estevam
` (5 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
On mx23 the pad voltage selection bit needs to be always '0', since '1' is a
reserved value.
For example:
Pin 108, EMI_A06 pin voltage selection:
0= 1.8V (mDDR) or 2.5V (DDR1);
1= reserved.
Fix the pad voltage definitions for the mx23 case.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Marek Vasut <marex@denx.de>
---
Changes since v3:
- Add Marek's ack
Changes since v2:
- Only place PAD_3V3 inside the if/else block
Changes since v1:
- Newly introduced
arch/arm/include/asm/arch-mxs/iomux.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/include/asm/arch-mxs/iomux.h b/arch/arm/include/asm/arch-mxs/iomux.h
index 4288715..f46895e 100644
--- a/arch/arm/include/asm/arch-mxs/iomux.h
+++ b/arch/arm/include/asm/arch-mxs/iomux.h
@@ -71,7 +71,11 @@ typedef u32 iomux_cfg_t;
#define PAD_16MA 3
#define PAD_1V8 0
+#if defined CONFIG_MX28
#define PAD_3V3 1
+#else
+#define PAD_3V3 0
+#endif
#define PAD_NOPULL 0
#define PAD_PULLUP 1
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 2/7] mx23evk: Fix DDR pin iomux settings
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 1/7] mx23: Fix pad voltage selection bit Fabio Estevam
@ 2013-05-03 14:00 ` Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 3/7] mx23_olinuxino: " Fabio Estevam
` (4 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
Change MUX_CONFIG_EMI to use the same drive strength as the bootlets code from
Freescale, which results in much better stability.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v3:
- None
Changes since v2:
- Only change the drive strength
Changes since v1:
- Only adjust MUX_CONFIG_EMI
board/freescale/mx23evk/spl_boot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/freescale/mx23evk/spl_boot.c b/board/freescale/mx23evk/spl_boot.c
index b6f4e7e..fd6b3d9 100644
--- a/board/freescale/mx23evk/spl_boot.c
+++ b/board/freescale/mx23evk/spl_boot.c
@@ -26,7 +26,7 @@
#include <asm/arch/sys_proto.h>
#define MUX_CONFIG_SSP1 (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP)
-#define MUX_CONFIG_EMI (MXS_PAD_3V3 | MXS_PAD_16MA | MXS_PAD_PULLUP)
+#define MUX_CONFIG_EMI (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_PULLUP)
const iomux_cfg_t iomux_setup[] = {
/* DUART */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 3/7] mx23_olinuxino: Fix DDR pin iomux settings
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 1/7] mx23: Fix pad voltage selection bit Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 2/7] mx23evk: Fix DDR pin iomux settings Fabio Estevam
@ 2013-05-03 14:00 ` Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 4/7] mxs: spl_mem_init: Fix comment about start bit Fabio Estevam
` (3 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
Change MUX_CONFIG_EMI to use the same drive strength as the bootlets code from
Freescale, which results in much better stability.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v3:
- None
Changes since v2:
- Only change the drive strength
Changes since v1:
- Only adjust MUX_CONFIG_EMI
board/olimex/mx23_olinuxino/spl_boot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/olimex/mx23_olinuxino/spl_boot.c b/board/olimex/mx23_olinuxino/spl_boot.c
index a96c293..e55947f 100644
--- a/board/olimex/mx23_olinuxino/spl_boot.c
+++ b/board/olimex/mx23_olinuxino/spl_boot.c
@@ -29,7 +29,7 @@
#include <asm/arch/imx-regs.h>
#include <asm/arch/sys_proto.h>
-#define MUX_CONFIG_EMI (MXS_PAD_3V3 | MXS_PAD_16MA | MXS_PAD_PULLUP)
+#define MUX_CONFIG_EMI (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_PULLUP)
#define MUX_CONFIG_SSP (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP)
const iomux_cfg_t iomux_setup[] = {
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 4/7] mxs: spl_mem_init: Fix comment about start bit
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
` (2 preceding siblings ...)
2013-05-03 14:00 ` [U-Boot] [PATCH v4 3/7] mx23_olinuxino: " Fabio Estevam
@ 2013-05-03 14:00 ` Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 5/7] mxs: spl_mem_init: Remove erroneous DDR setting Fabio Estevam
` (2 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
Start bit is part of HW_DRAM_CTL8 register, so fix the comment.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v3:
- None
Changes since v2:
- None
Changes since v1:
- Newly introduced as the previous patch is now splitted.
arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
index 4950490..300da0a 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
@@ -267,7 +267,7 @@ static void mx23_mem_init(void)
initialize_dram_values();
- /* Set START bit in DRAM_CTL16 */
+ /* Set START bit in DRAM_CTL8 */
setbits_le32(MXS_DRAM_BASE + 0x20, 1 << 16);
clrbits_le32(MXS_DRAM_BASE + 0x40, 1 << 17);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 5/7] mxs: spl_mem_init: Remove erroneous DDR setting
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
` (3 preceding siblings ...)
2013-05-03 14:00 ` [U-Boot] [PATCH v4 4/7] mxs: spl_mem_init: Fix comment about start bit Fabio Estevam
@ 2013-05-03 14:00 ` Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 6/7] mxs: spl_mem_init: Skip the initialization of some DRAM_CTL registers Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 7/7] mxs: spl_mem_init: Change EMI port priority Fabio Estevam
6 siblings, 0 replies; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
On mx23 there is no 'DRAM init complete' in register HW_DRAM_CTL18.
Remove this erroneous setting.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v3:
- None
Changes since v2:
- None
Changes since v1:
- Newly introduced as the previous patch is now splitted.
arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
index 300da0a..df25535 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
@@ -279,10 +279,6 @@ static void mx23_mem_init(void)
setbits_le32(MXS_DRAM_BASE + 0x40, 1 << 19);
setbits_le32(MXS_DRAM_BASE + 0x40, 1 << 11);
-
- /* Wait for bit 10 (DRAM init complete) in DRAM_CTL18 */
- while (!(readl(MXS_DRAM_BASE + 0x48) & (1 << 10)))
- ;
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 6/7] mxs: spl_mem_init: Skip the initialization of some DRAM_CTL registers
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
` (4 preceding siblings ...)
2013-05-03 14:00 ` [U-Boot] [PATCH v4 5/7] mxs: spl_mem_init: Remove erroneous DDR setting Fabio Estevam
@ 2013-05-03 14:00 ` Fabio Estevam
2013-05-03 14:12 ` Marek Vasut
2013-05-03 14:00 ` [U-Boot] [PATCH v4 7/7] mxs: spl_mem_init: Change EMI port priority Fabio Estevam
6 siblings, 1 reply; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
HW_DRAM_CTL27, HW_DRAM_CTL28 and HW_DRAM_CTL35 are not initialized as per
FSL bootlets code.
mx23 Reference Manual mark HW_DRAM_CTL27 and HW_DRAM_CTL28 as "reserved".
HW_DRAM_CTL8 is setup as the last element.
So skip the initialization of these DRAM_CTL registers.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v3:
- Use continue
Changes since v2:
- None
Changes since v1:
- To avoid polluting the mx28 case, separate the function definition in mx23 and
for mx28.
arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
index df25535..e599f31 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
@@ -110,6 +110,7 @@ __weak void mxs_adjust_memory_params(uint32_t *dram_vals)
{
}
+#ifdef CONFIG_MX28
static void initialize_dram_values(void)
{
int i;
@@ -118,15 +119,27 @@ static void initialize_dram_values(void)
for (i = 0; i < ARRAY_SIZE(dram_vals); i++)
writel(dram_vals[i], MXS_DRAM_BASE + (4 * i));
+}
+#else
+static void initialize_dram_values(void)
+{
+ int i;
+
+ mxs_adjust_memory_params(dram_vals);
+
+ for (i = 0; i < ARRAY_SIZE(dram_vals); i++) {
+ if ((i == 8 || i == 27 || i == 28 || i == 35))
+ continue;
+ writel(dram_vals[i], MXS_DRAM_BASE + (4 * i));
+ }
-#ifdef CONFIG_MX23
/*
* Enable tRAS lockout in HW_DRAM_CTL08 ; it must be the last
* element to be set
*/
writel((1 << 24), MXS_DRAM_BASE + (4 * 8));
-#endif
}
+#endif
static void mxs_mem_init_clock(void)
{
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 7/7] mxs: spl_mem_init: Change EMI port priority
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
` (5 preceding siblings ...)
2013-05-03 14:00 ` [U-Boot] [PATCH v4 6/7] mxs: spl_mem_init: Skip the initialization of some DRAM_CTL registers Fabio Estevam
@ 2013-05-03 14:00 ` Fabio Estevam
6 siblings, 0 replies; 10+ messages in thread
From: Fabio Estevam @ 2013-05-03 14:00 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
FSL bootlets code set the PORT_PRIORITY_ORDER field of register HW_EMI_CTRL
as 0x2, which means:
PORT0231 = 0x02 Priority Order: AXI0, AHB2, AHB3, AHB1
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v3:
- None
Changes since v2:
- None
Changes since v1:
- None
arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
index e599f31..d932950 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
@@ -287,7 +287,7 @@ static void mx23_mem_init(void)
early_delay(20000);
/* Adjust EMI port priority. */
- clrsetbits_le32(0x80020000, 0x1f << 16, 0x8);
+ clrsetbits_le32(0x80020000, 0x1f << 16, 0x2);
early_delay(20000);
setbits_le32(MXS_DRAM_BASE + 0x40, 1 << 19);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 1/7] mx23: Fix pad voltage selection bit
2013-05-03 14:00 ` [U-Boot] [PATCH v4 1/7] mx23: Fix pad voltage selection bit Fabio Estevam
@ 2013-05-03 14:11 ` Marek Vasut
0 siblings, 0 replies; 10+ messages in thread
From: Marek Vasut @ 2013-05-03 14:11 UTC (permalink / raw)
To: u-boot
Dear Fabio Estevam,
> From: Fabio Estevam <fabio.estevam@freescale.com>
>
> On mx23 the pad voltage selection bit needs to be always '0', since '1' is
> a reserved value.
>
> For example:
>
> Pin 108, EMI_A06 pin voltage selection:
> 0= 1.8V (mDDR) or 2.5V (DDR1);
> 1= reserved.
>
> Fix the pad voltage definitions for the mx23 case.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> Acked-by: Marek Vasut <marex@denx.de>
> ---
> Changes since v3:
> - Add Marek's ack
> Changes since v2:
> - Only place PAD_3V3 inside the if/else block
> Changes since v1:
> - Newly introduced
>
> arch/arm/include/asm/arch-mxs/iomux.h | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm/include/asm/arch-mxs/iomux.h
> b/arch/arm/include/asm/arch-mxs/iomux.h index 4288715..f46895e 100644
> --- a/arch/arm/include/asm/arch-mxs/iomux.h
> +++ b/arch/arm/include/asm/arch-mxs/iomux.h
> @@ -71,7 +71,11 @@ typedef u32 iomux_cfg_t;
> #define PAD_16MA 3
>
> #define PAD_1V8 0
> +#if defined CONFIG_MX28
Uh, #if defined(CONFIG_MX28) ?
> #define PAD_3V3 1
> +#else
> +#define PAD_3V3 0
> +#endif
>
> #define PAD_NOPULL 0
> #define PAD_PULLUP 1
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v4 6/7] mxs: spl_mem_init: Skip the initialization of some DRAM_CTL registers
2013-05-03 14:00 ` [U-Boot] [PATCH v4 6/7] mxs: spl_mem_init: Skip the initialization of some DRAM_CTL registers Fabio Estevam
@ 2013-05-03 14:12 ` Marek Vasut
0 siblings, 0 replies; 10+ messages in thread
From: Marek Vasut @ 2013-05-03 14:12 UTC (permalink / raw)
To: u-boot
Dear Fabio Estevam,
> From: Fabio Estevam <fabio.estevam@freescale.com>
>
> HW_DRAM_CTL27, HW_DRAM_CTL28 and HW_DRAM_CTL35 are not initialized as per
> FSL bootlets code.
>
> mx23 Reference Manual mark HW_DRAM_CTL27 and HW_DRAM_CTL28 as "reserved".
>
> HW_DRAM_CTL8 is setup as the last element.
>
> So skip the initialization of these DRAM_CTL registers.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> Changes since v3:
> - Use continue
> Changes since v2:
> - None
> Changes since v1:
> - To avoid polluting the mx28 case, separate the function definition in
> mx23 and for mx28.
> arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
> b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c index df25535..e599f31 100644
> --- a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
> +++ b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
> @@ -110,6 +110,7 @@ __weak void mxs_adjust_memory_params(uint32_t
> *dram_vals) {
> }
>
> +#ifdef CONFIG_MX28
> static void initialize_dram_values(void)
> {
> int i;
> @@ -118,15 +119,27 @@ static void initialize_dram_values(void)
>
> for (i = 0; i < ARRAY_SIZE(dram_vals); i++)
> writel(dram_vals[i], MXS_DRAM_BASE + (4 * i));
> +}
> +#else
> +static void initialize_dram_values(void)
> +{
> + int i;
> +
> + mxs_adjust_memory_params(dram_vals);
> +
> + for (i = 0; i < ARRAY_SIZE(dram_vals); i++) {
I dunno if I should be bitching some more, but you have double (()) below. Some
comment just here won't hurt, but whatever.
> + if ((i == 8 || i == 27 || i == 28 || i == 35))
> + continue;
> + writel(dram_vals[i], MXS_DRAM_BASE + (4 * i));
> + }
>
> -#ifdef CONFIG_MX23
> /*
> * Enable tRAS lockout in HW_DRAM_CTL08 ; it must be the last
> * element to be set
> */
> writel((1 << 24), MXS_DRAM_BASE + (4 * 8));
> -#endif
> }
> +#endif
>
> static void mxs_mem_init_clock(void)
> {
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-05-03 14:12 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-03 14:00 [U-Boot] [PATCH v4 0/7] mx23: Make DDR initialization stable Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 1/7] mx23: Fix pad voltage selection bit Fabio Estevam
2013-05-03 14:11 ` Marek Vasut
2013-05-03 14:00 ` [U-Boot] [PATCH v4 2/7] mx23evk: Fix DDR pin iomux settings Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 3/7] mx23_olinuxino: " Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 4/7] mxs: spl_mem_init: Fix comment about start bit Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 5/7] mxs: spl_mem_init: Remove erroneous DDR setting Fabio Estevam
2013-05-03 14:00 ` [U-Boot] [PATCH v4 6/7] mxs: spl_mem_init: Skip the initialization of some DRAM_CTL registers Fabio Estevam
2013-05-03 14:12 ` Marek Vasut
2013-05-03 14:00 ` [U-Boot] [PATCH v4 7/7] mxs: spl_mem_init: Change EMI port priority Fabio Estevam
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox