]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/VlvPlatformInitDxe/IgdOpRegion.h
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / Vlv2TbltDevicePkg / VlvPlatformInitDxe / IgdOpRegion.h
CommitLineData
3cbfba02
DW
1\r
2/*++\r
3\r
4Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved\r
5 \r\r
9dc8036d
MK
6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
7\r
3cbfba02
DW
8 \r\r
9\r
10\r
11Module Name:\r
12\r
13 IgdOpRegion.h\r
14\r
15Abstract:\r
16\r
17 This is part of the implementation of an Intel Graphics drivers OpRegion /\r
18 Software SCI interface between system BIOS, ASL code, and Graphics drivers.\r
19\r
20 Supporting Specifiction: OpRegion / Software SCI SPEC 0.70\r
21\r
22 Acronyms:\r
23 IGD: Internal Graphics Device\r
24 NVS: ACPI Non Volatile Storage\r
25 OpRegion: ACPI Operational Region\r
26 VBT: Video BIOS Table (OEM customizable data)\r
27\r
28--*/\r
29\r
30#ifndef _IGD_OPREGION_H_\r
31#define _IGD_OPREGION_H_\r
32\r
33//\r
34// Statements that include other header files.\r
35//\r
36#include "VlvPlatformInit.h"\r
37#include "VlvCommonDefinitions.h"\r
38#include <Uefi/UefiInternalFormRepresentation.h>\r
39#include <FrameworkDxe.h>\r
40\r
41//\r
42//\r
43// OpRegion (Miscellaneous) #defines.\r
44//\r
45// OpRegion Header #defines.\r
46//\r
47\r
48#define HEADER_SIGNATURE "IntelGraphicsMem"\r
49#define HEADER_SIZE 0x2000\r
50#define HEADER_OPREGION_VER 0x0200\r
51#define HEADER_OPREGION_REV 0x00\r
52\r
53//\r
54//For VLV Tablet, MailBOX2(SCI)is not supported.\r
55//\r
56#define HEADER_MBOX_SUPPORT (HD_MBOX4 + HD_MBOX3 + HD_MBOX1)\r
57#define HD_MBOX1 BIT0\r
58#define HD_MBOX2 BIT1\r
59#define HD_MBOX3 BIT2\r
60#define HD_MBOX4 BIT3\r
61#define HD_MBOX5 BIT4\r
62#define SVER_SIZE 32\r
63\r
64//\r
65//Audio Type support for VLV2 A0\r
66//\r
67#define AUDIO_TYPE_SUPPORT_MASK 0xFFFFFFF3\r
68#define NO_AUDIO_SUPPORT (0<<2)\r
69#define HD_AUDIO_SUPPORT (1<<2)\r
70#define LPE_AUDIO_SUPPORT (2<<2)\r
71#define AUDIO_TYPE_FIELD_MASK 0xFFFFFFEF\r
72#define AUDIO_TYPE_FIELD_VALID (1<<4)\r
73#define AUDIO_TYPE_FIELD_INVALID (0<<4)\r
74\r
75//\r
76// OpRegion Mailbox 1 EQUates.\r
77//\r
78// OpRegion Mailbox 3 EQUates.\r
79//\r
80#define ALS_ENABLE BIT0\r
81#define BLC_ENABLE BIT1\r
82#define BACKLIGHT_BRIGHTNESS 0xFF\r
83#define FIELD_VALID_BIT BIT31\r
84#define WORD_FIELD_VALID_BIT BIT15\r
85#define PFIT_ENABLE BIT2\r
86#define PFIT_OPRN_AUTO 0x00000000\r
87#define PFIT_OPRN_SCALING 0x00000007\r
88#define PFIT_OPRN_OFF 0x00000000\r
89#define PFIT_SETUP_AUTO 0\r
90#define PFIT_SETUP_SCALING 1\r
91#define PFIT_SETUP_OFF 2\r
92#define INIT_BRIGHT_LEVEL 0x64\r
93#define PFIT_STRETCH 6\r
94#define PFIT_CENTER 1\r
95\r
96//\r
97// GMCH PCI register access #defines.\r
98//\r
99\r
100#define IgdMmPci32(Register) MmPci32 (0, IGD_BUS, IGD_DEV, IGD_FUN_0, Register)\r
101#define IgdMmPci16Or(Register, OrData) MmPci16Or (0, IGD_BUS, IGD_DEV, IGD_FUN_0, Register, OrData)\r
102#define IgdMmPci16AndThenOr(Register,AndData,OrData) MmPci16AndThenOr (0, IGD_BUS, IGD_DEV, IGD_FUN_0, Register, AndData, OrData)\r
103\r
104//\r
105// Video BIOS / VBT #defines\r
106//\r
107#define IGD_DID_VLV 0x0F31\r
108#define OPTION_ROM_SIGNATURE 0xAA55\r
109#define VBIOS_LOCATION_PRIMARY 0xC0000\r
110\r
111#define VBT_SIGNATURE SIGNATURE_32 ('$', 'V', 'B', 'T')\r
112\r
113//\r
114// Typedef stuctures\r
115//\r
116#pragma pack (1)\r
117typedef struct {\r
118 UINT16 Signature; // 0xAA55\r
119 UINT8 Size512;\r
120 UINT8 Reserved[21];\r
121 UINT16 PcirOffset;\r
122 UINT16 VbtOffset;\r
123} INTEL_VBIOS_OPTION_ROM_HEADER;\r
124#pragma pack ()\r
125\r
126#pragma pack (1)\r
127typedef struct {\r
128 UINT32 Signature; // "PCIR"\r
129 UINT16 VendorId; // 0x8086\r
130 UINT16 DeviceId;\r
131 UINT16 Reserved0;\r
132 UINT16 Length;\r
133 UINT8 Revision;\r
134 UINT8 ClassCode[3];\r
135 UINT16 ImageLength;\r
136 UINT16 CodeRevision;\r
137 UINT8 CodeType;\r
138 UINT8 Indicator;\r
139 UINT16 Reserved1;\r
140} INTEL_VBIOS_PCIR_STRUCTURE;\r
141#pragma pack ()\r
142\r
143#pragma pack (1)\r
144typedef struct {\r
145 UINT8 HeaderSignature[20];\r
146 UINT16 HeaderVersion;\r
147 UINT16 HeaderSize;\r
148 UINT16 HeaderVbtSize;\r
149 UINT8 HeaderVbtCheckSum;\r
150 UINT8 HeaderReserved;\r
151 UINT32 HeaderOffsetVbtDataBlock;\r
152 UINT32 HeaderOffsetAim1;\r
153 UINT32 HeaderOffsetAim2;\r
154 UINT32 HeaderOffsetAim3;\r
155 UINT32 HeaderOffsetAim4;\r
156 UINT8 DataHeaderSignature[16];\r
157 UINT16 DataHeaderVersion;\r
158 UINT16 DataHeaderSize;\r
159 UINT16 DataHeaderDataBlockSize;\r
160 UINT8 CoreBlockId;\r
161 UINT16 CoreBlockSize;\r
162 UINT16 CoreBlockBiosSize;\r
163 UINT8 CoreBlockBiosType;\r
164 UINT8 CoreBlockReleaseStatus;\r
165 UINT8 CoreBlockHWSupported;\r
166 UINT8 CoreBlockIntegratedHW;\r
167 UINT8 CoreBlockBiosBuild[4];\r
168 UINT8 CoreBlockBiosSignOn[155];\r
169} VBIOS_VBT_STRUCTURE;\r
170#pragma pack ()\r
171\r
172//\r
173// Driver Private Function definitions\r
174//\r
175EFI_STATUS\r
176GetSVER (\r
177 OUT UINT8 *SVER\r
178 );\r
179\r
180/**\r
181 Acquire the string associated with the ProducerGuid and return it.\r
182\r
183 @param ProducerGuid The Guid to search the HII database for\r
184 @param Token The token value of the string to extract\r
185 @param String The string that is extracted\r
186\r
187 @retval EFI_SUCCESS The function completed successfully\r
188 @retval EFI_NOT_FOUND The requested string was not found\r
189\r
190**/\r
191EFI_STATUS\r
192GetStringFromToken (\r
193 IN EFI_GUID *ProducerGuid,\r
194 IN STRING_REF Token,\r
195 OUT CHAR16 **String\r
196 );\r
197\r
198/**\r
199\r
200 Graphics OpRegion / Software SCI driver installation function.\r
201\r
202 @param Void\r
203\r
204 @retval EFI_SUCCESS The driver installed without error.\r
205 @retval EFI_ABORTED The driver encountered an error and could not complete\r
206 installation of the ACPI tables.\r
207**/\r
208EFI_STATUS\r
209IgdOpRegionInit (\r
210 void\r
211 );\r
212\r
213/**\r
214 Extract information pertaining to the HiiHandle\r
215\r
216 @param HiiHandle Hii handle\r
217 @param ImageLength For input, length of DefaultImage;\r
218 For output, length of actually required\r
219\r
220 @param DefaultImage Image buffer prepared by caller\r
221 @param Guid Guid information about the form\r
222\r
223 @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
224 @retval EFI_BUFFER_TOO_SMALL DefualtImage has no enough ImageLength\r
225 @retval EFI_SUCCESS Successfully extract data from Hii database.\r
226\r
227**/\r
228EFI_STATUS\r
229ExtractDataFromHiiHandle (\r
230 IN EFI_HII_HANDLE HiiHandle,\r
231 IN OUT UINT16 *ImageLength,\r
232 OUT UINT8 *DefaultImage,\r
233 OUT EFI_GUID *Guid\r
234 );\r
235#endif\r