xref: /rk3399_ARM-atf/plat/arm/board/fvp/fvp_err.c (revision 73a9605197ba04aaf02d436a2a4ad56e695b426c)
1 /*
2  * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <arch_helpers.h>
8 #include <board_arm_def.h>
9 #include <debug.h>
10 #include <errno.h>
11 #include <norflash.h>
12 #include <platform.h>
13 #include <stdint.h>
14 
15 /*
16  * FVP error handler
17  */
18 void plat_error_handler(int err)
19 {
20 	int ret;
21 
22 	switch (err) {
23 	case -ENOENT:
24 	case -EAUTH:
25 		/* Image load or authentication error. Erase the ToC */
26 		INFO("Erasing FIP ToC from flash...\n");
27 		nor_unlock(PLAT_ARM_FIP_BASE);
28 		ret = nor_word_program(PLAT_ARM_FIP_BASE, 0);
29 		if (ret) {
30 			ERROR("Cannot erase ToC\n");
31 		} else {
32 			INFO("Done\n");
33 		}
34 		break;
35 	default:
36 		/* Unexpected error */
37 		break;
38 	}
39 
40 	/* Loop until the watchdog resets the system */
41 	for (;;)
42 		wfi();
43 }
44