]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2DeviceRefCodePkg/AcpiTablesPCAT/IgdOSBCB.ASL
Vlv2DeviceRefCodePkg: Fixed thermal issue.
[mirror_edk2.git] / Vlv2DeviceRefCodePkg / AcpiTablesPCAT / IgdOSBCB.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 IgdOSBCB.ASL
18
19 Abstract:
20
21 IGD OpRegion/Software SCI Reference Code for the Baytrail Family.
22 This file contains the system BIOS call back functionality for the
23 OpRegion/Software SCI mechanism.
24
25 --*/
26
27
28 Method (SBCB, 0, Serialized)
29 {
30
31 // Supported Callbacks: Sub-function 0
32
33 If (LEqual(GESF, 0x0))
34 {
35
36 //<TODO> An OEM may support the driver->SBIOS status callbacks, but
37 // the supported callbacks value must be modified. The code that is
38 // executed upon reception of the callbacks must be also be updated
39 // to perform the desired functionality.
40
41 Store(0x00000000, PARM) // No callbacks supported
42
43 If(LEqual(PFLV,FMBL))
44 {
45 Store(0x000F87FD, PARM) // Mobile
46 }
47 If(LEqual(PFLV,FDTP))
48 {
49 Store(0x000F87BD, PARM) // Desktop
50 }
51
52 Store(Zero, GESF) // Clear the exit parameter
53 Return(SUCC) // "Success"
54 }
55
56 // BIOS POST Completion: Sub-function 1
57
58 If (LEqual(GESF, 1))
59 {
60 Store(Zero, GESF) // Clear the exit parameter
61 Store(Zero, PARM)
62 Return(SUCC) // Not supported, but no failure
63 }
64
65 // Pre-Hires Set Mode: Sub-function 3
66
67 If (LEqual(GESF, 3))
68 {
69 Store(Zero, GESF) // Clear the exit parameter
70 Store(Zero, PARM)
71 Return(SUCC) // Not supported, but no failure
72 }
73
74 // Post-Hires Set Mode: Sub-function 4
75
76 If (LEqual(GESF, 4))
77 {
78 Store(Zero, GESF) // Clear the exit parameter
79 Store(Zero, PARM)
80 Return(SUCC) // Not supported, but no failure
81 }
82
83 // Display Switch: Sub-function 5
84
85 If (LEqual(GESF, 5))
86 {
87 Store(Zero, GESF) // Clear the exit parameter
88 Store(Zero, PARM)
89 Return(SUCC) // Not supported, but no failure
90 }
91
92 // Set TV format: Sub-function 6
93
94 If (LEqual(GESF, 6))
95 {
96
97 //<TODO> If implemented, the input values must be saved into
98 // non-volatile storage for parsing during the next boot. The
99 // following Sample code is Intel validated implementation.
100
101 Store(And(PARM, 0x0F), ITVF)
102 Store(ShiftRight(And(PARM, 0xF0), 4), ITVM)
103 Store(Zero, GESF) // Clear the exit parameter
104 Store(Zero, PARM)
105 Return(SUCC)
106 }
107
108 // Adapter Power State: Sub-function 7
109
110 If (LEqual(GESF, 7))
111 {
112
113 // Upon notification from driver that the Adapter Power State = D0,
114 // check if previous lid event failed. If it did, retry the lid
115 // event here.
116 If(LEqual(PARM, 0))
117 {
118 Store(CLID, Local0)
119 If(And(0x80000000,Local0))
120 {
121 And(CLID, 0x0000000F, CLID)
122 GLID(CLID)
123 }
124 }
125 Store(Zero, GESF) // Clear the exit parameter
126 Store(Zero, PARM)
127 Return(SUCC) // Not supported, but no failure
128 }
129
130 // Display Power State: Sub-function 8
131
132 If (LEqual(GESF, 8))
133 {
134 Store(Zero, GESF) // Clear the exit parameter
135 Store(Zero, PARM)
136 Return(SUCC) // Not supported, but no failure
137 }
138
139 // Set Boot Display: Sub-function 9
140
141 If (LEqual(GESF, 9))
142 {
143
144 //<TODO> An OEM may elect to implement this method. In that case,
145 // the input values must be saved into non-volatile storage for
146 // parsing during the next boot. The following Sample code is Intel
147 // validated implementation.
148
149 And(PARM, 0xFF, IBTT) // Save the boot display to NVS
150 Store(Zero, GESF) // Clear the exit parameter
151 Store(Zero, PARM)
152 Return(SUCC) // Reserved, "Critical failure"
153 }
154
155 // Set Panel Details: Sub-function 10 (0Ah)
156
157 If (LEqual(GESF, 10))
158 {
159
160 //<TODO> An OEM may elect to implement this method. In that case,
161 // the input values must be saved into non-volatile storage for
162 // parsing during the next boot. The following Sample code is Intel
163 // validated implementation.
164
165 // Set the panel-related NVRAM variables based the input from the driver.
166
167 And(PARM, 0xFF, IPSC)
168
169 // Change panel type if a change is requested by the driver (Change if
170 // panel type input is non-zero). Zero=No change requested.
171
172 If(And(ShiftRight(PARM, 8), 0xFF))
173 {
174 And(ShiftRight(PARM, 8), 0xFF, IPAT)
175 Decrement(IPAT) // 0 = no change, so fit to CMOS map
176 }
177 And(ShiftRight(PARM, 18), 0x3, IBLC)
178 And(ShiftRight(PARM, 20), 0x7, IBIA)
179 Store(Zero, GESF) // Clear the exit parameter
180 Store(Zero, PARM)
181 Return(SUCC) // Success
182 }
183
184 // Set Internal Graphics: Sub-function 11 (0Bh)
185
186 If (LEqual(GESF, 11))
187 {
188
189 //<TODO> An OEM may elect to implement this method. In that case,
190 // the input values must be saved into non-volatile storage for
191 // parsing during the next boot. The following Sample code is Intel
192 // validated implementation.
193
194 And(ShiftRight(PARM, 1), 1, IF1E) // Program the function 1 option
195
196 // Fixed memory/DVMT memory
197
198 And(ShiftRight(PARM, 17), 0xF, IDMS) // Program DVMT/fixed memory size
199
200 Store(Zero, GESF) // Clear the exit parameter
201 Store(Zero, PARM)
202 Return(SUCC) // Success
203 }
204
205 // Post-Hires to DOS FS: Sub-function 16 (10h)
206
207 If (LEqual(GESF, 16))
208 {
209 Store(Zero, GESF) // Clear the exit parameter
210 Store(Zero, PARM)
211 Return(SUCC) // Not supported, but no failure
212 }
213
214 // APM Complete: Sub-function 17 (11h)
215
216 If (LEqual(GESF, 17))
217 {
218
219 Store(ShiftLeft(LIDS, 8), PARM) // Report the lid state
220 Add(PARM, 0x100, PARM) // Adjust the lid state, 0 = Unknown
221
222 Store(Zero, GESF) // Clear the exit parameter
223 Return(SUCC) // Not supported, but no failure
224 }
225
226 // Set Spread Spectrum Clocks: Sub-function 18 (12h)
227
228 If (LEqual(GESF, 18))
229 {
230
231 //<TODO> An OEM may elect to implement this method. In that case,
232 // the input values must be saved into non-volatile storage for
233 // parsing during the next boot. The following Sample code is Intel
234 // validated implementation.
235
236 If(And(PARM, 1))
237 {
238 If(LEqual(ShiftRight(PARM, 1), 1))
239 {
240 Store(1, ISSC) // Enable HW SSC, only for clock 1
241 }
242 Else
243 {
244 Store(Zero, GESF)
245 Return(CRIT) // Failure, as the SSC clock must be 1
246 }
247 }
248 Else
249 {
250 Store(0, ISSC) // Disable SSC
251 }
252 Store(Zero, GESF) // Clear the exit parameter
253 Store(Zero, PARM)
254 Return(SUCC) // Success
255 }
256
257 // Post VBE/PM Callback: Sub-function 19 (13h)
258
259 If (LEqual(GESF, 19))
260 {
261 Store(Zero, GESF) // Clear the exit parameter
262 Store(Zero, PARM)
263 Return(SUCC) // Not supported, but no failure
264 }
265
266 // Set PAVP Data: Sub-function 20 (14h)
267
268 If (LEqual(GESF, 20))
269 {
270 And(PARM, 0xF, PAVP) // Store PAVP info
271 Store(Zero, GESF) // Clear the exit parameter
272 Store(Zero, PARM)
273 Return(SUCC) // Success
274 }
275
276 // A call to a reserved "System BIOS callbacks" function was received
277
278 Store(Zero, GESF) // Clear the exit parameter
279 Return(SUCC) // Reserved, "Critical failure"
280 }