1 /** @file 2 Guid & data structure used for Delivering Capsules Containing Updates to Firmware 3 Management Protocol 4 5 Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR> 6 SPDX-License-Identifier: BSD-2-Clause-Patent 7 8 @par Revision Reference: 9 GUIDs defined in UEFI 2.4 spec. 10 11 **/ 12 13 14 #ifndef _FMP_CAPSULE_GUID_H__ 15 #define _FMP_CAPSULE_GUID_H__ 16 17 // 18 // This is the GUID of the capsule for Firmware Management Protocol. 19 // 20 #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID \ 21 { \ 22 0x6dcbd5ed, 0xe82d, 0x4c44, {0xbd, 0xa1, 0x71, 0x94, 0x19, 0x9a, 0xd9, 0x2a } \ 23 } 24 25 #pragma pack(1) 26 27 typedef struct { 28 UINT32 Version; 29 30 /// 31 /// The number of drivers included in the capsule and the number of corresponding 32 /// offsets stored in ItemOffsetList array. 33 /// 34 UINT16 EmbeddedDriverCount; 35 36 /// 37 /// The number of payload items included in the capsule and the number of 38 /// corresponding offsets stored in the ItemOffsetList array. 39 /// 40 UINT16 PayloadItemCount; 41 42 /// 43 /// Variable length array of dimension [EmbeddedDriverCount + PayloadItemCount] 44 /// containing offsets of each of the drivers and payload items contained within the capsule 45 /// 46 // UINT64 ItemOffsetList[]; 47 } EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER; 48 49 typedef struct { 50 UINT32 Version; 51 52 /// 53 /// Used to identify device firmware targeted by this update. This guid is matched by 54 /// system firmware against ImageTypeId field within a EFI_FIRMWARE_IMAGE_DESCRIPTOR 55 /// 56 EFI_GUID UpdateImageTypeId; 57 58 /// 59 /// Passed as ImageIndex in call to EFI_FIRMWARE_MANAGEMENT_PROTOCOL.SetImage() 60 /// 61 UINT8 UpdateImageIndex; 62 UINT8 reserved_bytes[3]; 63 64 /// 65 /// Size of the binary update image which immediately follows this structure 66 /// 67 UINT32 UpdateImageSize; 68 69 /// 70 /// Size of the VendorCode bytes which optionally immediately follow binary update image in the capsule 71 /// 72 UINT32 UpdateVendorCodeSize; 73 74 /// 75 /// The HardwareInstance to target with this update. If value is zero it means match all 76 /// HardwareInstances. This field allows update software to target only a single device in 77 /// cases where there are more than one device with the same ImageTypeId GUID. 78 /// This header is outside the signed data of the Authentication Info structure and 79 /// therefore can be modified without changing the Auth data. 80 /// 81 UINT64 UpdateHardwareInstance; 82 83 /// 84 /// A 64-bit bitmask that determines what sections are added to the payload. 85 /// #define CAPSULE_SUPPORT_AUTHENTICATION 0x0000000000000001 86 /// #define CAPSULE_SUPPORT_DEPENDENCY 0x0000000000000002 87 /// 88 UINT64 ImageCapsuleSupport; 89 } EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER; 90 91 #pragma pack() 92 93 94 #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER_INIT_VERSION 0x00000001 95 #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION 0x00000003 96 #define CAPSULE_SUPPORT_AUTHENTICATION 0x0000000000000001 97 #define CAPSULE_SUPPORT_DEPENDENCY 0x0000000000000002 98 99 extern EFI_GUID gEfiFmpCapsuleGuid; 100 101 #endif 102