On 01/25/2016 10:12 PM, Mingkai Hu wrote: > > >> -----Original Message----- >> From: york sun >> Sent: Saturday, January 23, 2016 1:44 AM >> To: Mingkai Hu; Mingkai Hu; u-boot@lists.denx.de >> Subject: Re: [PATCH] armv8/ls1043a: Implement workaround for erratum >> A009660 >> >> On 01/21/2016 11:50 PM, Mingkai Hu wrote: >>> >>> >>>> -----Original Message----- >>>> From: Mingkai Hu >>>> Sent: Thursday, January 21, 2016 11:18 AM >>>> To: york sun; Mingkai Hu; u-boot@lists.denx.de >>>> Subject: RE: [PATCH] armv8/ls1043a: Implement workaround for erratum >>>> A009660 >>>> >>>> >>>> >>>>> -----Original Message----- >>>>> From: york sun >>>>> Sent: Thursday, January 21, 2016 12:21 AM >>>>> To: Mingkai Hu; u-boot@lists.denx.de >>>>> Cc: Mingkai Hu >>>>> Subject: Re: [PATCH] armv8/ls1043a: Implement workaround for erratum >>>>> A009660 >>>>> >>>>> On 01/19/2016 10:44 PM, Mingkai Hu wrote: >>>>>> From: Mingkai Hu <mingkai...@nxp.com> >>>>>> >>>>>> Memory controller performance is not optimal with default internal >>>>>> target queue register value, write required value for optimal DDR >>>>>> performance. >>>>>> >>>>>> Signed-off-by: Mingkai Hu <mingkai...@nxp.com> >>>>>> --- >>>>>> arch/arm/cpu/armv8/fsl-layerscape/soc.c | 13 >> +++++++++++++ >>>>>> arch/arm/include/asm/arch-fsl-layerscape/config.h | 1 + >>>>>> 2 files changed, 14 insertions(+) >>>>>> >>>>>> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c >>>>>> b/arch/arm/cpu/armv8/fsl-layerscape/soc.c >>>>>> index 23d6b73..485f5cd 100644 >>>>>> --- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c >>>>>> +++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c >>>>>> @@ -210,6 +210,18 @@ static void erratum_a009929(void) #endif } >>>>>> >>>>>> +/* >>>>>> + * This erratum requires setting a value to eddrtqcr1 to >>>>>> + * optimal the DDR performance. >>>>>> + */ >>>>>> +static void erratum_a009660(void) >>>>>> +{ >>>>>> +#ifdef CONFIG_SYS_FSL_ERRATUM_A009660 >>>>>> + u32 *eddrtqcr1 = (void *)CONFIG_SYS_FSL_SCFG_ADDR + 0x20c; >>>>>> + out_be32(eddrtqcr1, 0x63b20042); >>>>>> +#endif >>>>>> +} >>>>>> + >>>>>> void fsl_lsch2_early_init_f(void) >>>>>> { >>>>>> struct ccsr_cci400 *cci = (struct ccsr_cci400 >>>>>> *)CONFIG_SYS_CCI400_ADDR; @@ -232,6 +244,7 @@ void >>>>>> fsl_lsch2_early_init_f(void) >>>>>> >>>>>> /* Erratum */ >>>>>> erratum_a009929(); >>>>>> + erratum_a009660(); >>>>>> } >>>>>> #endif >>>>>> >>>>>> diff --git a/arch/arm/include/asm/arch-fsl-layerscape/config.h >>>>>> b/arch/arm/include/asm/arch-fsl-layerscape/config.h >>>>>> index 49b113d..66399b2 100644 >>>>>> --- a/arch/arm/include/asm/arch-fsl-layerscape/config.h >>>>>> +++ b/arch/arm/include/asm/arch-fsl-layerscape/config.h >>>>>> @@ -167,6 +167,7 @@ >>>>>> #define GICC_BASE 0x01402000 >>>>>> >>>>>> #define CONFIG_SYS_FSL_ERRATUM_A009929 >>>>>> +#define CONFIG_SYS_FSL_ERRATUM_A009660 >>>>>> #else >>>>>> #error SoC not defined >>>>>> #endif >>>>>> >>>>> >>>>> NACK. >>>>> >>>>> Erratum A009660 is cancelled. The workaround is integrated into >> A008514. >>>>> Please revise workaround for A008514. Besides, you are using ARMv7 >>>>> offset for ARMv8. >>>>> Please check if this workaround applies to LS2 SoCs. While you are >>>>> on it, please add a comment to LS1 workaround with the word A008514 >>>>> so we can grep it. >>>>> >>>> >>>> Hi York, >>>> >>>> I discussed with design team and got the erratum in LS1043A CE before >>>> preparing the patch. The value (0x63b20042) is the same one described >>>> in >>>> A008514 of LS1021A and the register offset of LS1043A is same with >>>> the one used for LS1021A which is in the SCFG space. >>>> >>>> I will double check with the design team about if the erraum number >>>> is still A009660 and keep you in the loop. >>>> >>>> For LS2, I got the A008514 in the LS2085A CE, but 1. The value is >>>> 63b2_0002 which is different from the value used on ls1043 platform. >>>> 2. The address is in DCFG space. >>>> 3. I did not get the A008514 in the LS2080A CE (RevD). >>>> >>>> So it's better to confirm with design team about the value used and >>>> the consistence between LS2085A and LS2080A. >>>> >>> York, >>> >>> As discussed with design team, the erratum A009660 is the correct one >> and the value/offset is also correct. >>> >>> Do you prefer to submit a new patch to fix ls2085 or fix it on this >> patch? >>> >> >> Mingkai, >> >> If the erratum A009660 is republished, and A008514 is updated for >> LS2085/LS1021, you can keep this patch, but adding a check to make sure >> they are not both enabled. > > Different platform uses different Errata definition, so they are not both > enabled.
True. But if by mistake both errata are enabled, it will be really hard to troubleshoot. It costs almost nothing to check if both macros are defined. > >> Please also update workaround for A008514 to >> reflect the latest value. >> > The value for LS2 A008514 is correct. > >> Please also put a comment for the offset of eddrtqcr1. It is really >> confusing when different offset is used in the same file for LS2080 and >> LS1043. >> > Sure. I will add it. Please send the update. York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot