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