/** @file
This file provide services for DXE phase Graphics policy default initialization.
Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
/**
This function prints the Graphics DXE phase policy.
@param[in] SaPolicy - SA DXE Policy protocol
**/
VOID
GraphicsDxePolicyPrint (
IN SA_POLICY_PROTOCOL *SaPolicy
)
{
EFI_STATUS Status;
GRAPHICS_DXE_CONFIG *GraphicsDxeConfig;
//
// Get requisite IP Config Blocks which needs to be used here
//
Status = GetConfigBlock ((VOID *) SaPolicy, &gGraphicsDxeConfigGuid, (VOID *)&GraphicsDxeConfig);
ASSERT_EFI_ERROR (Status);
DEBUG_CODE_BEGIN ();
DEBUG ((DEBUG_INFO, "\n------------------------ Graphics Policy (DXE) print BEGIN -----------------\n"));
DEBUG ((DEBUG_INFO, " Revision : %d\n", GraphicsDxeConfig->Header.Revision));
ASSERT (GraphicsDxeConfig->Header.Revision == GRAPHICS_DXE_CONFIG_REVISION);
DEBUG ((DEBUG_INFO, "\n------------------------ Graphics Policy (DXE) print END -----------------\n"));
DEBUG_CODE_END ();
return;
}
/**
This function Load default Graphics DXE policy.
@param[in] ConfigBlockPointer The pointer to add Graphics config block
**/
VOID
LoadIgdDxeDefault (
IN VOID *ConfigBlockPointer
)
{
GRAPHICS_DXE_CONFIG *GraphicsDxeConfig;
GraphicsDxeConfig = ConfigBlockPointer;
DEBUG ((DEBUG_INFO, "GraphicsDxeConfig->Header.GuidHob.Name = %g\n", &GraphicsDxeConfig->Header.GuidHob.Name));
DEBUG ((DEBUG_INFO, "GraphicsDxeConfig->Header.GuidHob.Header.HobLength = 0x%x\n", GraphicsDxeConfig->Header.GuidHob.Header.HobLength));
///
/// Initialize the Graphics configuration
///
GraphicsDxeConfig->PlatformConfig = 1;
GraphicsDxeConfig->AlsEnable = 2;
GraphicsDxeConfig->BacklightControlSupport = 2;
GraphicsDxeConfig->IgdBlcConfig = 2;
GraphicsDxeConfig->IgdDvmtMemSize = 1;
GraphicsDxeConfig->GfxTurboIMON = 31;
///
/// Create a static Backlight Brightness Level Duty cycle Mapping Table
/// Possible 20 entries (example used 11), each 16 bits as follows:
/// [15] = Field Valid bit, [14:08] = Level in Percentage (0-64h), [07:00] = Desired duty cycle (0 - FFh).
///
GraphicsDxeConfig->BCLM[0] = (0x0000 + WORD_FIELD_VALID_BIT); ///< 0%
GraphicsDxeConfig->BCLM[1] = (0x0A19 + WORD_FIELD_VALID_BIT); ///< 10%
GraphicsDxeConfig->BCLM[2] = (0x1433 + WORD_FIELD_VALID_BIT); ///< 20%
GraphicsDxeConfig->BCLM[3] = (0x1E4C + WORD_FIELD_VALID_BIT); ///< 30%
GraphicsDxeConfig->BCLM[4] = (0x2866 + WORD_FIELD_VALID_BIT); ///< 40%
GraphicsDxeConfig->BCLM[5] = (0x327F + WORD_FIELD_VALID_BIT); ///< 50%
GraphicsDxeConfig->BCLM[6] = (0x3C99 + WORD_FIELD_VALID_BIT); ///< 60%
GraphicsDxeConfig->BCLM[7] = (0x46B2 + WORD_FIELD_VALID_BIT); ///< 70%
GraphicsDxeConfig->BCLM[8] = (0x50CC + WORD_FIELD_VALID_BIT); ///< 80%
GraphicsDxeConfig->BCLM[9] = (0x5AE5 + WORD_FIELD_VALID_BIT); ///< 90%
GraphicsDxeConfig->BCLM[10] = (0x64FF + WORD_FIELD_VALID_BIT); ///< 100%
}
static COMPONENT_BLOCK_ENTRY mGraphicsDxeIpBlocks = {
&gGraphicsDxeConfigGuid, sizeof (GRAPHICS_DXE_CONFIG), GRAPHICS_DXE_CONFIG_REVISION, LoadIgdDxeDefault};
/**
Get DXE Graphics config block table total size.
@retval Size of DXE Graphics config block table
**/
UINT16
EFIAPI
GraphicsGetConfigBlockTotalSizeDxe (
VOID
)
{
return mGraphicsDxeIpBlocks.Size;
}
/**
GraphicsAddConfigBlocksDxe add all DXE Graphics config block.
@param[in] ConfigBlockTableAddress The pointer to add SA config blocks
@retval EFI_SUCCESS The policy default is initialized.
@retval EFI_OUT_OF_RESOURCES Insufficient resources to create buffer
**/
EFI_STATUS
EFIAPI
GraphicsAddConfigBlocksDxe (
IN VOID *ConfigBlockTableAddress
)
{
EFI_STATUS Status;
Status = AddComponentConfigBlocks (ConfigBlockTableAddress, &mGraphicsDxeIpBlocks, 1);
return Status;
}