blob: 2e88de5ec8142ee39ee4f88142472330526f24d4 [file] [log] [blame]
Manish V Badarkhe2bb45ff2021-03-16 10:01:27 +00001/*
2 * Copyright (c) 2021, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 * FWU metadata information as per the specification section 4.1:
7 * https://developer.arm.com/documentation/den0118/a/
8 *
9 */
10
11#ifndef FWU_METADATA_H
12#define FWU_METADATA_H
13
14#include <stdint.h>
15#include <tools_share/uuid.h>
16
17/* Properties of image in a bank */
18struct fwu_image_properties {
19
20 /* UUID of the image in this bank */
21 uuid_t img_uuid;
22
23 /* [0]: bit describing the image acceptance status –
24 * 1 means the image is accepted
25 * [31:1]: MBZ
26 */
27 uint32_t accepted;
28
29 /* reserved (MBZ) */
30 uint32_t reserved;
31
32} __packed;
33
34/* Image entry information */
35struct fwu_image_entry {
36
37 /* UUID identifying the image type */
38 uuid_t img_type_uuid;
39
40 /* UUID of the storage volume where the image is located */
41 uuid_t location_uuid;
42
43 /* Properties of images with img_type_uuid in the different FW banks */
44 struct fwu_image_properties img_props[NR_OF_FW_BANKS];
45
46} __packed;
47
48/*
49 * FWU metadata filled by the updater and consumed by TF-A for
50 * various purposes as below:
51 * 1. Get active FW bank.
52 * 2. Rollback to previous working FW bank.
53 * 3. Get properties of all images present in all banks.
54 */
55struct fwu_metadata {
56
57 /* Metadata CRC value */
58 uint32_t crc_32;
59
60 /* Metadata version */
61 uint32_t version;
62
63 /* Bank index with which device boots */
64 uint32_t active_index;
65
66 /* Previous bank index with which device booted successfully */
67 uint32_t previous_active_index;
68
69 /* Image entry information */
70 struct fwu_image_entry img_entry[NR_OF_IMAGES_IN_FW_BANK];
71
72} __packed;
73
74#endif /* FWU_METADATA_H */