REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3739 Update all use of EFI_D_* defines in DEBUG() macros to DEBUG_* defines. Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
		
			
				
	
	
		
			151 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  The module entry point for Tcg configuration module.
 | 
						|
 | 
						|
Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include "TcgConfigImpl.h"
 | 
						|
#include <Guid/TpmInstance.h>
 | 
						|
 | 
						|
/**
 | 
						|
  The entry point for Tcg configuration driver.
 | 
						|
 | 
						|
  @param[in]  ImageHandle        The image handle of the driver.
 | 
						|
  @param[in]  SystemTable        The system table.
 | 
						|
 | 
						|
  @retval EFI_ALREADY_STARTED    The driver already exists in system.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   Fail to execute entry point due to lack of resources.
 | 
						|
  @retval EFI_SUCCESS            All the related protocols are installed on the driver.
 | 
						|
  @retval Others                 Fail to install protocols as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
TcgConfigDriverEntryPoint (
 | 
						|
  IN EFI_HANDLE          ImageHandle,
 | 
						|
  IN EFI_SYSTEM_TABLE    *SystemTable
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS                Status;
 | 
						|
  TCG_CONFIG_PRIVATE_DATA   *PrivateData;
 | 
						|
  EFI_TCG_PROTOCOL          *TcgProtocol;
 | 
						|
 | 
						|
  if (!CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm12Guid)){
 | 
						|
    DEBUG ((DEBUG_ERROR, "No TPM12 instance required!\n"));
 | 
						|
    return EFI_UNSUPPORTED;
 | 
						|
  }
 | 
						|
 | 
						|
  Status = Tpm12RequestUseTpm ();
 | 
						|
  if (EFI_ERROR (Status)) {
 | 
						|
    DEBUG ((DEBUG_ERROR, "TPM not detected!\n"));
 | 
						|
    return Status;
 | 
						|
  }
 | 
						|
 | 
						|
  Status = gBS->LocateProtocol (&gEfiTcgProtocolGuid, NULL, (VOID **) &TcgProtocol);
 | 
						|
  if (EFI_ERROR (Status)) {
 | 
						|
    TcgProtocol = NULL;
 | 
						|
  }
 | 
						|
 | 
						|
  Status = gBS->OpenProtocol (
 | 
						|
                  ImageHandle,
 | 
						|
                  &gEfiCallerIdGuid,
 | 
						|
                  NULL,
 | 
						|
                  ImageHandle,
 | 
						|
                  ImageHandle,
 | 
						|
                  EFI_OPEN_PROTOCOL_TEST_PROTOCOL
 | 
						|
                  );
 | 
						|
  if (!EFI_ERROR (Status)) {
 | 
						|
    return EFI_ALREADY_STARTED;
 | 
						|
  }
 | 
						|
 | 
						|
  //
 | 
						|
  // Create a private data structure.
 | 
						|
  //
 | 
						|
  PrivateData = AllocateCopyPool (sizeof (TCG_CONFIG_PRIVATE_DATA), &mTcgConfigPrivateDateTemplate);
 | 
						|
  if (PrivateData == NULL) {
 | 
						|
    return EFI_OUT_OF_RESOURCES;
 | 
						|
  }
 | 
						|
 | 
						|
  PrivateData->Configuration = AllocatePool (sizeof (TCG_CONFIGURATION));
 | 
						|
  if (PrivateData->Configuration == NULL) {
 | 
						|
    Status = EFI_OUT_OF_RESOURCES;
 | 
						|
    goto ErrorExit;
 | 
						|
  }
 | 
						|
 | 
						|
  PrivateData->TcgProtocol = TcgProtocol;
 | 
						|
 | 
						|
  //
 | 
						|
  // Install TCG configuration form
 | 
						|
  //
 | 
						|
  Status = InstallTcgConfigForm (PrivateData);
 | 
						|
  if (EFI_ERROR (Status)) {
 | 
						|
    goto ErrorExit;
 | 
						|
  }
 | 
						|
 | 
						|
  //
 | 
						|
  // Install private GUID.
 | 
						|
  //
 | 
						|
  Status = gBS->InstallMultipleProtocolInterfaces (
 | 
						|
                  &ImageHandle,
 | 
						|
                  &gEfiCallerIdGuid,
 | 
						|
                  PrivateData,
 | 
						|
                  NULL
 | 
						|
                  );
 | 
						|
 | 
						|
  if (EFI_ERROR (Status)) {
 | 
						|
    goto ErrorExit;
 | 
						|
  }
 | 
						|
 | 
						|
  return EFI_SUCCESS;
 | 
						|
 | 
						|
ErrorExit:
 | 
						|
  if (PrivateData != NULL) {
 | 
						|
    UninstallTcgConfigForm (PrivateData);
 | 
						|
  }
 | 
						|
 | 
						|
  return Status;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Unload the Tcg configuration form.
 | 
						|
 | 
						|
  @param[in]  ImageHandle         The driver's image handle.
 | 
						|
 | 
						|
  @retval     EFI_SUCCESS         The Tcg configuration form is unloaded.
 | 
						|
  @retval     Others              Failed to unload the form.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
TcgConfigDriverUnload (
 | 
						|
  IN EFI_HANDLE  ImageHandle
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS                  Status;
 | 
						|
  TCG_CONFIG_PRIVATE_DATA   *PrivateData;
 | 
						|
 | 
						|
  Status = gBS->HandleProtocol (
 | 
						|
                  ImageHandle,
 | 
						|
                  &gEfiCallerIdGuid,
 | 
						|
                  (VOID **) &PrivateData
 | 
						|
                  );
 | 
						|
  if (EFI_ERROR (Status)) {
 | 
						|
    return Status;
 | 
						|
  }
 | 
						|
 | 
						|
  ASSERT (PrivateData->Signature == TCG_CONFIG_PRIVATE_DATA_SIGNATURE);
 | 
						|
 | 
						|
  gBS->UninstallMultipleProtocolInterfaces (
 | 
						|
         ImageHandle,
 | 
						|
         &gEfiCallerIdGuid,
 | 
						|
         PrivateData,
 | 
						|
         NULL
 | 
						|
         );
 | 
						|
 | 
						|
  UninstallTcgConfigForm (PrivateData);
 | 
						|
 | 
						|
  return EFI_SUCCESS;
 | 
						|
}
 |