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