[U-Boot] [PATCH] ARM: mx6ul: Apply ERR011115 errata workaround

Marcin Niestroj m.niestroj at grinn-global.com
Fri Jul 20 15:46:59 UTC 2018


Hi,

On 20.07.2018 16:29, Sébastien Szymanski wrote:
> Hi,
> 
> On 07/19/2018 01:37 PM, Marcin Niestroj wrote:
>> ERR011115 in IMX6UL errata says to use OCRAM memory above
>> 0x908000 (instead of 0x907000) for silicon revision 1.2 shipped
>> prior date code 1740.
>>
>> As we cannot check affected targets in runtime, apply that
>> workaround by default for all IMX6UL platforms. Leave possibility
>> to disable that workaround for non-affected targets, so more OCRAM
>> area can be used by SPL (e.g. for featureful SPL images).
>>
>> Signed-off-by: Marcin Niestroj <m.niestroj at grinn-global.com>
>> ---
>>   arch/arm/mach-imx/mx6/Kconfig |  9 +++++++++
>>   include/configs/imx6_spl.h    | 11 +++++++++--
>>   2 files changed, 18 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-imx/mx6/Kconfig b/arch/arm/mach-imx/mx6/Kconfig
>> index 521fad74b5..61708a0526 100644
>> --- a/arch/arm/mach-imx/mx6/Kconfig
>> +++ b/arch/arm/mach-imx/mx6/Kconfig
>> @@ -58,6 +58,15 @@ config MX6UL
>>   	select SYSCOUNTER_TIMER
>>   	bool
>>   
>> +config MX6UL_ERR011115
>> +	bool "Workaround for ERR011115 in IMX6UL Errata"
>> +	depends on MX6UL
>> +	default MX6UL
>> +	help
>> +	  Say N here if you are sure that your platform is not affected
>> +	  with ERR011115. Doing so might be useful in case of featureful
>> +	  (big) SPL images.
>> +
>>   config MX6UL_LITESOM
>>   	bool
>>   	select MX6UL
>> diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h
>> index 720ff045a7..42d12c7503 100644
>> --- a/include/configs/imx6_spl.h
>> +++ b/include/configs/imx6_spl.h
>> @@ -19,16 +19,23 @@
>>    *    which consists of a 4K header in front of us that contains the IVT, DCD
>>    *    and some padding thus 'our' max size is really 0x00908000 - 0x00918000
>>    *    or 64KB
>> + *  - Use 0x00909000 as start of OCRAM Free Area as a workaround for
>> + *    ERR011115 in IMX6UL Errata
>>    */
>> +#ifdef CONFIG_MX6UL_ERR011115
>> +#define CONFIG_SPL_TEXT_BASE		0x00909000
>> +#else
>>   #define CONFIG_SPL_TEXT_BASE		0x00908000
>> -#define CONFIG_SPL_MAX_SIZE		0x10000
>> +#endif
>> +
>> +#define CONFIG_SPL_MAX_SIZE		(0x00918000 - CONFIG_SPL_TEXT_BASE)
>>   #define CONFIG_SPL_STACK		0x0091FFB8
>>   /*
>>    * Pad SPL to 68KB (4KB header + 64KB max size). This allows to write the
>>    * SPL/U-Boot combination generated with u-boot-with-spl.imx directly to a
>>    * boot media (given that boot media specific offset is configured properly).
>>    */
>> -#define CONFIG_SPL_PAD_TO		0x11000
>> +#define CONFIG_SPL_PAD_TO		(CONFIG_SPL_MAX_SIZE + 0x1000)
> 
> I got the following error when building the u-boot-with-spl.imx file:
> 
> /home/sszy/development/armadeus-git-opos6ul/buildroot/output/host/usr/bin/arm-linux-gnueabihf-objcopy:
> --pad-to: bad number: (CONFIG_SPL_MAX_SIZE + 0x1000)
> 
> Anyway, this is wrong and will break the u-boot-with-spl.imx for MMC/SD
> boot device.
> 
> The default offset for the U-Boot image on MMC/SD boot device is 69KB
> (see SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR) so I think CONFIG_SPL_PAD_TO
> should always be 0x11000 (== 68KB).

Thanks for catching this! You are right, CONFIG_SPL_PAD_TO is used
during u-boot with spl single image generation (always with objcopy
+ cat). Using 0x11000 value fixes build and makes u-boot-with-spl.imx
successfully booting SPL as well as u-boot.

I will post new patch with this issue fixed soon.

> 
> Regards,
> 
>>   
>>   /* MMC support */
>>   #if defined(CONFIG_SPL_MMC_SUPPORT)
>>
> 
> 

-- 
Marcin Niestroj


More information about the U-Boot mailing list