]> git.proxmox.com Git - mirror_edk2.git/blob - FmpDevicePkg/PrivateInclude/Protocol/CapsuleUpdatePolicy.h
871f0a185439cb4c2b20a1c76e879fe52f145591
[mirror_edk2.git] / FmpDevicePkg / PrivateInclude / Protocol / CapsuleUpdatePolicy.h
1 /** @file
2 Provides platform policy services used during a capsule update.
3
4 Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 #ifndef __CAPSULE_UPDATE_POLICY_H__
11 #define __CAPSULE_UPDATE_POLICY_H__
12
13 #define EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL_GUID \
14 { \
15 0x487784c5, 0x6299, 0x4ba6, { 0xb0, 0x96, 0x5c, 0xc5, 0x27, 0x7c, 0xf7, 0x57 } \
16 }
17
18 typedef struct _EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL;
19
20 /**
21 Determine if the system power state supports a capsule update.
22
23 @param[in] This A pointer to the EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL instance.
24 @param[out] Good Returns TRUE if system power state supports a capsule
25 update. Returns FALSE if system power state does not
26 support a capsule update. Return value is only valid if
27 return status is EFI_SUCCESS.
28
29 @retval EFI_SUCCESS Good parameter has been updated with result.
30 @retval EFI_INVALID_PARAMETER Good is NULL.
31 @retval EFI_DEVICE_ERROR System power state can not be determined.
32
33 **/
34 typedef
35 EFI_STATUS
36 (EFIAPI * EDKII_CAPSULE_UPDATE_POLICY_CHECK_SYSTEM_POWER) (
37 IN EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL *This,
38 OUT BOOLEAN *Good
39 );
40
41 /**
42 Determines if the system thermal state supports a capsule update.
43
44 @param[in] This A pointer to the EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL instance.
45 @param[out] Good Returns TRUE if system thermal state supports a capsule
46 update. Returns FALSE if system thermal state does not
47 support a capsule update. Return value is only valid if
48 return status is EFI_SUCCESS.
49
50 @retval EFI_SUCCESS Good parameter has been updated with result.
51 @retval EFI_INVALID_PARAMETER Good is NULL.
52 @retval EFI_DEVICE_ERROR System thermal state can not be determined.
53
54 **/
55 typedef
56 EFI_STATUS
57 (EFIAPI * EDKII_CAPSULE_UPDATE_POLICY_CHECK_SYSTEM_THERMAL) (
58 IN EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL *This,
59 OUT BOOLEAN *Good
60 );
61
62 /**
63 Determines if the system environment state supports a capsule update.
64
65 @param[in] This A pointer to the EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL instance.
66 @param[out] Good Returns TRUE if system environment state supports a capsule
67 update. Returns FALSE if system environment state does not
68 support a capsule update. Return value is only valid if
69 return status is EFI_SUCCESS.
70
71 @retval EFI_SUCCESS Good parameter has been updated with result.
72 @retval EFI_INVALID_PARAMETER Good is NULL.
73 @retval EFI_DEVICE_ERROR System environment state can not be determined.
74
75 **/
76 typedef
77 EFI_STATUS
78 (EFIAPI * EDKII_CAPSULE_UPDATE_POLICY_CHECK_SYSTEM_ENVIRONMENT) (
79 IN EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL *This,
80 OUT BOOLEAN *Good
81 );
82
83 /**
84 Determines if the Lowest Supported Version checks should be performed. The
85 expected result from this function is TRUE. A platform can choose to return
86 FALSE (e.g. during manufacturing or servicing) to allow a capsule update to a
87 version below the current Lowest Supported Version.
88
89 @param[in] This A pointer to the EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL instance.
90
91 @retval TRUE The lowest supported version check is required.
92 @retval FALSE Do not perform lowest support version check.
93
94 **/
95 typedef
96 BOOLEAN
97 (EFIAPI * EDKII_CAPSULE_UPDATE_POLICY_IS_LOWEST_SUPPORTED_VERSION_CHECK_REQUIRED) (
98 IN EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL *This
99 );
100
101 /**
102 Determines if the FMP device should be locked when the event specified by
103 PcdFmpDeviceLockEventGuid is signaled. The expected result from this function
104 is TRUE so the FMP device is always locked. A platform can choose to return
105 FALSE (e.g. during manufacturing) to allow FMP devices to remain unlocked.
106
107 @param[in] This A pointer to the EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL instance.
108
109 @retval TRUE The FMP device lock action is required at lock event guid.
110 @retval FALSE Do not perform FMP device lock at lock event guid.
111
112 **/
113 typedef
114 BOOLEAN
115 (EFIAPI * EDKII_CAPSULE_UPDATE_POLICY_IS_FMP_DEVICE_AT_LOCK_EVENT_REQUIRED) (
116 IN EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL *This
117 );
118
119 ///
120 /// This protocol provides platform policy services used during a capsule update.
121 ///
122 struct _EDKII_CAPSULE_UPDATE_POLICY_PROTOCOL {
123 EDKII_CAPSULE_UPDATE_POLICY_CHECK_SYSTEM_POWER CheckSystemPower;
124 EDKII_CAPSULE_UPDATE_POLICY_CHECK_SYSTEM_THERMAL CheckSystemThermal;
125 EDKII_CAPSULE_UPDATE_POLICY_CHECK_SYSTEM_ENVIRONMENT CheckSystemEnvironment;
126 EDKII_CAPSULE_UPDATE_POLICY_IS_LOWEST_SUPPORTED_VERSION_CHECK_REQUIRED IsLowestSupportedVersionCheckRequired;
127 EDKII_CAPSULE_UPDATE_POLICY_IS_FMP_DEVICE_AT_LOCK_EVENT_REQUIRED IsLockFmpDeviceAtLockEventGuidRequired;
128 };
129
130 extern EFI_GUID gEdkiiCapuleUpdatePolicyProtocolGuid;
131
132 #endif