1 /** @file
2   This file defines the lock physical Presence PPI. This PPI is
3   produced by a platform specific PEIM and consumed by the TPM
4   PEIM.
5 
6 Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
7 SPDX-License-Identifier: BSD-2-Clause-Patent
8 
9 **/
10 
11 #ifndef __PEI_LOCK_PHYSICAL_PRESENCE_H__
12 #define __PEI_LOCK_PHYSICAL_PRESENCE_H__
13 
14 ///
15 /// Global ID for the PEI_LOCK_PHYSICAL_PRESENCE_PPI_GUID.
16 ///
17 #define PEI_LOCK_PHYSICAL_PRESENCE_PPI_GUID  \
18   { \
19     0xef9aefe5, 0x2bd3, 0x4031, { 0xaf, 0x7d, 0x5e, 0xfe, 0x5a, 0xbb, 0x9a, 0xd } \
20   }
21 
22 ///
23 /// Forward declaration for the PEI_LOCK_PHYSICAL_PRESENCE_PPI
24 ///
25 typedef struct _PEI_LOCK_PHYSICAL_PRESENCE_PPI PEI_LOCK_PHYSICAL_PRESENCE_PPI;
26 
27 /**
28   This interface returns whether TPM physical presence needs be locked.
29 
30   @param[in]  PeiServices       The pointer to the PEI Services Table.
31 
32   @retval     TRUE              The TPM physical presence should be locked.
33   @retval     FALSE             The TPM physical presence cannot be locked.
34 
35 **/
36 typedef
37 BOOLEAN
38 (EFIAPI *PEI_LOCK_PHYSICAL_PRESENCE)(
39   IN CONST  EFI_PEI_SERVICES                    **PeiServices
40 );
41 
42 ///
43 /// This service abstracts TPM physical presence lock interface. It is necessary for
44 /// safety to convey this information to the TPM driver so that TPM physical presence
45 /// can be locked as early as possible. This PPI is produced by a platform specific
46 /// PEIM and consumed by the TPM PEIM.
47 ///
48 struct _PEI_LOCK_PHYSICAL_PRESENCE_PPI {
49   PEI_LOCK_PHYSICAL_PRESENCE  LockPhysicalPresence;
50 };
51 
52 extern EFI_GUID  gPeiLockPhysicalPresencePpiGuid;
53 
54 #endif  //  __PEI_LOCK_PHYSICAL_PRESENCE_H__
55