mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-28 08:08:45 +00:00

The patch 7b56928
unified the FWU mechanism on FVP and Juno
platforms due to issues with MCC firmware not preserving the
NVFLAGS. With MCCv150 firmware, this issue is resolved. Also
writing to the NOR flash while executing from the same flash
in Bypass mode had some stability issues. Hence, since the
MCC firmware issue is resolved, this patch reverts to the
NVFLAGS mechanism to detect FWU. Also, with the introduction
of SDS (Shared Data Structure) by the SCP, the reset syndrome
needs to queried from the appropriate SDS field.
Change-Id: If9c08f1afaaa4fcf197f3186887068103855f554
Signed-off-by: Sathees Balya <sathees.balya@arm.com>
Signed-off-by: Soby Mathew <Soby.Mathew@arm.com>
53 lines
995 B
C
53 lines
995 B
C
/*
|
|
* Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <arch_helpers.h>
|
|
#include <console.h>
|
|
#include <debug.h>
|
|
#include <errno.h>
|
|
#include <norflash.h>
|
|
#include <platform.h>
|
|
#include <platform_def.h>
|
|
#include <stdint.h>
|
|
|
|
#pragma weak plat_arm_error_handler
|
|
|
|
/*
|
|
* ARM common implementation for error handler
|
|
*/
|
|
void __dead2 plat_arm_error_handler(int err)
|
|
{
|
|
int ret;
|
|
|
|
switch (err) {
|
|
case -ENOENT:
|
|
case -EAUTH:
|
|
/* Image load or authentication error. Erase the ToC */
|
|
INFO("Erasing FIP ToC from flash...\n");
|
|
nor_unlock(PLAT_ARM_FIP_BASE);
|
|
ret = nor_word_program(PLAT_ARM_FIP_BASE, 0);
|
|
if (ret != 0) {
|
|
ERROR("Cannot erase ToC\n");
|
|
} else {
|
|
INFO("Done\n");
|
|
}
|
|
break;
|
|
default:
|
|
/* Unexpected error */
|
|
break;
|
|
}
|
|
|
|
(void)console_flush();
|
|
|
|
/* Loop until the watchdog resets the system */
|
|
for (;;)
|
|
wfi();
|
|
}
|
|
|
|
void __dead2 plat_error_handler(int err)
|
|
{
|
|
plat_arm_error_handler(err);
|
|
}
|