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 | } EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER;
|
---|
83 |
|
---|
84 | #pragma pack()
|
---|
85 |
|
---|
86 |
|
---|
87 | #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER_INIT_VERSION 0x00000001
|
---|
88 | #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION 0x00000002
|
---|
89 |
|
---|
90 | extern EFI_GUID gEfiFmpCapsuleGuid;
|
---|
91 |
|
---|
92 | #endif
|
---|