]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2DeviceRefCodePkg/ValleyView2Soc/NorthCluster/Include/Protocol/IgdOpRegion.h
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / Vlv2DeviceRefCodePkg / ValleyView2Soc / NorthCluster / Include / Protocol / IgdOpRegion.h
CommitLineData
3cbfba02
DW
1\r
2/*++\r
3\r
4Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved\r
5\r
7ede8060 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
3cbfba02
DW
7\r
8\r
9Module Name:\r
10\r
11 IgdOpRegion.h\r
12\r
13Abstract:\r
14\r
15 This file is part of the IGD OpRegion Implementation. The IGD OpRegion is\r
16 an interface between system BIOS, ASL code, and Graphics drivers.\r
17\r
18 Supporting Specifiction: IGD OpRegion/Software SCI SPEC\r
19\r
20 Note: Data structures defined in this protocol are packed not naturally\r
21 aligned.\r
22\r
23 GUID forms:\r
24 {CDC5DDDF-E79D-41ec-A9B0-6565490DB9D3}\r
25 (0xcdc5dddf, 0xe79d, 0x41ec, 0xa9, 0xb0, 0x65, 0x65, 0x49, 0xd, 0xb9, 0xd3);\r
26\r
27 Acronyms:\r
28 NVS: ACPI Non Volatile Storage\r
29 OpRegion: ACPI Operational Region\r
30 VBT: Video BIOS Table (OEM customizable data)\r
31\r
32--*/\r
33\r
34#ifndef _IGD_OPREGION_PROTOCOL_H_\r
35#define _IGD_OPREGION_PROTOCOL_H_\r
36\r
37//\r
38// OpRegion / Software SCI protocol GUID\r
39//\r
40#define IGD_OPREGION_PROTOCOL_GUID \\r
41 { \\r
42 0xcdc5dddf, 0xe79d, 0x41ec, 0xa9, 0xb0, 0x65, 0x65, 0x49, 0xd, 0xb9, 0xd3 \\r
43 }\r
44\r
45//\r
46// Extern the GUID for protocol users.\r
47//\r
48extern EFI_GUID gIgdOpRegionProtocolGuid;\r
49\r
50//\r
51// Forward reference for pure ANSI compatability\r
52//\r
53typedef struct _IGD_OPREGION_PROTOCOL IGD_OPREGION_PROTOCOL;\r
54\r
55//\r
56// Protocol data definitions\r
57//\r
58\r
59//\r
60// OpRegion structures:\r
61// Sub-structures define the different parts of the OpRegion followed by the\r
62// main structure representing the entire OpRegion.\r
63//\r
64// Note: These structures are packed to 1 byte offsets because the exact\r
65// data location is requred by the supporting design specification due to\r
66// the fact that the data is used by ASL and Graphics driver code compiled\r
67// separatly.\r
68//\r
69\r
70//\r
71// OpRegion header (mailbox 0) structure and #defines.\r
72//\r
73#pragma pack (1)\r
74typedef struct {\r
75 CHAR8 SIGN[0x10]; // 0 OpRegion signature\r
76 UINT32 SIZE; // 0x10 OpRegion size\r
77 UINT32 OVER; // 0x14 OpRegion structure version\r
78 UINT8 SVER[0x20]; // 0x18 System BIOS build version\r
79 UINT8 VVER[0x10]; // 0x38 Video BIOS build version\r
80 UINT8 GVER[0x10]; // 0x48 Graphic driver build version\r
81 UINT32 MBOX; // 0x58 Mailboxes supported\r
82 UINT32 DMOD; // 0x5C Driver Model\r
83 UINT32 PCON; // 0x60 Platform Configuration Info\r
84 CHAR8 GOPV[0x20]; // 0X64 GOP build version\r
85 UINT8 RSV[0x7C]; // Reserved\r
86} OPREGION_HEADER;\r
87#pragma pack ()\r
88\r
89//\r
90// OpRegion mailbox 1 (public ACPI Methods).\r
91//\r
92#pragma pack (1)\r
93typedef struct {\r
94 UINT32 DRDY; // 0 Driver readiness\r
95 UINT32 CSTS; // 4 Status\r
96 UINT32 CEVT; // 8 Current event\r
97 UINT8 RM11[0x14]; // 12 Reserved\r
98 UINT32 DIDL; // 32 Supported display devices list\r
99 UINT32 DDL2; // 8 Devices.\r
100 UINT32 DDL3;\r
101 UINT32 DDL4;\r
102 UINT32 DDL5;\r
103 UINT32 DDL6;\r
104 UINT32 DDL7;\r
105 UINT32 DDL8;\r
106 UINT32 CPDL; // 64 Currently present display devices list\r
107 UINT32 CPL2; // 8 Devices.\r
108 UINT32 CPL3;\r
109 UINT32 CPL4;\r
110 UINT32 CPL5;\r
111 UINT32 CPL6;\r
112 UINT32 CPL7;\r
113 UINT32 CPL8;\r
114 UINT32 CADL; // 96 Currently active display devices list\r
115 UINT32 CAL2; // 8 Devices.\r
116 UINT32 CAL3;\r
117 UINT32 CAL4;\r
118 UINT32 CAL5;\r
119 UINT32 CAL6;\r
120 UINT32 CAL7;\r
121 UINT32 CAL8;\r
122 UINT32 NADL; // 128 Next active device list\r
123 UINT32 NDL2; // 8 Devices.\r
124 UINT32 NDL3;\r
125 UINT32 NDL4;\r
126 UINT32 NDL5;\r
127 UINT32 NDL6;\r
128 UINT32 NDL7;\r
129 UINT32 NDL8;\r
130 UINT32 ASLP; // 160 ASL sleep timeout\r
131 UINT32 TIDX; // 164 Toggle table index\r
132 UINT32 CHPD; // 168 Current hot plug enable indicator\r
133 UINT32 CLID; // 172 Current lid state indicator\r
134 UINT32 CDCK; // 176 Current docking state indicator\r
135 UINT32 SXSW; // 180 Display Switch notification on Sx State resume\r
136 UINT32 EVTS; // 184 Events supported by ASL\r
137 UINT32 CNOT; // 188 Current OS Notification\r
138 UINT32 NRDY; // 192 Reasons for DRDY = 0\r
139 UINT8 RM12[0x3C]; // 196 Reserved\r
140} OPREGION_MBOX1;\r
141#pragma pack ()\r
142\r
143//\r
144// OpRegion mailbox 2 (Software SCI Interface).\r
145//\r
146#pragma pack (1)\r
147typedef struct {\r
148 UINT32 SCIC; // 0 Software SCI function number parameters\r
149 UINT32 PARM; // 4 Software SCI additional parameters\r
150 UINT32 DSLP; // 8 Driver sleep timeout\r
151 UINT8 RM21[0xF4]; // 12 Reserved\r
152} OPREGION_MBOX2;\r
153#pragma pack ()\r
154\r
155//\r
156// OpRegion mailbox 3 (Power Conservation).\r
157//\r
158#pragma pack (1)\r
159typedef struct {\r
160 UINT32 ARDY; // 0 Driver readiness\r
161 UINT32 ASLC; // 4 ASLE interrupt command / status\r
162 UINT32 TCHE; // 8 Technology enabled indicator\r
163 UINT32 ALSI; // 12 Current ALS illuminance reading\r
164 UINT32 BCLP; // 16 Backlight britness to set\r
165 UINT32 PFIT; // 20 Panel fitting Current State or Request\r
166 UINT32 CBLV; // 24 Brightness Current State\r
167 UINT16 BCLM[0x14]; // 28 Backlight Brightness Level Duty Cycle Mapping Table\r
168 UINT32 CPFM; // 68 Panel Fitting Current Mode\r
169 UINT32 EPFM; // 72 Enabled Panel Fitting Mode\r
170 UINT8 PLUT[0x4A]; // 76 Panel Look Up Table\r
171 UINT32 PFMB; // 150 PWM Frequency and Minimum Brightness\r
172 UINT32 CCDV; // 154 Color Correction Default Values\r
173 UINT32 PCFT; // 158 Power Conservation Features\r
174 UINT8 RM31[0x5E]; // 162 Reserved\r
175} OPREGION_MBOX3;\r
176#pragma pack ()\r
177\r
178//\r
179// OpRegion mailbox 4 (VBT).\r
180//\r
181#pragma pack (1)\r
182typedef struct {\r
183 UINT8 GVD1[0x1800]; // 6K Reserved\r
184} OPREGION_VBT;\r
185#pragma pack ()\r
186\r
187#pragma pack (1)\r
188typedef struct {\r
189 UINT8 EDIDOVRD[0x400]; // 6K Edid overriding data\r
190} OPREGION_MBOX5;\r
191#pragma pack ()\r
192//\r
193// Entire OpRegion\r
194//\r
195#pragma pack (1)\r
196typedef struct {\r
197 OPREGION_HEADER Header; // OpRegion header\r
198 OPREGION_MBOX1 MBox1; // Mailbox 1: Public ACPI Methods\r
199 OPREGION_MBOX2 MBox2; // Mailbox 2: Software SCI Inteface\r
200 OPREGION_MBOX3 MBox3; // Mailbox 3: Power Conservation\r
201 OPREGION_VBT VBT; // VBT: Video BIOS Table (OEM customizable data)\r
202 OPREGION_MBOX5 MBox5;\r
203} IGD_OPREGION_STRUC;\r
204#pragma pack ()\r
205\r
206//\r
207// Protocol data structure definition\r
208//\r
209struct _IGD_OPREGION_PROTOCOL {\r
210 IGD_OPREGION_STRUC *OpRegion;\r
211};\r
212\r
213#endif\r