]>
Commit | Line | Data |
---|---|---|
1 | \r | |
2 | /*++\r | |
3 | \r | |
4 | Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved\r | |
5 | \r | |
6 | SPDX-License-Identifier: BSD-2-Clause-Patent\r | |
7 | \r | |
8 | \r | |
9 | Module Name:\r | |
10 | \r | |
11 | IgdOpRegion.h\r | |
12 | \r | |
13 | Abstract:\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 | |
48 | extern EFI_GUID gIgdOpRegionProtocolGuid;\r | |
49 | \r | |
50 | //\r | |
51 | // Forward reference for pure ANSI compatability\r | |
52 | //\r | |
53 | typedef 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 | |
74 | typedef 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 | |
93 | typedef 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 | |
147 | typedef 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 | |
159 | typedef 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 | |
182 | typedef struct {\r | |
183 | UINT8 GVD1[0x1800]; // 6K Reserved\r | |
184 | } OPREGION_VBT;\r | |
185 | #pragma pack ()\r | |
186 | \r | |
187 | #pragma pack (1)\r | |
188 | typedef 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 | |
196 | typedef 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 | |
209 | struct _IGD_OPREGION_PROTOCOL {\r | |
210 | IGD_OPREGION_STRUC *OpRegion;\r | |
211 | };\r | |
212 | \r | |
213 | #endif\r |