]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2DeviceRefCodePkg/AcpiTablesPCAT/IgdOpRn.ASL
MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version
[mirror_edk2.git] / Vlv2DeviceRefCodePkg / AcpiTablesPCAT / IgdOpRn.ASL
1 /*++
2
3 Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved
4
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13
14
15 Module Name:
16
17 IgdOpRn.ASL
18
19 Abstract:
20
21 IGD OpRegion/Software SCI Reference Code for the Baytrail Family.
22 This file contains the interrupt handler code for the Integrated
23 Graphics Device (IGD) OpRegion/Software SCI mechanism.
24
25 --*/
26
27
28 //NOTES:
29 //
30 // (1) The code contained in this file inherits the scope in which it
31 // was included. So BIOS developers must be sure to include this
32 // file in the scope associated with the graphics device
33 // (ex. \_SB.PCI0.GFX0).
34 // (2) Create a _L06 method under the GPE scope to handle the event
35 // generated by the graphics driver. The _L06 method must call
36 // the GSCI method in this file.
37 // (3) The MCHP operation region assumes that _ADR and _BBN names
38 // corresponding to bus 0, device0, function 0 have been declared
39 // under the PCI0 scope.
40 // (4) Before the first execution of the GSCI method, the base address
41 // of the GMCH SCI OpRegion must be programmed where the driver can
42 // access it. A 32bit scratch register at 0xFC in the IGD PCI
43 // configuration space (B0/D2/F0/R0FCh) is used for this purpose.
44
45 // Define an OperationRegion to cover the GMCH PCI configuration space as
46 // described in the IGD OpRegion specificiation.
47
48 // Define an OperationRegion to cover the IGD PCI configuration space as
49 // described in the IGD OpRegion specificiation.
50
51 OperationRegion(IGDP, PCI_Config,0x00,0x100)
52 Field(IGDP, AnyAcc, NoLock, Preserve)
53 {
54 Offset(0x10), // GTTMMADR
55 MADR, 32,
56 Offset(0x50), // GMCH Graphics Control Register
57 , 1,
58 GIVD, 1, // IGD VGA disable bit
59 , 1,
60 GUMA, 5, // Stolen memory size
61 , 8,
62 Offset(0x54),
63 , 4,
64 GMFN, 1, // Gfx function 1 enable
65 , 27,
66 Offset(0x5C), // Stolen Memory Base Address
67 GSTM, 32,
68 Offset(0xE0), // Reg 0xE8, SWSCI control register
69 GSSE, 1, // Graphics SCI event (1=event pending)
70 GSSB, 14, // Graphics SCI scratchpad bits
71 GSES, 1, // Graphics event select (1=SCI)
72 Offset(0xE4),
73 ASLE, 8, // Reg 0xE4, ASLE interrupt register
74 , 24, // Only use first byte of ASLE reg
75 Offset(0xFC),
76 ASLS, 32, // Reg 0xFC, Address of the IGD OpRegion
77 }
78
79 Method (MCHK, 0, Serialized)
80 {
81
82 If (LNotEqual (MADR, 0xFFFFFFFF))
83 {
84 OperationRegion(IGMM,SystemMemory,MADR,0x3000)
85 Field(IGMM,AnyAcc, NoLock, Preserve)
86 {
87 Offset(0X20C8),
88 , 4,
89 DCFE, 4, // DISPLAY_CLOCK_FREQUENCY_ENCODING
90 }
91 }
92 }
93
94
95 // Define an OperationRegion to cover the IGD OpRegion layout.
96
97 OperationRegion(IGDM, SystemMemory, ASLB, 0x2000)
98 Field(IGDM, AnyAcc, NoLock, Preserve)
99 {
100
101 // OpRegion Header
102
103 SIGN, 128, // Signature-"IntelGraphicsMem"
104 SIZE, 32, // OpRegion Size
105 OVER, 32, // OpRegion Version
106 SVER, 256, // System BIOS Version
107 VVER, 128, // VBIOS Version
108 GVER, 128, // Driver version
109 MBOX, 32, // Mailboxes supported
110 DMOD, 32, // Driver Model
111 PCON, 32, // 96, Platform Configuration
112
113 // OpRegion Mailbox 1 (Public ACPI Methods)
114 // Note: Mailbox 1 is normally reserved for desktop platforms.
115
116 Offset(0x100),
117 DRDY, 32, // Driver readiness (ACPI notification)
118 CSTS, 32, // Notification status
119 CEVT, 32, // Current event
120 Offset(0x120),
121 DIDL, 32, // Supported display device ID list
122 DDL2, 32, // Allows for 8 devices
123 DDL3, 32,
124 DDL4, 32,
125 DDL5, 32,
126 DDL6, 32,
127 DDL7, 32,
128 DDL8, 32,
129 CPDL, 32, // Currently present display list
130 CPL2, 32, // Allows for 8 devices
131 CPL3, 32,
132 CPL4, 32,
133 CPL5, 32,
134 CPL6, 32,
135 CPL7, 32,
136 CPL8, 32,
137 CAD1, 32, // Currently active display list
138 CAL2, 32, // Allows for 8 devices
139 CAL3, 32,
140 CAL4, 32,
141 CAL5, 32,
142 CAL6, 32,
143 CAL7, 32,
144 CAL8, 32,
145 NADL, 32, // Next active display list
146 NDL2, 32, // Allows for 8 devices
147 NDL3, 32,
148 NDL4, 32,
149 NDL5, 32,
150 NDL6, 32,
151 NDL7, 32,
152 NDL8, 32,
153 ASLP, 32, // ASL sleep timeout
154 TIDX, 32, // Toggle table index
155 CHPD, 32, // Current hot plug enable indicator
156 CLID, 32, // Current lid state indicator
157 CDCK, 32, // Current docking state indicator
158 SXSW, 32, // Display switch notify on resume
159 EVTS, 32, // Events supported by ASL (diag only)
160 CNOT, 32, // Current OS notifications (diag only)
161 NRDY, 32,
162
163 // OpRegion Mailbox 2 (Software SCI Interface)
164
165 Offset(0x200), // SCIC
166 SCIE, 1, // SCI entry bit (1=call unserviced)
167 GEFC, 4, // Entry function code
168 GXFC, 3, // Exit result
169 GESF, 8, // Entry/exit sub-function/parameter
170 , 16, // SCIC[31:16] reserved
171 Offset(0x204), // PARM
172 PARM, 32, // PARM register (extra parameters)
173 DSLP, 32, // Driver sleep time out
174
175 // OpRegion Mailbox 3 (BIOS to Driver Notification)
176 // Note: Mailbox 3 is normally reserved for desktop platforms.
177
178 Offset(0x300),
179 ARDY, 32, // Driver readiness (power conservation)
180 ASLC, 32, // ASLE interrupt command/status
181 TCHE, 32, // Technology enabled indicator
182 ALSI, 32, // Current ALS illuminance reading
183 BCLP, 32, // Backlight brightness
184 PFIT, 32, // Panel fitting state or request
185 CBLV, 32, // Current brightness level
186 BCLM, 320, // Backlight brightness level duty cycle mapping table
187 CPFM, 32, // Current panel fitting mode
188 EPFM, 32, // Enabled panel fitting modes
189 PLUT, 592, // Optional. 74-byte Panel LUT Table
190 PFMB, 32, // Optional. PWM Frequency and Minimum Brightness
191 CCDV, 32, // Optional. Gamma, Brightness, Contrast values.
192 PCFT, 32, // Optional. Power Conservation Features
193
194 Offset(0x3B6),
195 STAT, 32, // Status register
196
197 // OpRegion Mailbox 4 (VBT)
198
199 Offset(0x400),
200 GVD1, 0xC000, // 6K bytes maximum VBT image
201
202 // OpRegion Mailbox 5 (BIOS to Driver Notification Extension)
203
204 Offset(0x1C00),
205 PHED, 32, // Panel Header
206 BDDC, 2048, // Panel EDID (Max 256 bytes)
207
208 }
209
210
211
212 // Convert boot display type into a port mask.
213
214 Name (DBTB, Package()
215 {
216 0x0000, // Automatic
217 0x0007, // Port-0 : Integrated CRT
218 0x0038, // Port-1 : DVO-A, or Integrated LVDS
219 0x01C0, // Port-2 : SDVO-B, or SDVO-B/C
220 0x0E00, // Port-3 : SDVO-C
221 0x003F, // [CRT + DVO-A / Integrated LVDS]
222 0x01C7, // [CRT + SDVO-B] or [CRT + SDVO-B/C]
223 0x0E07, // [CRT + SDVO-C]
224 0x01F8, // [DVO-A / Integrated LVDS + SDVO-B]
225 0x0E38, // [DVO-A / Integrated LVDS + SDVO-C]
226 0x0FC0, // [SDVO-B + SDVO-C]
227 0x0000, // Reserved
228 0x0000, // Reserved
229 0x0000, // Reserved
230 0x0000, // Reserved
231 0x0000, // Reserved
232 0x7000, // Port-4: Integrated TV
233 0x7007, // [Integrated TV + CRT]
234 0x7038, // [Integrated TV + LVDS]
235 0x71C0, // [Integrated TV + DVOB]
236 0x7E00 // [Integrated TV + DVOC]
237 })
238
239 // Core display clock value table.
240
241 Name (CDCT, Package()
242 {
243 Package() {160},
244 Package() {200},
245 Package() {267},
246 Package() {320},
247 Package() {356},
248 Package() {400},
249 })
250
251 // Defined exit result values:
252
253 Name (SUCC, 1) // Exit result: Success
254 Name (NVLD, 2) // Exit result: Invalid parameter
255 Name (CRIT, 4) // Exit result: Critical failure
256 Name (NCRT, 6) // Exit result: Non-critical failure
257
258
259 /************************************************************************;
260 ;*
261 ;* Name: GSCI
262 ;*
263 ;* Description: Handles an SCI generated by the graphics driver. The
264 ;* PARM and SCIC input fields are parsed to determine the
265 ;* functionality requested by the driver. GBDA or SBCB
266 ;* is called based on the input data in SCIC.
267 ;*
268 ;* Usage: The method must be called in response to a GPE 06 event
269 ;* which will be generated by the graphics driver.
270 ;* Ex: Method(\_GPE._L06) {Return(\_SB.PCI0.GFX0.GSCI())}
271 ;*
272 ;* Input: PARM and SCIC are indirect inputs
273 ;*
274 ;* Output: PARM and SIC are indirect outputs
275 ;*
276 ;* References: GBDA (Get BIOS Data method), SBCB (System BIOS Callback
277 ;* method)
278 ;*
279 ;************************************************************************/
280
281 Method (GSCI, 0, Serialized)
282 {
283 Include("IgdOGBDA.ASL") // "Get BIOS Data" Functions
284 Include("IgdOSBCB.ASL") // "System BIOS CallBacks"
285
286 If (LEqual(GEFC, 4))
287 {
288 Store(GBDA(), GXFC) // Process Get BIOS Data functions
289 }
290
291 If (LEqual(GEFC, 6))
292 {
293 Store(SBCB(), GXFC) // Process BIOS Callback functions
294 }
295
296 Store(0, GEFC) // Wipe out the entry function code
297 Store(1, SCIS) // Clear the GUNIT SCI status bit in PCH ACPI I/O space.
298 Store(0, GSSE) // Clear the SCI generation bit in PCI space.
299 Store(0, SCIE) // Clr SCI serviced bit to signal completion
300
301 Return(Zero)
302 }
303
304 // Include MOBLFEAT.ASL for mobile systems only. Remove for desktop.
305 Include("IgdOMOBF.ASL") // IGD SCI mobile features