REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the FmpDevicePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			239 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  UEFI variable support functions for Firmware Management Protocol based
 | 
						|
  firmware updates.
 | 
						|
 | 
						|
  Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
 | 
						|
  Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __VARIABLE_SUPPORT_H__
 | 
						|
#define __VARIABLE_SUPPORT_H__
 | 
						|
 | 
						|
///
 | 
						|
/// Default values for FMP Controller State information
 | 
						|
///
 | 
						|
#define DEFAULT_VERSION                 0x1
 | 
						|
#define DEFAULT_LOWESTSUPPORTEDVERSION  0x0
 | 
						|
#define DEFAULT_LASTATTEMPTSTATUS       0x0
 | 
						|
#define DEFAULT_LASTATTEMPTVERSION      0x0
 | 
						|
 | 
						|
///
 | 
						|
/// Base UEFI Variable names for FMP Controller State information stored in
 | 
						|
/// separate variables.
 | 
						|
///
 | 
						|
#define VARNAME_VERSION             L"FmpVersion"
 | 
						|
#define VARNAME_LSV                 L"FmpLsv"
 | 
						|
#define VARNAME_LASTATTEMPTSTATUS   L"LastAttemptStatus"
 | 
						|
#define VARNAME_LASTATTEMPTVERSION  L"LastAttemptVersion"
 | 
						|
 | 
						|
///
 | 
						|
/// Base UEFI Variable name for FMP Controller State information stored in a
 | 
						|
/// merged UEFI Variable.  If the separate UEFI Variables above are detected,
 | 
						|
/// then they are merged into a single variable and the separate variables are
 | 
						|
/// deleted.
 | 
						|
///
 | 
						|
#define VARNAME_FMPSTATE  L"FmpState"
 | 
						|
 | 
						|
///
 | 
						|
/// FMP Controller State structure that is used to store the state of
 | 
						|
/// a controller in one combined UEFI Variable.
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  BOOLEAN    VersionValid;
 | 
						|
  BOOLEAN    LsvValid;
 | 
						|
  BOOLEAN    LastAttemptStatusValid;
 | 
						|
  BOOLEAN    LastAttemptVersionValid;
 | 
						|
  UINT32     Version;
 | 
						|
  UINT32     Lsv;
 | 
						|
  UINT32     LastAttemptStatus;
 | 
						|
  UINT32     LastAttemptVersion;
 | 
						|
} FMP_CONTROLLER_STATE;
 | 
						|
 | 
						|
/**
 | 
						|
  Generate the names of the UEFI Variables used to store state information for
 | 
						|
  a managed controller.  The UEFI Variables names are a combination of a base
 | 
						|
  name and an optional hardware instance value as a 16 character hex value.  If
 | 
						|
  the hardware instance value is 0, then the 16 character hex value is not
 | 
						|
  included.  These storage for the UEFI Variable names are allocated using the
 | 
						|
  UEFI Boot Service AllocatePool() and the pointers are stored in the Private.
 | 
						|
  The following are examples of variable names produces for hardware instance
 | 
						|
  value 0 and value 0x1234567812345678.
 | 
						|
 | 
						|
    FmpVersion
 | 
						|
    FmpLsv
 | 
						|
    LastAttemptStatus
 | 
						|
    LastAttemptVersion
 | 
						|
    FmpDxe
 | 
						|
 | 
						|
    FmpVersion1234567812345678
 | 
						|
    FmpLsv1234567812345678
 | 
						|
    LastAttemptStatus1234567812345678
 | 
						|
    LastAttemptVersion1234567812345678
 | 
						|
    FmpDxe1234567812345678
 | 
						|
 | 
						|
  @param[in,out] Private  Private context structure for the managed controller.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
GenerateFmpVariableNames (
 | 
						|
  IN OUT FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns the value used to fill in the Version field of the
 | 
						|
  EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the GetImageInfo()
 | 
						|
  service of the Firmware Management Protocol.  The value is read from a UEFI
 | 
						|
  variable.  If the UEFI variables does not exist, then a default version value
 | 
						|
  is returned.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private  Private context structure for the managed controller.
 | 
						|
 | 
						|
  @return  The version of the firmware image in the firmware device.
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
GetVersionFromVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns the value used to fill in the LowestSupportedVersion field of the
 | 
						|
  EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the GetImageInfo()
 | 
						|
  service of the Firmware Management Protocol.  The value is read from a UEFI
 | 
						|
  variable.  If the UEFI variables does not exist, then a default lowest
 | 
						|
  supported version value is returned.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private  Private context structure for the managed controller.
 | 
						|
 | 
						|
  @return  The lowest supported version of the firmware image in the firmware
 | 
						|
           device.
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
GetLowestSupportedVersionFromVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns the value used to fill in the LastAttemptStatus field of the
 | 
						|
  EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the GetImageInfo()
 | 
						|
  service of the Firmware Management Protocol.  The value is read from a UEFI
 | 
						|
  variable.  If the UEFI variables does not exist, then a default last attempt
 | 
						|
  status value is returned.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private  Private context structure for the managed controller.
 | 
						|
 | 
						|
  @return  The last attempt status value for the most recent capsule update.
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
GetLastAttemptStatusFromVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns the value used to fill in the LastAttemptVersion field of the
 | 
						|
  EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the GetImageInfo()
 | 
						|
  service of the Firmware Management Protocol.  The value is read from a UEFI
 | 
						|
  variable.  If the UEFI variables does not exist, then a default last attempt
 | 
						|
  version value is returned.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private  Private context structure for the managed controller.
 | 
						|
 | 
						|
  @return  The last attempt version value for the most recent capsule update.
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
GetLastAttemptVersionFromVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Saves the version current of the firmware image in the firmware device to a
 | 
						|
  UEFI variable.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private  Private context structure for the managed controller.
 | 
						|
  @param[in] Version  The version of the firmware image in the firmware device.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
SetVersionInVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private,
 | 
						|
  IN UINT32                            Version
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Saves the lowest supported version current of the firmware image in the
 | 
						|
  firmware device to a UEFI variable.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private                 Private context structure for the managed
 | 
						|
                                     controller.
 | 
						|
  @param[in] LowestSupportedVersion  The lowest supported version of the
 | 
						|
                                     firmware image in the firmware device.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
SetLowestSupportedVersionInVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private,
 | 
						|
  IN UINT32                            LowestSupportedVersion
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Saves the last attempt status value of the most recent FMP capsule update to a
 | 
						|
  UEFI variable.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private            Private context structure for the managed
 | 
						|
                                controller.
 | 
						|
  @param[in] LastAttemptStatus  The last attempt status of the most recent FMP
 | 
						|
                                capsule update.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
SetLastAttemptStatusInVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private,
 | 
						|
  IN UINT32                            LastAttemptStatus
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Saves the last attempt version value of the most recent FMP capsule update to
 | 
						|
  a UEFI variable.
 | 
						|
 | 
						|
  UEFI Variable accessed: GUID = gEfiCallerIdGuid, Name = L"FmpDxe"
 | 
						|
 | 
						|
  @param[in] Private             Private context structure for the managed
 | 
						|
                                 controller.
 | 
						|
  @param[in] LastAttemptVersion  The last attempt version value of the most
 | 
						|
                                 recent FMP capsule update.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
SetLastAttemptVersionInVariable (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private,
 | 
						|
  IN UINT32                            LastAttemptVersion
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Locks all the UEFI Variables that use gEfiCallerIdGuid of the currently
 | 
						|
  executing module.
 | 
						|
 | 
						|
  @param[in] Private  Private context structure for the managed controller.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS      All UEFI variables are locked.
 | 
						|
  @retval  EFI_UNSUPPORTED  Variable Lock Protocol not found.
 | 
						|
  @retval  Other            One of the UEFI variables could not be locked.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
LockAllFmpVariables (
 | 
						|
  IN FIRMWARE_MANAGEMENT_PRIVATE_DATA  *Private
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |