All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
@ 2016-10-19  0:48 Hamish Martin
  2016-10-21 20:05 ` york sun
  0 siblings, 1 reply; 7+ messages in thread
From: Hamish Martin @ 2016-10-19  0:48 UTC (permalink / raw)
  To: u-boot

This erratum is already implemented for other ARM based QorIQ
platforms with the Gen4 DDR controller. Port the fix to the Gen3
controller and enable it for T2080 and T2081.

Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Signed-off-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz>
Cc: York Sun <york.sun@nxp.com>
---
 arch/powerpc/cpu/mpc85xx/cmd_errata.c     |  3 +++
 arch/powerpc/include/asm/config_mpc85xx.h |  1 +
 drivers/ddr/fsl/mpc85xx_ddr_gen3.c        | 17 +++++++++++++++++
 3 files changed, 21 insertions(+)

diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
index 3b06ae42e4bc..94b6dcca96b6 100644
--- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c
+++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
@@ -329,6 +329,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #ifdef CONFIG_SYS_FSL_ERRATUM_A009663
 	puts("Work-around for Erratum A009663 enabled\n");
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
+	puts("Work-around for Erratum A009942 enabled\n");
+#endif
 
 	return 0;
 }
diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
index 6d845e859f4a..9e1cd80e16e0 100644
--- a/arch/powerpc/include/asm/config_mpc85xx.h
+++ b/arch/powerpc/include/asm/config_mpc85xx.h
@@ -910,6 +910,7 @@ defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
 #define CONFIG_SYS_FSL_ERRATUM_A006593
 #define CONFIG_SYS_FSL_ERRATUM_A007186
 #define CONFIG_SYS_FSL_ERRATUM_A006379
+#define CONFIG_SYS_FSL_ERRATUM_A009942
 #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
 #define CONFIG_SYS_FSL_SFP_VER_3_0
 
diff --git a/drivers/ddr/fsl/mpc85xx_ddr_gen3.c b/drivers/ddr/fsl/mpc85xx_ddr_gen3.c
index 653b7f0c770c..a88884377f80 100644
--- a/drivers/ddr/fsl/mpc85xx_ddr_gen3.c
+++ b/drivers/ddr/fsl/mpc85xx_ddr_gen3.c
@@ -39,6 +39,10 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
 #ifdef CONFIG_SYS_FSL_ERRATUM_DDR_A003
 	u32 save1, save2;
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
+	ulong ddr_freq;
+	u32 tmp;
+#endif
 
 	switch (ctrl_num) {
 	case 0:
@@ -183,6 +187,19 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
 	out_be32(&ddr->debug[21], 0x24000000);
 #endif /* CONFIG_SYS_FSL_ERRATUM_DDR_A003474 */
 
+#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
+	ddr_freq = get_ddr_freq(ctrl_num) / 1000000;
+	tmp = in_be32(&ddr->debug[28]);
+	if (ddr_freq <= 1333)
+		out_be32(&ddr->debug[28], tmp | 0x0080006a);
+	else if (ddr_freq <= 1600)
+		out_be32(&ddr->debug[28], tmp | 0x0070006f);
+	else if (ddr_freq <= 1867)
+		out_be32(&ddr->debug[28], tmp | 0x00700076);
+	else if (ddr_freq <= 2133)
+		out_be32(&ddr->debug[28], tmp | 0x0060007b);
+#endif
+
 	/*
 	 * For RDIMMs, JEDEC spec requires clocks to be stable before reset is
 	 * deasserted. Clocks start when any chip select is enabled and clock
-- 
2.10.1

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

* [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
  2016-10-19  0:48 [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942 Hamish Martin
@ 2016-10-21 20:05 ` york sun
  2016-10-26 16:33   ` york sun
  0 siblings, 1 reply; 7+ messages in thread
From: york sun @ 2016-10-21 20:05 UTC (permalink / raw)
  To: u-boot

On 10/18/2016 07:48 PM, Hamish Martin wrote:
> This erratum is already implemented for other ARM based QorIQ
> platforms with the Gen4 DDR controller. Port the fix to the Gen3
> controller and enable it for T2080 and T2081.
>
> Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> Signed-off-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz>
> Cc: York Sun <york.sun@nxp.com>
> ---
>  arch/powerpc/cpu/mpc85xx/cmd_errata.c     |  3 +++
>  arch/powerpc/include/asm/config_mpc85xx.h |  1 +
>  drivers/ddr/fsl/mpc85xx_ddr_gen3.c        | 17 +++++++++++++++++
>  3 files changed, 21 insertions(+)
>
> diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
> index 3b06ae42e4bc..94b6dcca96b6 100644
> --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c
> +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
> @@ -329,6 +329,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  #ifdef CONFIG_SYS_FSL_ERRATUM_A009663
>  	puts("Work-around for Erratum A009663 enabled\n");
>  #endif
> +#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
> +	puts("Work-around for Erratum A009942 enabled\n");
> +#endif
>
>  	return 0;
>  }
> diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
> index 6d845e859f4a..9e1cd80e16e0 100644
> --- a/arch/powerpc/include/asm/config_mpc85xx.h
> +++ b/arch/powerpc/include/asm/config_mpc85xx.h
> @@ -910,6 +910,7 @@ defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
>  #define CONFIG_SYS_FSL_ERRATUM_A006593
>  #define CONFIG_SYS_FSL_ERRATUM_A007186
>  #define CONFIG_SYS_FSL_ERRATUM_A006379
> +#define CONFIG_SYS_FSL_ERRATUM_A009942
>  #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
>  #define CONFIG_SYS_FSL_SFP_VER_3_0
>

Thanks for fixing it. Please also enable this workaround for T1024, 
T2080, T1040, B4420, B4860, T4240 (and change the subject accordingly).

York

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

* [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
  2016-10-21 20:05 ` york sun
@ 2016-10-26 16:33   ` york sun
  2016-10-26 19:54     ` Hamish Martin
  0 siblings, 1 reply; 7+ messages in thread
From: york sun @ 2016-10-26 16:33 UTC (permalink / raw)
  To: u-boot

On 10/21/2016 04:37 PM, york sun wrote:
> On 10/18/2016 07:48 PM, Hamish Martin wrote:
>> This erratum is already implemented for other ARM based QorIQ
>> platforms with the Gen4 DDR controller. Port the fix to the Gen3
>> controller and enable it for T2080 and T2081.
>>
>> Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>> Signed-off-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz>
>> Cc: York Sun <york.sun@nxp.com>
>> ---
>>  arch/powerpc/cpu/mpc85xx/cmd_errata.c     |  3 +++
>>  arch/powerpc/include/asm/config_mpc85xx.h |  1 +
>>  drivers/ddr/fsl/mpc85xx_ddr_gen3.c        | 17 +++++++++++++++++
>>  3 files changed, 21 insertions(+)
>>
>> diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>> index 3b06ae42e4bc..94b6dcca96b6 100644
>> --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>> +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>> @@ -329,6 +329,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>  #ifdef CONFIG_SYS_FSL_ERRATUM_A009663
>>  	puts("Work-around for Erratum A009663 enabled\n");
>>  #endif
>> +#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
>> +	puts("Work-around for Erratum A009942 enabled\n");
>> +#endif
>>
>>  	return 0;
>>  }
>> diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
>> index 6d845e859f4a..9e1cd80e16e0 100644
>> --- a/arch/powerpc/include/asm/config_mpc85xx.h
>> +++ b/arch/powerpc/include/asm/config_mpc85xx.h
>> @@ -910,6 +910,7 @@ defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
>>  #define CONFIG_SYS_FSL_ERRATUM_A006593
>>  #define CONFIG_SYS_FSL_ERRATUM_A007186
>>  #define CONFIG_SYS_FSL_ERRATUM_A006379
>> +#define CONFIG_SYS_FSL_ERRATUM_A009942
>>  #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
>>  #define CONFIG_SYS_FSL_SFP_VER_3_0
>>
>
> Thanks for fixing it. Please also enable this workaround for T1024,
> T2080, T1040, B4420, B4860, T4240 (and change the subject accordingly).

A second thought, NXP is updating this erratum workaround. A new patch 
will be sent out. Thanks for bring it up.

York

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

* [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
  2016-10-26 16:33   ` york sun
@ 2016-10-26 19:54     ` Hamish Martin
  2016-10-26 19:56       ` york sun
  2017-01-04 18:56       ` york sun
  0 siblings, 2 replies; 7+ messages in thread
From: Hamish Martin @ 2016-10-26 19:54 UTC (permalink / raw)
  To: u-boot


On 10/27/2016 05:33 AM, york sun wrote:
> On 10/21/2016 04:37 PM, york sun wrote:
>> On 10/18/2016 07:48 PM, Hamish Martin wrote:
>>> This erratum is already implemented for other ARM based QorIQ
>>> platforms with the Gen4 DDR controller. Port the fix to the Gen3
>>> controller and enable it for T2080 and T2081.
>>>
>>> Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>>> Signed-off-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz>
>>> Cc: York Sun <york.sun@nxp.com>
>>> ---
>>>   arch/powerpc/cpu/mpc85xx/cmd_errata.c     |  3 +++
>>>   arch/powerpc/include/asm/config_mpc85xx.h |  1 +
>>>   drivers/ddr/fsl/mpc85xx_ddr_gen3.c        | 17 +++++++++++++++++
>>>   3 files changed, 21 insertions(+)
>>>
>>> diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>>> index 3b06ae42e4bc..94b6dcca96b6 100644
>>> --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>>> +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>>> @@ -329,6 +329,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>>   #ifdef CONFIG_SYS_FSL_ERRATUM_A009663
>>>   	puts("Work-around for Erratum A009663 enabled\n");
>>>   #endif
>>> +#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
>>> +	puts("Work-around for Erratum A009942 enabled\n");
>>> +#endif
>>>
>>>   	return 0;
>>>   }
>>> diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
>>> index 6d845e859f4a..9e1cd80e16e0 100644
>>> --- a/arch/powerpc/include/asm/config_mpc85xx.h
>>> +++ b/arch/powerpc/include/asm/config_mpc85xx.h
>>> @@ -910,6 +910,7 @@ defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
>>>   #define CONFIG_SYS_FSL_ERRATUM_A006593
>>>   #define CONFIG_SYS_FSL_ERRATUM_A007186
>>>   #define CONFIG_SYS_FSL_ERRATUM_A006379
>>> +#define CONFIG_SYS_FSL_ERRATUM_A009942
>>>   #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
>>>   #define CONFIG_SYS_FSL_SFP_VER_3_0
>>>
>> Thanks for fixing it. Please also enable this workaround for T1024,
>> T2080, T1040, B4420, B4860, T4240 (and change the subject accordingly).
> A second thought, NXP is updating this erratum workaround. A new patch
> will be sent out. Thanks for bring it up.
>
> York
Just to clarify, should I abandon this patch because you (or someone 
else from NXP) will provide a better, more comprehensive fix?

Thanks,
Hamish M.

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

* [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
  2016-10-26 19:54     ` Hamish Martin
@ 2016-10-26 19:56       ` york sun
  2016-11-01 10:08         ` Shengzhou Liu
  2017-01-04 18:56       ` york sun
  1 sibling, 1 reply; 7+ messages in thread
From: york sun @ 2016-10-26 19:56 UTC (permalink / raw)
  To: u-boot

On 10/26/2016 12:54 PM, Hamish Martin wrote:
>
> On 10/27/2016 05:33 AM, york sun wrote:
>> On 10/21/2016 04:37 PM, york sun wrote:
>>> On 10/18/2016 07:48 PM, Hamish Martin wrote:
>>>> This erratum is already implemented for other ARM based QorIQ
>>>> platforms with the Gen4 DDR controller. Port the fix to the Gen3
>>>> controller and enable it for T2080 and T2081.
>>>>
>>>> Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>>>> Signed-off-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz>
>>>> Cc: York Sun <york.sun@nxp.com>
>>>> ---
>>>>   arch/powerpc/cpu/mpc85xx/cmd_errata.c     |  3 +++
>>>>   arch/powerpc/include/asm/config_mpc85xx.h |  1 +
>>>>   drivers/ddr/fsl/mpc85xx_ddr_gen3.c        | 17 +++++++++++++++++
>>>>   3 files changed, 21 insertions(+)
>>>>
>>>> diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>>>> index 3b06ae42e4bc..94b6dcca96b6 100644
>>>> --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>>>> +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
>>>> @@ -329,6 +329,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>>>   #ifdef CONFIG_SYS_FSL_ERRATUM_A009663
>>>>   	puts("Work-around for Erratum A009663 enabled\n");
>>>>   #endif
>>>> +#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
>>>> +	puts("Work-around for Erratum A009942 enabled\n");
>>>> +#endif
>>>>
>>>>   	return 0;
>>>>   }
>>>> diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
>>>> index 6d845e859f4a..9e1cd80e16e0 100644
>>>> --- a/arch/powerpc/include/asm/config_mpc85xx.h
>>>> +++ b/arch/powerpc/include/asm/config_mpc85xx.h
>>>> @@ -910,6 +910,7 @@ defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
>>>>   #define CONFIG_SYS_FSL_ERRATUM_A006593
>>>>   #define CONFIG_SYS_FSL_ERRATUM_A007186
>>>>   #define CONFIG_SYS_FSL_ERRATUM_A006379
>>>> +#define CONFIG_SYS_FSL_ERRATUM_A009942
>>>>   #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
>>>>   #define CONFIG_SYS_FSL_SFP_VER_3_0
>>>>
>>> Thanks for fixing it. Please also enable this workaround for T1024,
>>> T2080, T1040, B4420, B4860, T4240 (and change the subject accordingly).
>> A second thought, NXP is updating this erratum workaround. A new patch
>> will be sent out. Thanks for bring it up.
>>
>> York
> Just to clarify, should I abandon this patch because you (or someone
> else from NXP) will provide a better, more comprehensive fix?
>

Don't abandon it before a new patch is sent.

I got a notice from our hardware team that this workaround needs a 
little change. While our DDR maintainer is on that, he may be able to 
add the workaround to DDR3 controller as well.

York

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

* [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
  2016-10-26 19:56       ` york sun
@ 2016-11-01 10:08         ` Shengzhou Liu
  0 siblings, 0 replies; 7+ messages in thread
From: Shengzhou Liu @ 2016-11-01 10:08 UTC (permalink / raw)
  To: u-boot

> -----Original Message-----
> From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of york sun
> Sent: Thursday, October 27, 2016 3:57 AM
> To: Hamish Martin <Hamish.Martin@alliedtelesis.co.nz>; u-
> boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
> I got a notice from our hardware team that this workaround needs a little
> change. While our DDR maintainer is on that, he may be able to add the workaround to DDR3 controller as well.
> 
> York

The new patches cover all DDR3/DDR4 parts. 
http://patchwork.ozlabs.org/patch/689803  
http://patchwork.ozlabs.org/patch/689802 

-Shengzhou

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

* [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942
  2016-10-26 19:54     ` Hamish Martin
  2016-10-26 19:56       ` york sun
@ 2017-01-04 18:56       ` york sun
  1 sibling, 0 replies; 7+ messages in thread
From: york sun @ 2017-01-04 18:56 UTC (permalink / raw)
  To: u-boot

On 10/26/2016 12:54 PM, Hamish Martin wrote:
>> York
> Just to clarify, should I abandon this patch because you (or someone
> else from NXP) will provide a better, more comprehensive fix?

Hamish,

New implementation of erratum workaround for A009942 is in place, see 
commit 473f1fc2 and 90101386. This patch is no longer needed.

Thanks.

York

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

end of thread, other threads:[~2017-01-04 18:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-19  0:48 [U-Boot] [PATCH] powerpc/t2080: DDR controller erratum A-009942 Hamish Martin
2016-10-21 20:05 ` york sun
2016-10-26 16:33   ` york sun
2016-10-26 19:54     ` Hamish Martin
2016-10-26 19:56       ` york sun
2016-11-01 10:08         ` Shengzhou Liu
2017-01-04 18:56       ` york sun

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.