/** @file This is part of the implementation of an Intel Graphics drivers OpRegion / Software SCI interface between system BIOS, ASL code, and Graphics drivers. Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _DXE_IGD_OPREGION_INIT_LIB_H_ #define _DXE_IGD_OPREGION_INIT_LIB_H_ /// /// Statements that include other header files. /// #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /// /// Driver Consumed Protocol Prototypes /// #include #include #include #include /// /// Driver Produced Protocol Prototypes /// #include #pragma pack(push, 1) /// /// /// OpRegion (Miscellaneous) defines. /// /// OpRegion Header defines. /// typedef UINT16 STRING_REF; #define HEADER_SIGNATURE "IntelGraphicsMem" #define HEADER_SIZE 0x2000 #define HEADER_OPREGION_REV 0x00 #define HEADER_MBOX_SUPPORT (HD_MBOX5 + HD_MBOX4 + HD_MBOX3 + HD_MBOX2 + HD_MBOX1) #define HD_MBOX1 BIT0 #define HD_MBOX2 BIT1 #define HD_MBOX3 BIT2 #define HD_MBOX4 BIT3 #define HD_MBOX5 BIT4 #define SVER_SIZE 32 /// /// OpRegion Mailbox 1 EQUates. /// /// OpRegion Mailbox 3 EQUates. /// #define ALS_ENABLE BIT0 #define BACKLIGHT_BRIGHTNESS 0xFF #define FIELD_VALID_BIT BIT31 #define PFIT_ENABLE BIT2 #define PFIT_OPRN_AUTO 0x00000000 #define PFIT_OPRN_SCALING 0x00000007 #define PFIT_OPRN_OFF 0x00000000 #define PFIT_SETUP_AUTO 0 #define PFIT_SETUP_SCALING 1 #define PFIT_SETUP_OFF 2 #define INIT_BRIGHT_LEVEL 0x64 #define PFIT_STRETCH 6 /// /// Video BIOS / VBT defines /// #define OPTION_ROM_SIGNATURE 0xAA55 #define VBIOS_LOCATION_PRIMARY 0xC0000 #define VBT_SIGNATURE SIGNATURE_32 ('$', 'V', 'B', 'T') /// /// Typedef stuctures /// typedef struct { UINT16 Signature; /// 0xAA55 UINT8 Size512; UINT8 Reserved[21]; UINT16 PcirOffset; UINT16 VbtOffset; } INTEL_VBIOS_OPTION_ROM_HEADER; typedef struct { UINT32 Signature; /// "PCIR" UINT16 VendorId; /// 0x8086 UINT16 DeviceId; UINT16 Reserved0; UINT16 Length; UINT8 Revision; UINT8 ClassCode[3]; UINT16 ImageLength; UINT16 CodeRevision; UINT8 CodeType; UINT8 Indicator; UINT16 Reserved1; } INTEL_VBIOS_PCIR_STRUCTURE; typedef struct { UINT8 HeaderSignature[20]; UINT16 HeaderVersion; UINT16 HeaderSize; UINT16 HeaderVbtSize; UINT8 HeaderVbtCheckSum; UINT8 HeaderReserved; UINT32 HeaderOffsetVbtDataBlock; UINT32 HeaderOffsetAim1; UINT32 HeaderOffsetAim2; UINT32 HeaderOffsetAim3; UINT32 HeaderOffsetAim4; UINT8 DataHeaderSignature[16]; UINT16 DataHeaderVersion; UINT16 DataHeaderSize; UINT16 DataHeaderDataBlockSize; UINT8 CoreBlockId; UINT16 CoreBlockSize; UINT16 CoreBlockBiosSize; UINT8 CoreBlockBiosType; UINT8 CoreBlockReleaseStatus; UINT8 CoreBlockHWSupported; UINT8 CoreBlockIntegratedHW; UINT8 CoreBlockBiosBuild[4]; UINT8 CoreBlockBiosSignOn[155]; } VBIOS_VBT_STRUCTURE; #pragma pack(pop) /// /// Driver Private Function definitions /// /** Graphics OpRegion / Software SCI driver installation function. @retval EFI_SUCCESS - The driver installed without error. @retval EFI_ABORTED - The driver encountered an error and could not complete installation of the ACPI tables. **/ EFI_STATUS IgdOpRegionInit ( VOID ); /** Get Intel video BIOS VBT information (i.e. Pointer to VBT and VBT size). The VBT (Video BIOS Table) is a block of customizable data that is built within the video BIOS and edited by customers. @retval EFI_SUCCESS - Video BIOS VBT information returned. @exception EFI_UNSUPPORTED - Could not find VBT information (*VBiosVbtPtr = NULL). **/ EFI_STATUS GetVBiosVbtEndOfDxe ( VOID ); /** Update Graphics OpRegion after PCI enumeration. @retval EFI_SUCCESS - The function completed successfully. **/ EFI_STATUS UpdateIgdOpRegionEndOfDxe ( VOID ); #endif