audk/Vlv2TbltDevicePkg/Include/Protocol/TpmMp.h

137 lines
4.2 KiB
C

/*++
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
Module Name:
Tpm.h
Abstract:
--*/
#ifndef __EFI_TPM_MP_DRIVER_PROTOCOL_H__
#define __EFI_TPM_MP_DRIVER_PROTOCOL_H__
#define EFI_TPM_MP_DRIVER_PROTOCOL_GUID \
{ 0xde161cfe, 0x1e60, 0x42a1, 0x8c, 0xc3, 0xee, 0x7e, 0xf0, 0x73, 0x52, 0x12 }
EFI_FORWARD_DECLARATION (EFI_TPM_MP_DRIVER_PROTOCOL);
#define TPM_DRIVER_STATUS 0
#define TPM_DEVICE_STATUS 1
#define TPM_DRIVER_OK 0
#define TPM_DRIVER_FAILED 1
#define TPM_DRIVER_NOT_OPENED 2
#define TPM_DEVICE_OK 0
#define TPM_DEVICE_UNRECOVERABLE 1
#define TPM_DEVICE_RECOVERABLE 2
#define TPM_DEVICE_NOT_FOUND 3
//
// Prototypes for the TPM MP Driver Protocol
//
/**
This service Open the TPM interface
@param[in] This A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
@retval EFI_SUCCESS Operation completed successfully
@retval EFI_DEVICE_ERROR The command was unsuccessful
@retval EFI_NOT_FOUND The component was not running
**/
typedef
EFI_STATUS
(EFIAPI *EFI_TPM_MP_INIT) (
IN EFI_TPM_MP_DRIVER_PROTOCOL *This
);
/**
This service close the TPM interface and deactivate TPM
@param[in] This A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
@retval EFI_SUCCESS Operation completed successfully
@retval EFI_DEVICE_ERROR The command was unsuccessful
@retval EFI_NOT_FOUND The component was not running
**/
typedef
EFI_STATUS
(EFIAPI *EFI_TPM_MP_CLOSE) (
IN EFI_TPM_MP_DRIVER_PROTOCOL *This
);
/**
This service get the current status infomation of TPM
@param[in] This A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
@param[in] ReqStatusType Requested type of status information, driver or device.
@param[in] Status Pointer to the returned status.
@retval EFI_SUCCESS Operation completed successfully
@retval EFI_DEVICE_ERROR The command was unsuccessful
@retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect
@retval EFI_BUFFER_TOO_SMALL The receive buffer is too small
@retval EFI_NOT_FOUND The component was not running
**/
typedef
EFI_STATUS
(EFIAPI *EFI_TPM_MP_GET_STATUS_INFO) (
IN EFI_TPM_MP_DRIVER_PROTOCOL *This,
IN UINT32 ReqStatusType,
OUT UINT32 *Status
);
/**
This service transmit data to the TPM and get response from TPM
@param[in] This A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
@param[in] TransmitBuf Pointer to a buffer containing TPM transmit data.
@param[in] TransmitBufLen Sizeof TPM input buffer in bytes.
@param[in] ReceiveBuf Pointer to a buffer containing TPM receive data.
@param[in] ReceiveBufLen On input, size of TPM receive buffer in bytes.
On output, number of bytes written.
@retval EFI_SUCCESS Operation completed successfully
@retval EFI_DEVICE_ERROR The command was unsuccessful
@retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect
@retval EFI_BUFFER_TOO_SMALL The receive buffer is too small
@retval EFI_NOT_FOUND The component was not running
**/
typedef
EFI_STATUS
(EFIAPI *EFI_TPM_MP_TRANSMIT) (
IN EFI_TPM_MP_DRIVER_PROTOCOL *This,
IN UINT8 *TransmitBuffer,
IN UINT32 TransmitBufferLen,
OUT UINT8 *ReceiveBuf,
IN OUT UINT32 *ReceiveBufLen
);
typedef struct _EFI_TPM_MP_DRIVER_PROTOCOL {
EFI_TPM_MP_INIT Init;
EFI_TPM_MP_CLOSE Close;
EFI_TPM_MP_GET_STATUS_INFO GetStatusInfo;
EFI_TPM_MP_TRANSMIT Transmit;
} EFI_TPM_MP_DRIVER_PROTOCOL;
extern EFI_GUID gEfiTpmMpDriverProtocolGuid;
#endif