xref: /rk3399_ARM-atf/include/drivers/fwu/fwu_metadata.h (revision e106a78ef00df4c70a1594a89520af07b939cd92)
15357f83dSManish V Badarkhe /*
25357f83dSManish V Badarkhe  * Copyright (c) 2021, Arm Limited. All rights reserved.
35357f83dSManish V Badarkhe  *
45357f83dSManish V Badarkhe  * SPDX-License-Identifier: BSD-3-Clause
55357f83dSManish V Badarkhe  *
65357f83dSManish V Badarkhe  * FWU metadata information as per the specification section 4.1:
7*e106a78eSSughosh Ganu  * https://developer.arm.com/documentation/den0118/latest/
85357f83dSManish V Badarkhe  *
95357f83dSManish V Badarkhe  */
105357f83dSManish V Badarkhe 
115357f83dSManish V Badarkhe #ifndef FWU_METADATA_H
125357f83dSManish V Badarkhe #define FWU_METADATA_H
135357f83dSManish V Badarkhe 
145357f83dSManish V Badarkhe #include <stdint.h>
155357f83dSManish V Badarkhe #include <tools_share/uuid.h>
165357f83dSManish V Badarkhe 
175357f83dSManish V Badarkhe /* Properties of image in a bank */
185357f83dSManish V Badarkhe struct fwu_image_properties {
195357f83dSManish V Badarkhe 
205357f83dSManish V Badarkhe 	/* UUID of the image in this bank */
215357f83dSManish V Badarkhe 	uuid_t img_uuid;
225357f83dSManish V Badarkhe 
235357f83dSManish V Badarkhe 	/* [0]: bit describing the image acceptance status –
245357f83dSManish V Badarkhe 	 *      1 means the image is accepted
255357f83dSManish V Badarkhe 	 * [31:1]: MBZ
265357f83dSManish V Badarkhe 	 */
275357f83dSManish V Badarkhe 	uint32_t accepted;
285357f83dSManish V Badarkhe 
295357f83dSManish V Badarkhe 	/* reserved (MBZ) */
305357f83dSManish V Badarkhe 	uint32_t reserved;
315357f83dSManish V Badarkhe 
325357f83dSManish V Badarkhe } __packed;
335357f83dSManish V Badarkhe 
345357f83dSManish V Badarkhe /* Image entry information */
355357f83dSManish V Badarkhe struct fwu_image_entry {
365357f83dSManish V Badarkhe 
375357f83dSManish V Badarkhe 	/* UUID identifying the image type */
385357f83dSManish V Badarkhe 	uuid_t img_type_uuid;
395357f83dSManish V Badarkhe 
405357f83dSManish V Badarkhe 	/* UUID of the storage volume where the image is located */
415357f83dSManish V Badarkhe 	uuid_t location_uuid;
425357f83dSManish V Badarkhe 
435357f83dSManish V Badarkhe 	/* Properties of images with img_type_uuid in the different FW banks */
445357f83dSManish V Badarkhe 	struct fwu_image_properties img_props[NR_OF_FW_BANKS];
455357f83dSManish V Badarkhe 
465357f83dSManish V Badarkhe } __packed;
475357f83dSManish V Badarkhe 
485357f83dSManish V Badarkhe /*
495357f83dSManish V Badarkhe  * FWU metadata filled by the updater and consumed by TF-A for
505357f83dSManish V Badarkhe  * various purposes as below:
515357f83dSManish V Badarkhe  * 1. Get active FW bank.
525357f83dSManish V Badarkhe  * 2. Rollback to previous working FW bank.
535357f83dSManish V Badarkhe  * 3. Get properties of all images present in all banks.
545357f83dSManish V Badarkhe  */
555357f83dSManish V Badarkhe struct fwu_metadata {
565357f83dSManish V Badarkhe 
575357f83dSManish V Badarkhe 	/* Metadata CRC value */
585357f83dSManish V Badarkhe 	uint32_t crc_32;
595357f83dSManish V Badarkhe 
605357f83dSManish V Badarkhe 	/* Metadata version */
615357f83dSManish V Badarkhe 	uint32_t version;
625357f83dSManish V Badarkhe 
635357f83dSManish V Badarkhe 	/* Bank index with which device boots */
645357f83dSManish V Badarkhe 	uint32_t active_index;
655357f83dSManish V Badarkhe 
665357f83dSManish V Badarkhe 	/* Previous bank index with which device booted successfully */
675357f83dSManish V Badarkhe 	uint32_t previous_active_index;
685357f83dSManish V Badarkhe 
695357f83dSManish V Badarkhe 	/* Image entry information */
705357f83dSManish V Badarkhe 	struct fwu_image_entry img_entry[NR_OF_IMAGES_IN_FW_BANK];
715357f83dSManish V Badarkhe 
725357f83dSManish V Badarkhe } __packed;
735357f83dSManish V Badarkhe 
745357f83dSManish V Badarkhe #endif /* FWU_METADATA_H */
75