/** @file
DXE driver for Initializing SystemAgent Graphics ACPI table initialization.
Copyright (c) 2017 - 2020 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include "GraphicsInit.h"
#include
extern SYSTEM_AGENT_GLOBAL_NVS_AREA_PROTOCOL mSaGlobalNvsAreaProtocol;
/**
Initialize GT ACPI tables
@param[in] ImageHandle - Handle for the image of this driver
@param[in] SaPolicy - SA DXE Policy protocol
@retval EFI_SUCCESS - GT ACPI initialization complete
@retval EFI_NOT_FOUND - Dxe System Table not found.
@retval EFI_OUT_OF_RESOURCES - Mmio not allocated successfully.
**/
EFI_STATUS
GraphicsInit (
IN EFI_HANDLE ImageHandle,
IN SA_POLICY_PROTOCOL *SaPolicy
)
{
EFI_STATUS Status;
GRAPHICS_DXE_CONFIG *GraphicsDxeConfig;
Status = GetConfigBlock ((VOID *) SaPolicy, &gGraphicsDxeConfigGuid, (VOID *)&GraphicsDxeConfig);
ASSERT_EFI_ERROR (Status);
///
/// Update IGD SA Global NVS
///
DEBUG ((DEBUG_INFO, " Update Igd SA Global NVS Area.\n"));
mSaGlobalNvsAreaProtocol.Area->AlsEnable = GraphicsDxeConfig->AlsEnable;
///
/// Initialize IGD state by checking if IGD Device 2 Function 0 is enabled in the chipset
///
if (MmioRead16 (MmPciBase (SA_MC_BUS, 0, 0) + R_SA_DEVEN) & B_SA_DEVEN_D2EN_MASK) {
mSaGlobalNvsAreaProtocol.Area->IgdState = 1;
} else {
mSaGlobalNvsAreaProtocol.Area->IgdState = 0;
}
mSaGlobalNvsAreaProtocol.Area->BrightnessPercentage = 100;
mSaGlobalNvsAreaProtocol.Area->IgdBootType = GraphicsDxeConfig->IgdBootType;
mSaGlobalNvsAreaProtocol.Area->IgdPanelType = GraphicsDxeConfig->IgdPanelType;
mSaGlobalNvsAreaProtocol.Area->IgdPanelScaling = GraphicsDxeConfig->IgdPanelScaling;
///
/// Get SFF power mode platform data for the IGD driver. Flip the bit (bitwise xor)
/// since Setup value is opposite of NVS and IGD OpRegion value.
///
mSaGlobalNvsAreaProtocol.Area->IgdDvmtMemSize = GraphicsDxeConfig->IgdDvmtMemSize;
mSaGlobalNvsAreaProtocol.Area->IgdFunc1Enable = 0;
mSaGlobalNvsAreaProtocol.Area->IgdSciSmiMode = 0;
mSaGlobalNvsAreaProtocol.Area->GfxTurboIMON = GraphicsDxeConfig->GfxTurboIMON;
mSaGlobalNvsAreaProtocol.Area->EdpValid = 0;
return EFI_SUCCESS;
}