mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-29 16:48:59 +00:00

This way it can be reused by other platforms if needed. Note that this driver is designed to work with the Versatile Express NOR flash of Juno and FVP. In said platforms, the memory is organized as an interleaved memory of two chips with a 16 bit word. Any platform that wishes to reuse it with a different configuration will need to modify the driver so that it is more generic. Change-Id: Ic721758425864e0cf42b7b9b04bf0d9513b6022e Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
53 lines
996 B
C
53 lines
996 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 <platform.h>
|
|
#include <platform_def.h>
|
|
#include <stdint.h>
|
|
#include <v2m_flash.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);
|
|
}
|