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