]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/FirmwareManagement.h
1. add EFI Firmware Management protocol definition in MdePkg.
[mirror_edk2.git] / MdePkg / Include / Protocol / FirmwareManagement.h
CommitLineData
252b9c7a 1/** @file\r
2 UEFI Firmware Management Protocol definition\r
3 Firmware Management Protocol provides an abstraction for device to provide firmware \r
4 management support. The base requirements for managing device firmware images include \r
5 identifying firmware image revision level and programming the image into the device.\r
6\r
7 GetImageInfo() is the only required function. GetImage(), SetImage(), \r
8 CheckImage(), GetPackageInfo(), and SetPackageInfo() shall return \r
9 EFI_UNSUPPORTED if not supported by the driver.\r
10 \r
11 Copyright (c) 2009, Intel Corporation \r
12 All rights reserved. This program and the accompanying materials \r
13 are licensed and made available under the terms and conditions of the BSD License \r
14 which accompanies this distribution. The full text of the license may be found at \r
15 http://opensource.org/licenses/bsd-license.php \r
16\r
17 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
18 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
19\r
20 @par Revision Reference: \r
21 This Protocol is introduced in UEFI Specification 2.3 \r
22\r
23**/\r
24\r
25#ifndef __EFI_FIRMWARE_MANAGEMENT_PROTOCOL_H__\r
26#define __EFI_FIRMWARE_MANAGEMENT_PROTOCOL_H__\r
27\r
28\r
29#define EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GUID \\r
30 { \\r
31 0x86c77a67, 0xb97, 0x4633, {0xa1, 0x87, 0x49, 0x10, 0x4d, 0x6, 0x85, 0xc7 } \\r
32 }\r
33\r
34typedef struct _EFI_FIRMWARE_MANAGEMENT_PROTOCOL EFI_FIRMWARE_MANAGEMENT_PROTOCOL;\r
35\r
36///\r
37/// EFI_FIRMWARE_IMAGE_DESCRIPTOR\r
38///\r
39typedef struct {\r
40 /// \r
41 /// A unique number identifying the firmware image within the device. The number is \r
42 /// between 1 and DescriptorCount.\r
43 /// \r
44 UINT8 ImageIndex;\r
45 ///\r
46 /// A unique number identifying the firmware image type. \r
47 /// \r
48 EFI_GUID ImageTypeId;\r
49 /// \r
50 /// A unique number identifying the firmware image. \r
51 /// \r
52 UINT64 ImageId;\r
53 /// \r
54 /// A pointer to a null-terminated Unicode string representing the firmware image name. \r
55 /// \r
56 CHAR16 *ImageIdName;\r
57 /// \r
58 /// Identifies the version of the device firmware. The format is vendor specific and new \r
59 /// version must have a greater value than an old version.\r
60 /// \r
61 UINT32 Version;\r
62 /// \r
63 /// A pointer to a null-terminated Unicode string representing the firmware image version name.\r
64 /// \r
65 CHAR16 *VersionName;\r
66 /// \r
67 /// Size of the image in bytes. If size=0, then only ImageIndex and ImageTypeId are valid.\r
68 /// \r
69 UINTN Size;\r
70 /// \r
71 /// Image attributes that are supported by this device. See 'Image Attribute Definitions' \r
72 /// for possible returned values of this parameter. A value of 1 indicates the attribute is \r
73 /// supported and the current setting value is indicated in AttributesSetting. A \r
74 /// value of 0 indicates the attribute is not supported and the current setting value in \r
75 /// AttributesSetting is meaningless.\r
76 /// \r
77 UINT64 AttributesSupported;\r
78 /// \r
79 /// Image attributes. See 'Image Attribute Definitions' for possible returned values of \r
80 /// this parameter.\r
81 /// \r
82 UINT64 AttributesSetting;\r
83 /// \r
84 /// Image compatibilities. See 'Image Compatibility Definitions' for possible returned \r
85 /// values of this parameter.\r
86 /// \r
87 UINT64 Compatibilities;\r
88} EFI_FIRMWARE_IMAGE_DESCRIPTOR;\r
89\r
90\r
91//\r
92// Image Attribute Definitions\r
93//\r
94///\r
95/// The attribute IMAGE_ATTRIBUTE_IMAGE_UPDATABLE indicates this device supports firmware \r
96/// image update.\r
97///\r
98#define IMAGE_ATTRIBUTE_IMAGE_UPDATABLE 0x0000000000000001\r
99///\r
100/// The attribute IMAGE_ATTRIBUTE_RESET_REQUIRED indicates a reset of the device is required \r
101/// for the new firmware image to take effect after a firmware update. The device is the device hosting \r
102/// the firmware image.\r
103/// \r
104#define IMAGE_ATTRIBUTE_RESET_REQUIRED 0x0000000000000002\r
105///\r
106/// The attribute IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED indicates authentication is \r
107/// required to perform the following image operations: GetImage(), SetImage(), and \r
108/// CheckImage(). See 'Image Attribute - Authentication'.\r
109/// \r
110#define IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED 0x0000000000000004\r
111///\r
112/// The attribute IMAGE_ATTRIBUTE_IN_USE indicates the current state of the firmware image. \r
113/// This distinguishes firmware images in a device that supports redundant images. \r
114/// \r
115#define IMAGE_ATTRIBUTE_IN_USE 0x0000000000000008\r
116\r
117\r
118//\r
119// Image Compatibility Definitions\r
120//\r
121/// Values from 0x0000000000000002 thru 0x000000000000FFFF are reserved for future assignments.\r
122/// Values from 0x0000000000010000 thru 0xFFFFFFFFFFFFFFFF are used by firmware vendor for \r
123/// compatibility check.\r
124///\r
125#define IMAGE_COMPATIBILITY_CHECK_SUPPORTED 0x0000000000000001\r
126\r
127///\r
128/// Descriptor Version\r
129///\r
130#define EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION 1\r
131\r
132\r
133///\r
134