1 /** @file
2   Define the variable data structures used for TCG physical presence.
3   The TPM request from firmware or OS is saved to variable. And it is
4   cleared after it is processed in the next boot cycle. The TPM response
5   is saved to variable.
6 
7 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
9 
10 **/
11 
12 #ifndef __PHYSICAL_PRESENCE_DATA_GUID_H__
13 #define __PHYSICAL_PRESENCE_DATA_GUID_H__
14 
15 #define EFI_PHYSICAL_PRESENCE_DATA_GUID \
16   { \
17     0xf6499b1, 0xe9ad, 0x493d, { 0xb9, 0xc2, 0x2f, 0x90, 0x81, 0x5c, 0x6c, 0xbc }\
18   }
19 
20 #define PHYSICAL_PRESENCE_VARIABLE  L"PhysicalPresence"
21 
22 typedef struct {
23   UINT8   PPRequest;      ///< Physical Presence request command.
24   UINT8   LastPPRequest;
25   UINT32  PPResponse;
26 } EFI_PHYSICAL_PRESENCE;
27 
28 //
29 // The definition of physical presence operation actions
30 //
31 #define PHYSICAL_PRESENCE_NO_ACTION                               0
32 #define PHYSICAL_PRESENCE_ENABLE                                  1
33 #define PHYSICAL_PRESENCE_DISABLE                                 2
34 #define PHYSICAL_PRESENCE_ACTIVATE                                3
35 #define PHYSICAL_PRESENCE_DEACTIVATE                              4
36 #define PHYSICAL_PRESENCE_CLEAR                                   5
37 #define PHYSICAL_PRESENCE_ENABLE_ACTIVATE                         6
38 #define PHYSICAL_PRESENCE_DEACTIVATE_DISABLE                      7
39 #define PHYSICAL_PRESENCE_SET_OWNER_INSTALL_TRUE                  8
40 #define PHYSICAL_PRESENCE_SET_OWNER_INSTALL_FALSE                 9
41 #define PHYSICAL_PRESENCE_ENABLE_ACTIVATE_OWNER_TRUE              10
42 #define PHYSICAL_PRESENCE_DEACTIVATE_DISABLE_OWNER_FALSE          11
43 #define PHYSICAL_PRESENCE_DEFERRED_PP_UNOWNERED_FIELD_UPGRADE     12
44 #define PHYSICAL_PRESENCE_SET_OPERATOR_AUTH                       13
45 #define PHYSICAL_PRESENCE_CLEAR_ENABLE_ACTIVATE                   14
46 #define PHYSICAL_PRESENCE_SET_NO_PPI_PROVISION_FALSE              15
47 #define PHYSICAL_PRESENCE_SET_NO_PPI_PROVISION_TRUE               16
48 #define PHYSICAL_PRESENCE_SET_NO_PPI_CLEAR_FALSE                  17
49 #define PHYSICAL_PRESENCE_SET_NO_PPI_CLEAR_TRUE                   18
50 #define PHYSICAL_PRESENCE_SET_NO_PPI_MAINTENANCE_FALSE            19
51 #define PHYSICAL_PRESENCE_SET_NO_PPI_MAINTENANCE_TRUE             20
52 #define PHYSICAL_PRESENCE_ENABLE_ACTIVATE_CLEAR                   21
53 #define PHYSICAL_PRESENCE_ENABLE_ACTIVATE_CLEAR_ENABLE_ACTIVATE   22
54 
55 //
56 // This variable is used to save TPM Management Flags and corresponding operations.
57 // It should be protected from malicious software (e.g. Set it as read-only variable).
58 //
59 #define PHYSICAL_PRESENCE_FLAGS_VARIABLE  L"PhysicalPresenceFlags"
60 typedef struct {
61   UINT8   PPFlags;
62 } EFI_PHYSICAL_PRESENCE_FLAGS;
63 
64 //
65 // The definition bit of the TPM Management Flags
66 //
67 #define FLAG_NO_PPI_PROVISION                    BIT0
68 #define FLAG_NO_PPI_CLEAR                        BIT1
69 #define FLAG_NO_PPI_MAINTENANCE                  BIT2
70 #define FLAG_RESET_TRACK                         BIT3
71 
72 extern EFI_GUID  gEfiPhysicalPresenceGuid;
73 
74 #endif
75 
76