REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg 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>
		
			
				
	
	
		
			341 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			341 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   UEFI Platform to Driver Configuration Protocol is defined in UEFI specification.
 | |
| 
 | |
|   This is a protocol that is optionally produced by the platform and optionally consumed
 | |
|   by a UEFI Driver in its Start() function. This protocol allows the driver to receive
 | |
|   configuration information as part of being started.
 | |
| 
 | |
|   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __PLATFORM_TO_DRIVER_CONFIGUARTION_H__
 | |
| #define __PLATFORM_TO_DRIVER_CONFIGUARTION_H__
 | |
| 
 | |
| #define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL_GUID  \
 | |
|   { 0x642cd590, 0x8059, 0x4c0a, { 0xa9, 0x58, 0xc5, 0xec, 0x7, 0xd2, 0x3c, 0x4b } }
 | |
| 
 | |
| typedef struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL;
 | |
| 
 | |
| /**
 | |
|   The UEFI driver must call Query early in the Start() function
 | |
|   before any time consuming operations are performed. If
 | |
|   ChildHandle is NULL the driver is requesting information from
 | |
|   the platform about the ControllerHandle that is being started.
 | |
|   Information returned from Query may lead to the drivers Start()
 | |
|   function failing.
 | |
|   If the UEFI driver is a bus driver and producing a ChildHandle,
 | |
|   the driver must call Query after the child handle has been created
 | |
|   and an EFI_DEVICE_PATH_PROTOCOL has been placed on that handle,
 | |
|   but before any time consuming operation is performed. If information
 | |
|   return by Query may lead the driver to decide to not create the
 | |
|   ChildHandle. The driver must then cleanup and remove the ChildHandle
 | |
|   from the system.
 | |
|   The UEFI driver repeatedly calls Query, processes the information
 | |
|   returned by the platform, and calls Response passing in the
 | |
|   arguments returned from Query. The Instance value passed into
 | |
|   Response must be the same value passed into the corresponding
 | |
|   call to Query. The UEFI driver must continuously call Query and
 | |
|   Response until EFI_NOT_FOUND is returned by Query.
 | |
|   If the UEFI driver does not recognize the ParameterTypeGuid, it
 | |
|   calls Response with a ConfigurationAction of
 | |
|   EfiPlatformConfigurationActionUnsupportedGuid. The UEFI driver
 | |
|   must then continue calling Query and Response until EFI_NOT_FOUND
 | |
|   is returned by Query. This gives the platform an opportunity to
 | |
|   pass additional configuration settings using a different
 | |
|   ParameterTypeGuid that may be supported by the driver.
 | |
|   An Instance value of zero means return the first ParameterBlock
 | |
|   in the set of unprocessed parameter blocks. The driver should
 | |
|   increment the Instance value by one for each successive call to Query.
 | |
| 
 | |
|   @param This                 A pointer to the EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL instance.
 | |
| 
 | |
|   @param ControllerHandle     The handle the platform will return
 | |
|                               configuration information about.
 | |
| 
 | |
|   @param ChildHandle          The handle of the child controller to
 | |
|                               return information on. This is an optional
 | |
|                               parameter that may be NULL. It will be
 | |
|                               NULL for device drivers and for bus
 | |
|                               drivers that attempt to get options for
 | |
|                               the bus controller. It will not be NULL
 | |
|                               for a bus driver that attempts to get
 | |
|                               options for one of its child controllers.
 | |
| 
 | |
| 
 | |
|   @param Instance             Pointer to the Instance value. Zero means
 | |
|                               return the first query data. The caller should
 | |
|                               increment this value by one each time to retrieve
 | |
|                               successive data.
 | |
| 
 | |
|   @param ParameterTypeGuid    An EFI_GUID that defines the contents
 | |
|                               of ParameterBlock. UEFI drivers must
 | |
|                               use the ParameterTypeGuid to determine
 | |
|                               how to parse the ParameterBlock. The caller
 | |
|                               should not attempt to free ParameterTypeGuid.
 | |
| 
 | |
|   @param ParameterBlock       The platform returns a pointer to the
 | |
|                               ParameterBlock structure which
 | |
|                               contains details about the
 | |
|                               configuration parameters specific to
 | |
|                               the ParameterTypeGuid. This structure
 | |
|                               is defined based on the protocol and
 | |
|                               may be different for different
 | |
|                               protocols. UEFI driver decodes this
 | |
|                               structure and its contents based on
 | |
|                               ParameterTypeGuid. ParameterBlock is
 | |
|                               allocated by the platform and the
 | |
|                               platform is responsible for freeing
 | |
|                               the ParameterBlock after Result is
 | |
|                               called.
 | |
| 
 | |
|   @param ParameterBlockSize   The platform returns the size of
 | |
|                               the ParameterBlock in bytes.
 | |
| 
 | |
| 
 | |
|   @retval EFI_SUCCESS           The platform return parameter
 | |
|                                 information for ControllerHandle.
 | |
| 
 | |
|   @retval EFI_NOT_FOUND         No more unread Instance exists.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER Instance is NULL.
 | |
| 
 | |
|   @retval EFI_DEVICE_ERROR      A device error occurred while
 | |
|                                 attempting to return parameter block
 | |
|                                 information for the controller
 | |
|                                 specified by ControllerHandle and
 | |
|                                 ChildHandle.
 | |
| 
 | |
|   @retval EFI_OUT_RESOURCES     There are not enough resources
 | |
|                                 available to set the configuration
 | |
|                                 options for the controller specified
 | |
|                                 by ControllerHandle and ChildHandle.
 | |
| 
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY)(
 | |
|   IN CONST  EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This,
 | |
|   IN CONST  EFI_HANDLE  ControllerHandle,
 | |
|   IN CONST  EFI_HANDLE  ChildHandle OPTIONAL,
 | |
|   IN CONST  UINTN       *Instance,
 | |
|   OUT       EFI_GUID    **ParameterTypeGuid,
 | |
|   OUT       VOID        **ParameterBlock,
 | |
|   OUT       UINTN       *ParameterBlockSize
 | |
|   );
 | |
| 
 | |
| typedef enum {
 | |
|   ///
 | |
|   ///  The controller specified by ControllerHandle is still
 | |
|   ///  in a usable state, and its configuration has been updated
 | |
|   ///  via parsing the ParameterBlock. If required by the
 | |
|   ///  parameter block, and the module supports an NVRAM store,
 | |
|   ///  the configuration information from PB was successfully
 | |
|   ///  saved to the NVRAM. No actions are required before
 | |
|   ///  this controller can be used again with the updated
 | |
|   ///  configuration settings.
 | |
|   ///
 | |
|   EfiPlatformConfigurationActionNone = 0,
 | |
| 
 | |
|   ///
 | |
|   ///  The driver has detected that the controller specified
 | |
|   ///  by ControllerHandle is not in a usable state and
 | |
|   ///  needs to be stopped. The calling agent can use the
 | |
|   ///  DisconnectControservice to perform this operation, and
 | |
|   ///  it should be performed as soon as possible.
 | |
|   ///
 | |
|   EfiPlatformConfigurationActionStopController = 1,
 | |
| 
 | |
|   ///
 | |
|   ///  This controller specified by ControllerHandle needs to
 | |
|   ///  be stopped and restarted before it can be used again.
 | |
|   ///  The calling agent can use the DisconnectController()
 | |
|   ///  and ConnectController() services to perform this
 | |
|   ///  operation. The restart operation can be delayed until
 | |
|   ///  all of the configuration options have been set.
 | |
|   ///
 | |
|   EfiPlatformConfigurationActionRestartController = 2,
 | |
| 
 | |
|   ///
 | |
|   ///  A configuration change has been made that requires the
 | |
|   ///  platform to be restarted before the controller
 | |
|   ///  specified by ControllerHandle can be used again. The
 | |
|   ///  calling agent can use the ResetSystem() services to
 | |
|   ///  perform this operation. The restart operation can be
 | |
|   ///  delayed until all of the configuration options have
 | |
|   ///  been set.
 | |
|   ///
 | |
|   EfiPlatformConfigurationActionRestartPlatform = 3,
 | |
| 
 | |
|   ///
 | |
|   ///  The controller specified by ControllerHandle is still
 | |
|   ///  in a usable state; its configuration has been updated
 | |
|   ///  via parsing the ParameterBlock. The driver tried to
 | |
|   ///  update the driver's private NVRAM store with
 | |
|   ///  information from ParameterBlock and failed. No actions
 | |
|   ///  are required before this controller can be used again
 | |
|   ///  with the updated configuration settings, but these
 | |
|   ///  configuration settings are not guaranteed to persist
 | |
|   ///  after ControllerHandle is stopped.
 | |
|   ///
 | |
|   EfiPlatformConfigurationActionNvramFailed = 4,
 | |
| 
 | |
|   ///
 | |
|   /// The controller specified by ControllerHandle is still
 | |
|   /// in a usable state; its configuration has not been updated
 | |
|   /// via parsing the ParameterBlock. The driver did not support
 | |
|   /// the ParameterBlock format identified by ParameterTypeGuid.
 | |
|   /// No actions are required before this controller can be used
 | |
|   /// again. On additional Query calls from this ControllerHandle,
 | |
|   /// the platform should stop returning a ParameterBlock
 | |
|   /// qualified by this same ParameterTypeGuid. If no other
 | |
|   /// ParameterTypeGuid is supported by the platform, Query
 | |
|   /// should return EFI_NOT_FOUND.
 | |
|   ///
 | |
|   EfiPlatformConfigurationActionUnsupportedGuid = 5,
 | |
|   EfiPlatformConfigurationActionMaximum
 | |
| } EFI_PLATFORM_CONFIGURATION_ACTION;
 | |
| 
 | |
| /**
 | |
|   The UEFI driver repeatedly calls Query, processes the
 | |
|   information returned by the platform, and calls Response passing
 | |
|   in the arguments returned from Query. The UEFI driver must
 | |
|   continuously call Query until EFI_NOT_FOUND is returned. For
 | |
|   every call to Query that returns EFI_SUCCESS a corrisponding
 | |
|   call to Response is required passing in the same
 | |
|   ContollerHandle, ChildHandle, Instance, ParameterTypeGuid,
 | |
|   ParameterBlock, and ParameterBlockSize. The UEFI driver may
 | |
|   update values in ParameterBlock based on rules defined by
 | |
|   ParameterTypeGuid. The platform is responsible for freeing
 | |
|   ParameterBlock and the UEFI driver must not try to free it.
 | |
| 
 | |
|   @param This                A pointer to the EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL instance.
 | |
| 
 | |
|   @param ControllerHandle    The handle the driver is returning
 | |
|                              configuration information about.
 | |
| 
 | |
|   @param ChildHandle         The handle of the child controller to
 | |
|                              return information on. This is an optional
 | |
|                              parameter that may be NULL. It will be
 | |
|                              NULL for device drivers, and for bus
 | |
|                              drivers that attempt to get options for
 | |
|                              the bus controller. It will not be NULL
 | |
|                              for a bus driver that attempts to get
 | |
|                              options for one of its child controllers.
 | |
|                              Instance Instance data returned from
 | |
|                              Query().
 | |
| 
 | |
|   @param Instance            Instance data passed to Query().
 | |
| 
 | |
|   @param ParameterTypeGuid   ParameterTypeGuid returned from Query.
 | |
| 
 | |
|   @param ParameterBlock      ParameterBlock returned from Query.
 | |
| 
 | |
|   @param ParameterBlockSize  The ParameterBlock size returned from Query.
 | |
| 
 | |
|   @param ConfigurationAction The driver tells the platform what
 | |
|                              action is required for ParameterBlock to
 | |
|                              take effect.
 | |
| 
 | |
| 
 | |
|   @retval EFI_SUCCESS           The platform return parameter information
 | |
|                                 for ControllerHandle.
 | |
| 
 | |
|   @retval EFI_NOT_FOUND         Instance was not found.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER Instance is zero.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE)(
 | |
|   IN CONST  EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This,
 | |
|   IN CONST  EFI_HANDLE  ControllerHandle,
 | |
|   IN CONST  EFI_HANDLE  ChildHandle OPTIONAL,
 | |
|   IN CONST  UINTN       *Instance,
 | |
|   IN CONST  EFI_GUID    *ParameterTypeGuid,
 | |
|   IN CONST  VOID        *ParameterBlock,
 | |
|   IN CONST  UINTN       ParameterBlockSize,
 | |
|   IN CONST  EFI_PLATFORM_CONFIGURATION_ACTION ConfigurationAction
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// The EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL is used by the
 | |
| /// UEFI driver to query the platform for configuration information.
 | |
| /// The UEFI driver calls Query() multiple times to get
 | |
| /// configuration information from the platform. For every call to
 | |
| /// Query() there must be a matching call to Response() so the
 | |
| /// UEFI driver can inform the platform how it used the
 | |
| /// information passed in from Query(). It's legal for a UEFI
 | |
| /// driver to use Response() to inform the platform it does not
 | |
| /// understand the data returned via Query() and thus no action was
 | |
| /// taken.
 | |
| ///
 | |
| struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL {
 | |
|   EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY       Query;
 | |
|   EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE    Response;
 | |
| };
 | |
| 
 | |
| #define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_CLP_GUID   \
 | |
|   {0x345ecc0e, 0xcb6, 0x4b75, { 0xbb, 0x57, 0x1b, 0x12, 0x9c, 0x47, 0x33,0x3e } }
 | |
| 
 | |
| /**
 | |
| 
 | |
|   ParameterTypeGuid provides the support for parameters
 | |
|   communicated through the DMTF SM CLP Specification 1.0 Final
 | |
|   Standard to be used to configure the UEFI driver. In this
 | |
|   section the producer of the
 | |
|   EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL is platform
 | |
|   firmware and the consumer is the UEFI driver. Note: if future
 | |
|   versions of the DMTF SM CLP Specification require changes to the
 | |
|   parameter block definition, a newer ParameterTypeGuid will be
 | |
|   used.
 | |
| **/
 | |
| typedef struct {
 | |
|   CHAR8     *CLPCommand;           ///<  A pointer to the null-terminated UTF-8 string that specifies the DMTF SM CLP command
 | |
|                                    ///<  line that the driver is required to parse and process when this function is called.
 | |
|                                    ///<  See the DMTF SM CLP Specification 1.0 Final Standard for details on the
 | |
|                                    ///<  format and syntax of the CLP command line string. CLPCommand buffer
 | |
|                                    ///<  is allocated by the producer of the EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOOL.
 | |
|   UINT32    CLPCommandLength;      ///< The length of the CLP Command in bytes.
 | |
|   CHAR8     *CLPReturnString;      ///<  A pointer to the null-terminated UTF-8 string that indicates the CLP return status
 | |
|                                    ///<  that the driver is required to provide to the calling agent.
 | |
|                                    ///<  The calling agent may parse and/ or pass
 | |
|                                    ///<  this for processing and user feedback. The SM CLP Command Response string
 | |
|                                    ///<  buffer is filled in by the UEFI driver in the "keyword=value" format
 | |
|                                    ///<  described in the SM CLP Specification, unless otherwise requested via the SM
 | |
|                                    ///<  CLP Coutput option in the Command Line string buffer. UEFI driver's support
 | |
|                                    ///<  for this default "keyword=value" output format is required if the UEFI
 | |
|                                    ///<  driver supports this protocol, while support for other SM CLP output
 | |
|                                    ///<  formats is optional (the UEFI Driver should return an EFI_UNSUPPORTED if
 | |
|                                    ///<  the SM CLP Coutput option requested by the caller is not supported by the
 | |
|                                    ///<  UEFI Driver). CLPReturnString buffer is allocated by the consumer of the
 | |
|                                    ///<  EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOC OL and undefined prior to the call to
 | |
|                                    ///<  Response().
 | |
|   UINT32    CLPReturnStringLength; ///< The length of the CLP return status string in bytes.
 | |
|   UINT8     CLPCmdStatus;          ///<  SM CLP Command Status (see DMTF SM CLP Specification 1.0 Final Standard -
 | |
|                                    ///<  Table 4) CLPErrorValue SM CLP Processing Error Value (see DMTF SM
 | |
|                                    ///<  CLP Specification 1.0 Final Standard - Table 6). This field is filled in by
 | |
|                                    ///<  the consumer of the EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOC
 | |
|                                    ///<  OL and undefined prior to the call to Response().
 | |
|   UINT8     CLPErrorValue;         ///<  SM CLP Processing Error Value (see DMTF SM CLP Specification 1.0 Final Standard - Table 6).
 | |
|                                    ///<  This field is filled in by the consumer of the EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL and undefined prior to the call to Response().
 | |
|   UINT16    CLPMsgCode;            ///<  Bit 15: OEM Message Code Flag 0 = Message Code is an SM CLP Probable
 | |
|                                    ///<  Cause Value. (see SM CLP Specification Table 11) 1 = Message Code is OEM
 | |
|                                    ///<  Specific Bits 14-0: Message Code This field is filled in by the consumer of
 | |
|                                    ///<  the EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOC OL and undefined prior to the call to
 | |
|                                    ///<  Response().
 | |
| } EFI_CONFIGURE_CLP_PARAMETER_BLK;
 | |
| 
 | |
| extern EFI_GUID  gEfiPlatformToDriverConfigurationClpGuid;
 | |
| 
 | |
| extern EFI_GUID  gEfiPlatformToDriverConfigurationProtocolGuid;
 | |
| 
 | |
| #endif
 |