diff mbox

[U-Boot] mx6ul_14x14_evk: Fix DDR calibration values

Message ID 1472440812-15395-1-git-send-email-festevam@gmail.com
State Changes Requested
Delegated to: Stefano Babic
Headers show

Commit Message

Fabio Estevam Aug. 29, 2016, 3:20 a.m. UTC
From: Fabio Estevam <fabio.estevam@nxp.com>

When running NXP 4.1 kernel with U-Boot mainline we observe a
hang when going into the lowest operational point of cpufreq.

Comparing the DDR calibration values against NXP U-Boot showed
that the values were incorrect.

Adjust the calibration values so that we can avoid such system hang.

Reported-by: Eric Nelson <eric@nelint.com>
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
 board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Peng Fan Aug. 29, 2016, 5:32 a.m. UTC | #1
Hi Fabio,
On Mon, Aug 29, 2016 at 12:20:12AM -0300, Fabio Estevam wrote:
>From: Fabio Estevam <fabio.estevam@nxp.com>
>
>When running NXP 4.1 kernel with U-Boot mainline we observe a
>hang when going into the lowest operational point of cpufreq.
>
>Comparing the DDR calibration values against NXP U-Boot showed
>that the values were incorrect.
>
>Adjust the calibration values so that we can avoid such system hang.
>
>Reported-by: Eric Nelson <eric@nelint.com>
>Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>

Acked-by: Peng Fan <peng.fan@nxp.com>

Thanks,
Peng.
>---
> board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
>diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
>index c213861..77c561d 100644
>--- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
>+++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
>@@ -784,10 +784,10 @@ static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
> };
> 
> static struct mx6_mmdc_calibration mx6_mmcd_calib = {
>-	.p0_mpwldectrl0 = 0x00070007,
>-	.p0_mpdgctrl0 = 0x41490145,
>-	.p0_mprddlctl = 0x40404546,
>-	.p0_mpwrdlctl = 0x4040524D,
>+	.p0_mpwldectrl0 = 0x00000000,
>+	.p0_mpdgctrl0 = 0x41570155,
>+	.p0_mprddlctl = 0x4040474A,
>+	.p0_mpwrdlctl = 0x40405550,
> };
> 
> struct mx6_ddr_sysinfo ddr_sysinfo = {
>-- 
>2.7.4
>
>_______________________________________________
>U-Boot mailing list
>U-Boot@lists.denx.de
>http://lists.denx.de/mailman/listinfo/u-boot
Fabio Estevam Aug. 29, 2016, 11:58 a.m. UTC | #2
Hi Eric,

On Mon, Aug 29, 2016 at 12:20 AM, Fabio Estevam <festevam@gmail.com> wrote:
> From: Fabio Estevam <fabio.estevam@nxp.com>
>
> When running NXP 4.1 kernel with U-Boot mainline we observe a
> hang when going into the lowest operational point of cpufreq.
>
> Comparing the DDR calibration values against NXP U-Boot showed
> that the values were incorrect.
>
> Adjust the calibration values so that we can avoid such system hang.
>
> Reported-by: Eric Nelson <eric@nelint.com>
> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>

After running more tests I still get the hang sometimes, so we still
need to review the DDR SPL settings.

Regards,

Fabio Estevam
Eric Nelson Aug. 29, 2016, 5 p.m. UTC | #3
Hi Fabio,

On 08/29/2016 04:58 AM, Fabio Estevam wrote:
> Hi Eric,
> 
> On Mon, Aug 29, 2016 at 12:20 AM, Fabio Estevam <festevam@gmail.com> wrote:
>> From: Fabio Estevam <fabio.estevam@nxp.com>
>>
>> When running NXP 4.1 kernel with U-Boot mainline we observe a
>> hang when going into the lowest operational point of cpufreq.
>>
>> Comparing the DDR calibration values against NXP U-Boot showed
>> that the values were incorrect.
>>
>> Adjust the calibration values so that we can avoid such system hang.
>>
>> Reported-by: Eric Nelson <eric@nelint.com>
>> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
> 
> After running more tests I still get the hang sometimes, so we still
> need to review the DDR SPL settings.
> 
> Regards,
> 
> Fabio Estevam
> 

I just test this patch against imx/master and I'm still seeing the
issue:

	root@imx6ulevk:~#
	Bus freq set to 24000000 start...

Do you have kernel debug messages enabled so you can see the bus
frequency change?
Eric Nelson Aug. 29, 2016, 5:14 p.m. UTC | #4
Hi Fabio,

On 08/29/2016 10:00 AM, Eric Nelson wrote:
> On 08/29/2016 04:58 AM, Fabio Estevam wrote:
>> On Mon, Aug 29, 2016 at 12:20 AM, Fabio Estevam <festevam@gmail.com> wrote:
>>> From: Fabio Estevam <fabio.estevam@nxp.com>
>>>
>>> When running NXP 4.1 kernel with U-Boot mainline we observe a
>>> hang when going into the lowest operational point of cpufreq.
>>>
>>> Comparing the DDR calibration values against NXP U-Boot showed
>>> that the values were incorrect.
>>>
>>> Adjust the calibration values so that we can avoid such system hang.
>>>
>>> Reported-by: Eric Nelson <eric@nelint.com>
>>> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
>>
>> After running more tests I still get the hang sometimes, so we still
>> need to review the DDR SPL settings.
>>
>> Regards,
>>
>> Fabio Estevam
>>
> 
> I just test this patch against imx/master and I'm still seeing the
> issue:
> 
> 	root@imx6ulevk:~#
> 	Bus freq set to 24000000 start...
> 
> Do you have kernel debug messages enabled so you can see the bus
> frequency change?
> 

Things are working well using your config patch:
	http://pastebin.com/crAe1Yr1

root@imx6ulevk:~#
Bus freq set to 24000000 start...
Bus freq set to 24000000 done!

root@imx6ulevk:~#
root@imx6ulevk:~#
Bus freq set to 400000000 start...
Bus freq set to 400000000 done!
Fabio Estevam Aug. 29, 2016, 6:06 p.m. UTC | #5
Hi Eric,

On Mon, Aug 29, 2016 at 2:14 PM, Eric Nelson <eric@nelint.com> wrote:

> Things are working well using your config patch:
>         http://pastebin.com/crAe1Yr1

Please test this one:
http://lists.denx.de/pipermail/u-boot/2016-August/265131.html

Thanks
Eric Nelson Aug. 29, 2016, 6:51 p.m. UTC | #6
Thanks very much for your efforts Fabio,

On 08/29/2016 11:06 AM, Fabio Estevam wrote:
> Hi Eric,
> 
> On Mon, Aug 29, 2016 at 2:14 PM, Eric Nelson <eric@nelint.com> wrote:
> 
>> Things are working well using your config patch:
>>         http://pastebin.com/crAe1Yr1
> 
> Please test this one:
> http://lists.denx.de/pipermail/u-boot/2016-August/265131.html
> 

I did and it fixes the problem.

I sent a review with some concerns about why and how, but
patch 1/3 confirmed that the problem doesn't stem from calibration.

This is good, because I originally found the problem on a custom
board that had pristine calibration values which survived multiple
overnight stress tests (using the stress tool and Linux).

Regards,


Eric
diff mbox

Patch

diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
index c213861..77c561d 100644
--- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
+++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
@@ -784,10 +784,10 @@  static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
 };
 
 static struct mx6_mmdc_calibration mx6_mmcd_calib = {
-	.p0_mpwldectrl0 = 0x00070007,
-	.p0_mpdgctrl0 = 0x41490145,
-	.p0_mprddlctl = 0x40404546,
-	.p0_mpwrdlctl = 0x4040524D,
+	.p0_mpwldectrl0 = 0x00000000,
+	.p0_mpdgctrl0 = 0x41570155,
+	.p0_mprddlctl = 0x4040474A,
+	.p0_mpwrdlctl = 0x40405550,
 };
 
 struct mx6_ddr_sysinfo ddr_sysinfo = {