4 Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved
6 This program and the accompanying materials are licensed and made available under
7 the terms and conditions of the BSD License that accompanies this distribution.
8 The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
21 This file is part of the IGD OpRegion Implementation. The IGD OpRegion is
22 an interface between system BIOS, ASL code, and Graphics drivers.
24 Supporting Specifiction: IGD OpRegion/Software SCI SPEC
26 Note: Data structures defined in this protocol are packed not naturally
30 {CDC5DDDF-E79D-41ec-A9B0-6565490DB9D3}
31 (0xcdc5dddf, 0xe79d, 0x41ec, 0xa9, 0xb0, 0x65, 0x65, 0x49, 0xd, 0xb9, 0xd3);
34 NVS: ACPI Non Volatile Storage
35 OpRegion: ACPI Operational Region
36 VBT: Video BIOS Table (OEM customizable data)
40 #ifndef _IGD_OPREGION_PROTOCOL_H_
41 #define _IGD_OPREGION_PROTOCOL_H_
44 // OpRegion / Software SCI protocol GUID
46 #define IGD_OPREGION_PROTOCOL_GUID \
48 0xcdc5dddf, 0xe79d, 0x41ec, 0xa9, 0xb0, 0x65, 0x65, 0x49, 0xd, 0xb9, 0xd3 \
52 // Extern the GUID for protocol users.
54 extern EFI_GUID gIgdOpRegionProtocolGuid
;
57 // Forward reference for pure ANSI compatability
59 typedef struct _IGD_OPREGION_PROTOCOL IGD_OPREGION_PROTOCOL
;
62 // Protocol data definitions
66 // OpRegion structures:
67 // Sub-structures define the different parts of the OpRegion followed by the
68 // main structure representing the entire OpRegion.
70 // Note: These structures are packed to 1 byte offsets because the exact
71 // data location is requred by the supporting design specification due to
72 // the fact that the data is used by ASL and Graphics driver code compiled
77 // OpRegion header (mailbox 0) structure and #defines.
81 CHAR8 SIGN
[0x10]; // 0 OpRegion signature
82 UINT32 SIZE
; // 0x10 OpRegion size
83 UINT32 OVER
; // 0x14 OpRegion structure version
84 UINT8 SVER
[0x20]; // 0x18 System BIOS build version
85 UINT8 VVER
[0x10]; // 0x38 Video BIOS build version
86 UINT8 GVER
[0x10]; // 0x48 Graphic driver build version
87 UINT32 MBOX
; // 0x58 Mailboxes supported
88 UINT32 DMOD
; // 0x5C Driver Model
89 UINT32 PCON
; // 0x60 Platform Configuration Info
90 CHAR8 GOPV
[0x20]; // 0X64 GOP build version
91 UINT8 RSV
[0x7C]; // Reserved
96 // OpRegion mailbox 1 (public ACPI Methods).
100 UINT32 DRDY
; // 0 Driver readiness
101 UINT32 CSTS
; // 4 Status
102 UINT32 CEVT
; // 8 Current event
103 UINT8 RM11
[0x14]; // 12 Reserved
104 UINT32 DIDL
; // 32 Supported display devices list
105 UINT32 DDL2
; // 8 Devices.
112 UINT32 CPDL
; // 64 Currently present display devices list
113 UINT32 CPL2
; // 8 Devices.
120 UINT32 CADL
; // 96 Currently active display devices list
121 UINT32 CAL2
; // 8 Devices.
128 UINT32 NADL
; // 128 Next active device list
129 UINT32 NDL2
; // 8 Devices.
136 UINT32 ASLP
; // 160 ASL sleep timeout
137 UINT32 TIDX
; // 164 Toggle table index
138 UINT32 CHPD
; // 168 Current hot plug enable indicator
139 UINT32 CLID
; // 172 Current lid state indicator
140 UINT32 CDCK
; // 176 Current docking state indicator
141 UINT32 SXSW
; // 180 Display Switch notification on Sx State resume
142 UINT32 EVTS
; // 184 Events supported by ASL
143 UINT32 CNOT
; // 188 Current OS Notification
144 UINT32 NRDY
; // 192 Reasons for DRDY = 0
145 UINT8 RM12
[0x3C]; // 196 Reserved
150 // OpRegion mailbox 2 (Software SCI Interface).
154 UINT32 SCIC
; // 0 Software SCI function number parameters
155 UINT32 PARM
; // 4 Software SCI additional parameters
156 UINT32 DSLP
; // 8 Driver sleep timeout
157 UINT8 RM21
[0xF4]; // 12 Reserved
162 // OpRegion mailbox 3 (Power Conservation).
166 UINT32 ARDY
; // 0 Driver readiness
167 UINT32 ASLC
; // 4 ASLE interrupt command / status
168 UINT32 TCHE
; // 8 Technology enabled indicator
169 UINT32 ALSI
; // 12 Current ALS illuminance reading
170 UINT32 BCLP
; // 16 Backlight britness to set
171 UINT32 PFIT
; // 20 Panel fitting Current State or Request
172 UINT32 CBLV
; // 24 Brightness Current State
173 UINT16 BCLM
[0x14]; // 28 Backlight Brightness Level Duty Cycle Mapping Table
174 UINT32 CPFM
; // 68 Panel Fitting Current Mode
175 UINT32 EPFM
; // 72 Enabled Panel Fitting Mode
176 UINT8 PLUT
[0x4A]; // 76 Panel Look Up Table
177 UINT32 PFMB
; // 150 PWM Frequency and Minimum Brightness
178 UINT32 CCDV
; // 154 Color Correction Default Values
179 UINT32 PCFT
; // 158 Power Conservation Features
180 UINT8 RM31
[0x5E]; // 162 Reserved
185 // OpRegion mailbox 4 (VBT).
189 UINT8 GVD1
[0x1800]; // 6K Reserved
195 UINT8 EDIDOVRD
[0x400]; // 6K Edid overriding data
203 OPREGION_HEADER Header
; // OpRegion header
204 OPREGION_MBOX1 MBox1
; // Mailbox 1: Public ACPI Methods
205 OPREGION_MBOX2 MBox2
; // Mailbox 2: Software SCI Inteface
206 OPREGION_MBOX3 MBox3
; // Mailbox 3: Power Conservation
207 OPREGION_VBT VBT
; // VBT: Video BIOS Table (OEM customizable data)
208 OPREGION_MBOX5 MBox5
;
209 } IGD_OPREGION_STRUC
;
213 // Protocol data structure definition
215 struct _IGD_OPREGION_PROTOCOL
{
216 IGD_OPREGION_STRUC
*OpRegion
;