mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 05:28:13 +00:00 
			
		
		
		
	 d3ff5dbe1d
			
		
	
	
		d3ff5dbe1d
		
	
	
	
	
		
			
			REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3397
Current Ppi/MmControl.h file has structure definition of "struct
_PEI_MM_CONTROL_PPI". This name mismatches with its definition in PI
Specification v1.7 (Errata) as "struct _EFI_PEI_MM_CONTROL_PPI".
In addition, field types "PEI_MM_ACTIVATE" and "PEI_MM_DEACTIVATE" used
in "struct _PEI_MM_CONTROL_PPI" mismatches with the definition of
"EFI_PEI_MM_ACTIVATE" and "EFI_PEI_MM_DEACTIVATE" in the PI spec.
This change fixes these mismatches by using the PI spec defined names.
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Fixes: 6f33f7a262
Signed-off-by: Kun Qin <kuqin12@gmail.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
	
			
		
			
				
	
	
		
			91 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   EFI MM Control PPI definition.
 | |
| 
 | |
|   This PPI is used initiate synchronous MMI activations. This PPI could be published by a processor
 | |
|   driver to abstract the MMI IPI or a driver which abstracts the ASIC that is supporting the APM port.
 | |
|   Because of the possibility of performing MMI IPI transactions, the ability to generate this event
 | |
|   from a platform chipset agent is an optional capability for both IA-32 and x64-based systems.
 | |
| 
 | |
|   Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
|   @par Revision Reference:
 | |
|   This PPI is introduced in PI Version 1.5.
 | |
| 
 | |
| **/
 | |
| 
 | |
| 
 | |
| #ifndef _MM_CONTROL_PPI_H_
 | |
| #define _MM_CONTROL_PPI_H_
 | |
| 
 | |
| #define EFI_PEI_MM_CONTROL_PPI_GUID \
 | |
|   { 0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5 }
 | |
| 
 | |
| typedef struct _EFI_PEI_MM_CONTROL_PPI  EFI_PEI_MM_CONTROL_PPI;
 | |
| 
 | |
| /**
 | |
|   Invokes PPI activation from the PI PEI environment.
 | |
| 
 | |
|   @param  PeiServices           An indirect pointer to the PEI Services Table published by the PEI Foundation.
 | |
|   @param  This                  The PEI_MM_CONTROL_PPI instance.
 | |
|   @param  ArgumentBuffer        The value passed to the MMI handler. This value corresponds to the
 | |
|                                 SwMmiInputValue in the RegisterContext parameter for the Register()
 | |
|                                 function in the EFI_MM_SW_DISPATCH_PROTOCOL and in the Context parameter
 | |
|                                 in the call to the DispatchFunction
 | |
|   @param  ArgumentBufferSize    The size of the data passed in ArgumentBuffer or NULL if ArgumentBuffer is NULL.
 | |
|   @param  Periodic              An optional mechanism to periodically repeat activation.
 | |
|   @param  ActivationInterval    An optional parameter to repeat at this period one
 | |
|                                 time or, if the Periodic Boolean is set, periodically.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The MMI has been engendered.
 | |
|   @retval EFI_DEVICE_ERROR      The timing is unsupported.
 | |
|   @retval EFI_INVALID_PARAMETER The activation period is unsupported.
 | |
|   @retval EFI_NOT_STARTED       The MM base service has not been initialized.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_PEI_MM_ACTIVATE) (
 | |
|   IN EFI_PEI_SERVICES                                **PeiServices,
 | |
|   IN EFI_PEI_MM_CONTROL_PPI                          * This,
 | |
|   IN OUT INT8                                        *ArgumentBuffer OPTIONAL,
 | |
|   IN OUT UINTN                                       *ArgumentBufferSize OPTIONAL,
 | |
|   IN BOOLEAN                                         Periodic OPTIONAL,
 | |
|   IN UINTN                                           ActivationInterval OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Clears any system state that was created in response to the Trigger() call.
 | |
| 
 | |
|   @param  PeiServices           General purpose services available to every PEIM.
 | |
|   @param  This                  The PEI_MM_CONTROL_PPI instance.
 | |
|   @param  Periodic              Optional parameter to repeat at this period one
 | |
|                                 time or, if the Periodic Boolean is set, periodically.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The MMI has been engendered.
 | |
|   @retval EFI_DEVICE_ERROR      The source could not be cleared.
 | |
|   @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_PEI_MM_DEACTIVATE) (
 | |
|   IN EFI_PEI_SERVICES                      **PeiServices,
 | |
|   IN EFI_PEI_MM_CONTROL_PPI                * This,
 | |
|   IN BOOLEAN                               Periodic OPTIONAL
 | |
|   );
 | |
| 
 | |
| ///
 | |
| ///  The EFI_PEI_MM_CONTROL_PPI is produced by a PEIM. It provides an abstraction of the
 | |
| ///  platform hardware that generates an MMI. There are often I/O ports that, when accessed, will
 | |
| ///  generate the MMI. Also, the hardware optionally supports the periodic generation of these signals.
 | |
| ///
 | |
| struct _EFI_PEI_MM_CONTROL_PPI {
 | |
|   EFI_PEI_MM_ACTIVATE    Trigger;
 | |
|   EFI_PEI_MM_DEACTIVATE  Clear;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEfiPeiMmControlPpiGuid;
 | |
| 
 | |
| #endif
 |