text: /** @file
    This file declares Graphics PPI.
    This PPI is the main interface exposed by the Graphics PEIM to be used by the
    other firmware modules.
  
    Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
    SPDX-License-Identifier: BSD-2-Clause-Patent
  
    @par Revision Reference:
    This PPI is introduced in PI Version 1.4.
  
  **/
  
  #ifndef __PEI_GRAPHICS_PPI_H__
  #define __PEI_GRAPHICS_PPI_H__
  
  #include <Protocol/GraphicsOutput.h>
  
  #define EFI_PEI_GRAPHICS_PPI_GUID \
    { \
      0x6ecd1463, 0x4a4a, 0x461b, { 0xaf, 0x5f, 0x5a, 0x33, 0xe3, 0xb2, 0x16, 0x2b } \
    }
  
  typedef struct _EFI_PEI_GRAPHICS_PPI EFI_PEI_GRAPHICS_PPI;
  
  /**
    The GraphicsPpiInit initializes the graphics subsystem in phases.
  
    @param[in] GraphicsPolicyPtr    GraphicsPolicyPtr points to a configuration data
                                    block of policy settings required by Graphics PEIM.
  
    @retval EFI_SUCCESS             The invocation was successful.
    @retval EFI_INVALID_PARAMETER   The phase parameter is not valid.
    @retval EFI_NOT_ABORTED         The stages was not called in the proper order.
    @retval EFI_NOT_FOUND           The PeiGraphicsPlatformPolicyPpi is not located.
    @retval EFI_DEVICE_ERROR        The initialization failed due to device error.
    @retval EFI_NOT_READY           The previous init stage is still in progress and not
                                    ready for the current initialization phase yet. The
                                    platform code should call this again sometime later.
  **/
  typedef
  EFI_STATUS
  (EFIAPI *EFI_PEI_GRAPHICS_INIT) (
    IN VOID                            *GraphicsPolicyPtr
    );
  
  /**
    The GraphicsPpiGetMode returns the mode information supported by the Graphics PEI
    Module.
  
    @param[in, out] Mode            Pointer to EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE data.
  
    @retval EFI_SUCCESS             Valid mode information was returned.
    @retval EFI_INVALID_PARAMETER   The Mode parameter is not valid.
    @retval EFI_DEVICE_ERROR        A hardware error occurred trying to retrieve the video
                                    mode.
    @retval EFI_NOT_READY           The Graphics Initialization is not competed and Mode
                                    information is not yet available.The platform code
                                    should call this again after the Graphics
                                    initialization is done.
  **/
  typedef
  EFI_STATUS
  (EFIAPI *EFI_PEI_GRAPHICS_GET_MODE) (
    IN OUT EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE  *Mode
    );
  
  ///
  /// This PPI is the main interface exposed by the Graphics PEIM to be used by the other
  /// firmware modules.
  ///
  struct _EFI_PEI_GRAPHICS_PPI {
    EFI_PEI_GRAPHICS_INIT              GraphicsPpiInit;
    EFI_PEI_GRAPHICS_GET_MODE          GraphicsPpiGetMode;
  };
  
  extern EFI_GUID gEfiPeiGraphicsPpiGuid;
  
  #endif
  