[U-Boot] [PATCH v2 2/2] ARM: mach-mvebu: handle fall-back to UART boot
Sean Nyekjær
sean.nyekjaer at prevas.dk
Mon Aug 27 07:41:16 UTC 2018
CC'ing someone with some hardware to test :-)
On 17/08/2018 11.42, Sean Nyekjær wrote:
>
>
> On 17/08/2018 10.47, Chris Packham wrote:
>> The bootROM in the Armada-38x (and similar) SoC has two modes for UART
>> boot. The first is when the normal boot media is blank (or otherwise
>> missing the kwb header). The second is when the boot sequence has been
>> interrupted with the magic byte sequence on the UART lines.
>>
>> In the first mode the bootROM routine and error code register will
>> indicate that there was an error booting from the configured media in
>> bits 7:0. In the second mode there is no error to indicate but the boot
>> source is provided via bits 31:28.
>>
>> Handle both situations so that kwboot can be used for both boot
>> strapping a blank board and for intercepting a regular boot sequence.
>>
>> Signed-off-by: Chris Packham <judge.packham at gmail.com>
> Signed-off-by: Sean Nyekjaer <sean.nyekjaer at prevas.dk>
>> ---
>> I think this probably applies to more than just the A38X but I've been
>> conservative in restricting this for now. If other Marvell SoCs are
>> found to have the same behaviour we can extend this to cover them.
>>
>> Changes in v2:
>> - new
>>
>> arch/arm/mach-mvebu/include/mach/soc.h | 2 ++
>> arch/arm/mach-mvebu/spl.c | 10 ++++++++++
>> 2 files changed, 12 insertions(+)
>>
>> diff --git a/arch/arm/mach-mvebu/include/mach/soc.h
>> b/arch/arm/mach-mvebu/include/mach/soc.h
>> index 660dd148abc5..6e2e14efe0b7 100644
>> --- a/arch/arm/mach-mvebu/include/mach/soc.h
>> +++ b/arch/arm/mach-mvebu/include/mach/soc.h
>> @@ -114,6 +114,8 @@
>> #define BOOTROM_ERR_MODE_OFFS 28
>> #define BOOTROM_ERR_MODE_MASK (0xf << BOOTROM_ERR_MODE_OFFS)
>> #define BOOTROM_ERR_MODE_UART 0x6
>> +#define BOOTROM_ERR_CODE_OFFS 0
>> +#define BOOTROM_ERR_CODE_MASK (0xf << BOOTROM_ERR_CODE_OFFS)
>> #if defined(CONFIG_ARMADA_375)
>> /* SAR values for Armada 375 */
>> diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
>> index 4c3933b8354d..9dd7c84b6874 100644
>> --- a/arch/arm/mach-mvebu/spl.c
>> +++ b/arch/arm/mach-mvebu/spl.c
>> @@ -28,6 +28,16 @@ static u32 get_boot_device(void)
>> if (boot_device == BOOTROM_ERR_MODE_UART)
>> return BOOT_DEVICE_UART;
>> +#ifdef CONFIG_ARMADA_38X
>> + /*
>> + * If the bootrom error code contains any other than zeros it's an
>> + * error condition and the bootROM has fallen back to UART boot
>> + */
>> + boot_device = (val & BOOTROM_ERR_CODE_MASK) >>
>> BOOTROM_ERR_CODE_OFFS;
>> + if (boot_device)
>> + return BOOT_DEVICE_UART;
>> +#endif
>> +
>> /*
>> * Now check the SAR register for the strapped boot-device
>> */
>>
More information about the U-Boot
mailing list