]>
Commit | Line | Data |
---|---|---|
2ca32f8d HW |
1 | /** @file\r |
2 | Guid & data structure used for EFI System Resource Table (ESRT)\r | |
3 | \r | |
48997fe4 | 4 | Copyright (c) 2015 - 2020, Intel Corporation. All rights reserved.<BR>\r |
9344f092 | 5 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
2ca32f8d HW |
6 | \r |
7 | @par Revision Reference:\r | |
8 | GUIDs defined in UEFI 2.5 spec.\r | |
9 | \r | |
10 | **/\r | |
11 | \r | |
12 | \r | |
13 | #ifndef _SYSTEM_RESOURCE_TABLE_H__\r | |
14 | #define _SYSTEM_RESOURCE_TABLE_H__\r | |
15 | \r | |
16 | #define EFI_SYSTEM_RESOURCE_TABLE_GUID \\r | |
17 | { \\r | |
18 | 0xb122a263, 0x3661, 0x4f68, {0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80 } \\r | |
19 | }\r | |
20 | \r | |
21 | ///\r | |
22 | /// Current Entry Version\r | |
23 | ///\r | |
24 | #define EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION 1\r | |
25 | \r | |
26 | ///\r | |
27 | /// Firmware Type Definitions\r | |
28 | ///\r | |
29 | #define ESRT_FW_TYPE_UNKNOWN 0x00000000\r | |
30 | #define ESRT_FW_TYPE_SYSTEMFIRMWARE 0x00000001\r | |
31 | #define ESRT_FW_TYPE_DEVICEFIRMWARE 0x00000002\r | |
32 | #define ESRT_FW_TYPE_UEFIDRIVER 0x00000003\r | |
33 | \r | |
34 | ///\r | |
35 | /// Last Attempt Status Values\r | |
36 | ///\r | |
48997fe4 WX |
37 | #define LAST_ATTEMPT_STATUS_SUCCESS 0x00000000\r |
38 | #define LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL 0x00000001\r | |
39 | #define LAST_ATTEMPT_STATUS_ERROR_INSUFFICIENT_RESOURCES 0x00000002\r | |
40 | #define LAST_ATTEMPT_STATUS_ERROR_INCORRECT_VERSION 0x00000003\r | |
41 | #define LAST_ATTEMPT_STATUS_ERROR_INVALID_FORMAT 0x00000004\r | |
42 | #define LAST_ATTEMPT_STATUS_ERROR_AUTH_ERROR 0x00000005\r | |
43 | #define LAST_ATTEMPT_STATUS_ERROR_PWR_EVT_AC 0x00000006\r | |
44 | #define LAST_ATTEMPT_STATUS_ERROR_PWR_EVT_BATT 0x00000007\r | |
45 | #define LAST_ATTEMPT_STATUS_ERROR_UNSATISFIED_DEPENDENCIES 0x00000008\r | |
2ca32f8d HW |
46 | \r |
47 | typedef struct {\r | |
48 | ///\r | |
49 | /// The firmware class field contains a GUID that identifies a firmware component\r | |
50 | /// that can be updated via UpdateCapsule(). This GUID must be unique within all\r | |
51 | /// entries of the ESRT.\r | |
52 | ///\r | |
53 | EFI_GUID FwClass;\r | |
54 | ///\r | |
55 | /// Identifies the type of firmware resource.\r | |
56 | ///\r | |
57 | UINT32 FwType;\r | |
58 | ///\r | |
59 | /// The firmware version field represents the current version of the firmware\r | |
60 | /// resource, value must always increase as a larger number represents a newer\r | |
61 | /// version.\r | |
62 | ///\r | |
63 | UINT32 FwVersion;\r | |
64 | ///\r | |
65 | /// The lowest firmware resource version to which a firmware resource can be\r | |
66 | /// rolled back for the given system/device. Generally this is used to protect\r | |
67 | /// against known and fixed security issues.\r | |
68 | ///\r | |
69 | UINT32 LowestSupportedFwVersion;\r | |
70 | ///\r | |
71 | /// The capsule flags field contains the CapsuleGuid flags (bits 0- 15) as defined\r | |
72 | /// in the EFI_CAPSULE_HEADER that will be set in the capsule header.\r | |
73 | ///\r | |
74 | UINT32 CapsuleFlags;\r | |
75 | ///\r | |
76 | /// The last attempt version field describes the last firmware version for which\r | |
77 | /// an update was attempted (uses the same format as Firmware Version).\r | |
78 | /// Last Attempt Version is updated each time an UpdateCapsule() is attempted for\r | |
79 | /// an ESRT entry and is preserved across reboots (non-volatile). However, in\r | |
80 | /// cases where the attempt version is not recorded due to limitations in the\r | |
81 | /// update process, the field shall set to zero after a failed update. Similarly,\r | |
82 | /// in the case of a removable device, this value is set to 0 in cases where the\r | |
83 | /// device has not been updated since being added to the system.\r | |
84 | ///\r | |
85 | UINT32 LastAttemptVersion;\r | |
86 | ///\r | |
87 | /// The last attempt status field describes the result of the last firmware update\r | |
88 | /// attempt for the firmware resource entry.\r | |
89 | /// LastAttemptStatus is updated each time an UpdateCapsule() is attempted for an\r | |
90 | /// ESRT entry and is preserved across reboots (non-volatile).\r | |
91 | /// If a firmware update has never been attempted or is unknown, for example after\r | |
92 | /// fresh insertion of a removable device, LastAttemptStatus must be set to Success.\r | |
93 | ///\r | |
94 | UINT32 LastAttemptStatus;\r | |
95 | } EFI_SYSTEM_RESOURCE_ENTRY;\r | |
96 | \r | |
97 | typedef struct {\r | |
98 | ///\r | |
99 | /// The number of firmware resources in the table, must not be zero.\r | |
100 | ///\r | |
101 | UINT32 FwResourceCount;\r | |
102 | ///\r | |
103 | /// The maximum number of resource array entries that can be within the table\r | |
104 | /// without reallocating the table, must not be zero.\r | |
105 | ///\r | |
106 | UINT32 FwResourceCountMax;\r | |
107 | ///\r | |
108 | /// The version of the EFI_SYSTEM_RESOURCE_ENTRY entities used in this table.\r | |
109 | /// This field should be set to 1.\r | |
110 | ///\r | |
111 | UINT64 FwResourceVersion;\r | |
112 | ///\r | |
113 | /// Array of EFI_SYSTEM_RESOURCE_ENTRY\r | |
114 | ///\r | |
115 | //EFI_SYSTEM_RESOURCE_ENTRY Entries[];\r | |
116 | } EFI_SYSTEM_RESOURCE_TABLE;\r | |
117 | \r | |
118 | extern EFI_GUID gEfiSystemResourceTableGuid;\r | |
119 | \r | |
120 | #endif\r |