3 Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved
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.
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.
21 IGD OpRegion/Software ACPI Reference Code for the Baytrail Family.
25 // Enable/Disable Output Switching. In WIN2K/WINXP, _DOS = 0 will
26 // get called during initialization to prepare for an ACPI Display
27 // Switch Event. During an ACPI Display Switch, the OS will call
28 // _DOS = 2 immediately after a Notify=0x80 to temporarily disable
29 // all Display Switching. After ACPI Display Switching is complete,
30 // the OS will call _DOS = 0 to re-enable ACPI Display Switching.
34 // Store Display Switching and LCD brightness BIOS control bit
35 Store(And(Arg0,7),DSEN)
38 // Enumerate the Display Environment. This method will return
39 // valid addresses for all display device encoders present in the
40 // system. The Miniport Driver will reject the addresses for every
41 // encoder that does not have an attached display device. After
42 // enumeration is complete, the OS will call the _DGS methods
43 // during a display switch only for the addresses accepted by the
44 // Miniport Driver. For hot-insertion and removal of display
45 // devices, a re-enumeration notification will be required so the
46 // address of the newly present display device will be accepted by
47 // the Miniport Driver.
49 Method(_DOD, 0, Serialized)
52 If(LNotEqual(DIDL, Zero))
54 Store(SDDL(DIDL),DID1)
56 If(LNotEqual(DDL2, Zero))
58 Store(SDDL(DDL2),DID2)
60 If(LNotEqual(DDL3, Zero))
62 Store(SDDL(DDL3),DID3)
64 If(LNotEqual(DDL4, Zero))
66 Store(SDDL(DDL4),DID4)
68 If(LNotEqual(DDL5, Zero))
70 Store(SDDL(DDL5),DID5)
73 // TODO - This level of flexibility is not needed for a true
74 // OEM design. Simply determine the greatest number of
75 // encoders the platform will suppport then remove all
76 // return packages beyond that value. Note that for
77 // current silicon, the maximum number of encoders
82 If (LNOTEqual (ISPD, 0))
84 Name(TMP0,Package() {0xFFFFFFFF,0xFFFFFFFF})
85 Store(Or(0x10000,DID1),Index(TMP0,0))
86 //Add ISP device to GFX0
87 Store(0x00020F38, Index(TMP0,1))
91 Name(TMP1,Package() {0xFFFFFFFF})
92 Store(Or(0x10000,DID1),Index(TMP1,0))
99 If (LNOTEqual (ISPD, 0))
101 Name(TMP2,Package() {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF})
102 Store(Or(0x10000,DID1),Index(TMP2,0))
103 Store(Or(0x10000,DID2),Index(TMP2,1))
104 //Add ISP device to GFX0
105 Store(0x00020F38, Index(TMP2,2))
109 Name(TMP3,Package() {0xFFFFFFFF, 0xFFFFFFFF})
110 Store(Or(0x10000,DID1),Index(TMP3,0))
111 Store(Or(0x10000,DID2),Index(TMP3,1))
118 If (LNOTEqual (ISPD, 0))
120 Name(TMP4,Package() {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF})
121 Store(Or(0x10000,DID1),Index(TMP4,0))
122 Store(Or(0x10000,DID2),Index(TMP4,1))
123 Store(Or(0x10000,DID3),Index(TMP4,2))
124 //Add ISP device to GFX0
125 Store(0x00020F38, Index(TMP4,3))
129 Name(TMP5,Package() {0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF})
130 Store(Or(0x10000,DID1),Index(TMP5,0))
131 Store(Or(0x10000,DID2),Index(TMP5,1))
132 Store(Or(0x10000,DID3),Index(TMP5,2))
139 If (LNOTEqual (ISPD, 0))
141 Name(TMP6,Package() {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF})
142 Store(Or(0x10000,DID1),Index(TMP6,0))
143 Store(Or(0x10000,DID2),Index(TMP6,1))
144 Store(Or(0x10000,DID3),Index(TMP6,2))
145 Store(Or(0x10000,DID4),Index(TMP6,3))
146 //Add ISP device to GFX0
147 Store(0x00020F38, Index(TMP6,4))
151 Name(TMP7,Package() {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF})
152 Store(Or(0x10000,DID1),Index(TMP7,0))
153 Store(Or(0x10000,DID2),Index(TMP7,1))
154 Store(Or(0x10000,DID3),Index(TMP7,2))
155 Store(Or(0x10000,DID4),Index(TMP7,3))
162 If (LNOTEqual (ISPD, 0))
164 Name(TMP8,Package() {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF})
165 Store(Or(0x10000,DID1),Index(TMP8,0))
166 Store(Or(0x10000,DID2),Index(TMP8,1))
167 Store(Or(0x10000,DID3),Index(TMP8,2))
168 Store(Or(0x10000,DID4),Index(TMP8,3))
169 Store(Or(0x10000,DID5),Index(TMP8,4))
170 //Add ISP device to GFX0
171 Store(0x00020F38, Index(TMP8,5))
175 Name(TMP9,Package() {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF})
176 Store(Or(0x10000,DID1),Index(TMP9,0))
177 Store(Or(0x10000,DID2),Index(TMP9,1))
178 Store(Or(0x10000,DID3),Index(TMP9,2))
179 Store(Or(0x10000,DID4),Index(TMP9,3))
180 Store(Or(0x10000,DID5),Index(TMP9,4))
185 // If nothing else, return Unknown LFP.
186 // (Prevents compiler warning.)
188 //Add ISP device to GFX0
189 If (LNOTEqual (ISPD, 0))
191 Return(Package() {0x00000400, 0x00020F38})
194 Return(Package() {0x00000400})
203 Method(_ADR,0,Serialized)
205 If(LEqual(And(0x0F00,DID1),0x400))
217 Return(And(0xFFFF,DID1))
221 // Return the Current Status.
228 // Query Graphics State (active or inactive).
239 // BIT31 BIT30 Execution
240 // 0 0 Don't implement.
241 // 0 1 Cache change. Nothing to Implement.
242 // 1 0 Don't Implement.
243 // 1 1 Display Switch Complete. Implement.
247 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
250 // State change was performed by the
251 // Video Drivers. Simply update the
264 Method(_ADR,0,Serialized)
266 If(LEqual(And(0x0F00,DID2),0x400))
278 Return(And(0xFFFF,DID2))
282 // Return the Current Status.
289 // Query Graphics State (active or inactive).
293 // Return the Next State.
297 // Device Set State. (See table above.)
301 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
304 // State change was performed by the
305 // Video Drivers. Simply update the
318 Method(_ADR,0,Serialized)
320 If(LEqual(And(0x0F00,DID3),0x400))
332 Return(And(0xFFFF,DID3))
336 // Return the Current Status.
350 // Query Graphics State (active or inactive).
357 // Device Set State. (See table above.)
361 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
363 // State change was performed by the
364 // Video Drivers. Simply update the
377 Method(_ADR,0,Serialized)
379 If(LEqual(And(0x0F00,DID4),0x400))
391 Return(And(0xFFFF,DID4))
395 // Return the Current Status.
409 // Query Graphics State (active or inactive).
416 // Device Set State. (See table above.)
420 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
423 // State change was performed by the
424 // Video Drivers. Simply update the
438 Method(_ADR,0,Serialized)
440 If(LEqual(And(0x0F00,DID5),0x400))
452 Return(And(0xFFFF,DID5))
456 // Return the Current Status.
470 // Query Graphics State (active or inactive).
477 // Device Set State. (See table above.)
481 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
483 // State change was performed by the
484 // Video Drivers. Simply update the
498 Method(_ADR,0,Serialized)
500 If(LEqual(And(0x0F00,DID6),0x400))
512 Return(And(0xFFFF,DID6))
516 // Return the Current Status.
530 // Query Graphics State (active or inactive).
537 // Device Set State. (See table above.)
541 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
543 // State change was performed by the
544 // Video Drivers. Simply update the
558 Method(_ADR,0,Serialized)
560 If(LEqual(And(0x0F00,DID7),0x400))
572 Return(And(0xFFFF,DID7))
576 // Return the Current Status.
590 // Query Graphics State (active or inactive).
597 // Device Set State. (See table above.)
601 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
603 // State change was performed by the
604 // Video Drivers. Simply update the
618 Method(_ADR,0,Serialized)
620 If(LEqual(And(0x0F00,DID8),0x400))
632 Return(And(0xFFFF,DID8))
636 // Return the Current Status.
650 // Query Graphics State (active or inactive).
657 // Device Set State. (See table above.)
661 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
663 // State change was performed by the
664 // Video Drivers. Simply update the
677 Method(_ADR,0,Serialized)
679 If(LEqual(EDPV, 0x0))
685 Return(And(0xFFFF,DIDX))
689 // Return the Current Status.
693 If(LEqual(EDPV, 0x0))
703 // Query Graphics State (active or inactive).
710 // Device Set State. (See table above.)
714 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
716 // State change was performed by the
717 // Video Drivers. Simply update the
722 // Query List of Brightness Control Levels Supported.
726 // List of supported brightness levels in the following sequence.
728 // Level when machine has full power.
729 // Level when machine is on batteries.
730 // Other supported levels.
731 Return(Package() {80, 50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100})
734 // Set the Brightness Level.
738 // Set the requested level if it is between 0 and 100%.
740 If(LAnd(LGreaterEqual(Arg0,0),LLessEqual(Arg0,100)))
742 \_SB.PCI0.GFX0.AINT(1, Arg0)
743 Store(Arg0,BRTL) // Store Brightness Level.
747 // Brightness Query Current level.
758 Store(And(Arg0,0xF0F),Local0)
759 Or(0x80000000,Local0, Local1)
760 If(LEqual(DIDL,Local0))
764 If(LEqual(DDL2,Local0))
768 If(LEqual(DDL3,Local0))
772 If(LEqual(DDL4,Local0))
776 If(LEqual(DDL5,Local0))
780 If(LEqual(DDL6,Local0))
784 If(LEqual(DDL7,Local0))
788 If(LEqual(DDL8,Local0))
797 Store(And(Arg0,0xF0F),Local0)
799 If(LEqual(0, Local0))
803 If(LEqual(CADL, Local0))
807 If(LEqual(CAL2, Local0))
811 If(LEqual(CAL3, Local0))
815 If(LEqual(CAL4, Local0))
819 If(LEqual(CAL5, Local0))
823 If(LEqual(CAL6, Local0))
827 If(LEqual(CAL7, Local0))
831 If(LEqual(CAL8, Local0))
840 Store(And(Arg0,0xF0F),Local0)
842 If(LEqual(0, Local0))
846 If(LEqual(NADL, Local0))
850 If(LEqual(NDL2, Local0))
854 If(LEqual(NDL3, Local0))
858 If(LEqual(NDL4, Local0))
862 If(LEqual(NDL5, Local0))
866 If(LEqual(NDL6, Local0))
870 If(LEqual(NDL7, Local0))
874 If(LEqual(NDL8, Local0))
882 // Include IGD OpRegion/Software SCI interrupt handler which is use by
883 // the graphics drivers to request data from system BIOS.
885 include("IgdOpRn.ASL")