blob: 5b1373f64fea60ccbf43767157ad1041b15fd808 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/*
* Copyright (c) 2018, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <arch_helpers.h>
#include <bl1.h>
#include <debug.h>
#include <firmware_image_package.h>
#include <fwu_nvm.h>
#include <platform.h>
#include <platform_def.h>
extern const char version_string[];
void ns_bl2u_main(void)
{
smc_args fwu_params = {0};
smc_ret_values fwu_result = {0};
NOTICE("NS_BL2U: %s\n", version_string);
NOTICE("NS_BL2U: %s\n", build_message);
tftf_platform_setup();
#if FWU_BL_TEST
unsigned int toc_header;
STATUS status = fwu_nvm_read(0, &toc_header, 4);
if (status != STATUS_SUCCESS) {
ERROR("NS_BL2U: Failed to read NVM\n");
panic();
}
/* Update the TOC if found invalid. */
if (toc_header != TOC_HEADER_NAME) {
toc_header = TOC_HEADER_NAME;
status = fwu_nvm_write(0, &toc_header, 4);
if (status != STATUS_SUCCESS) {
ERROR("NS_BL2U: Failed to update TOC value\n");
panic();
}
INFO("NS_BL2U: Updated TOC value\n");
}
#endif
/* Update the FIP image. */
if (fwu_update_fip(FIP_BKP_ADDRESS) != STATUS_SUCCESS) {
ERROR("NS_BL2U: Firmware Image Update Failed\n");
panic();
}
/* Call FWU_SMC_UPDATE_DONE to indicate image update done. */
INFO("NS_BL2U: Calling FWU_SMC_UPDATE_DONE\n");
fwu_params.fid = FWU_SMC_UPDATE_DONE;
fwu_result = tftf_smc(&fwu_params);
ERROR("NS_BL2U: Unexpected return from FWU process (%d)\n",
(int)fwu_result.ret0);
panic();
}
|