/** @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; }