]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2DeviceRefCodePkg/AcpiTablesPCAT/INTELGFX.ASL
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[mirror_edk2.git] / Vlv2DeviceRefCodePkg / AcpiTablesPCAT / INTELGFX.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 INTELGFX.ASL
18
19 Abstract:
20
21 IGD OpRegion/Software ACPI Reference Code for the Baytrail Family.
22
23 --*/
24
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.
31
32 Method(_DOS,1)
33 {
34 // Store Display Switching and LCD brightness BIOS control bit
35 Store(And(Arg0,7),DSEN)
36 }
37
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.
48
49 Method(_DOD, 0, Serialized)
50 {
51 Store(0, NDID)
52 If(LNotEqual(DIDL, Zero))
53 {
54 Store(SDDL(DIDL),DID1)
55 }
56 If(LNotEqual(DDL2, Zero))
57 {
58 Store(SDDL(DDL2),DID2)
59 }
60 If(LNotEqual(DDL3, Zero))
61 {
62 Store(SDDL(DDL3),DID3)
63 }
64 If(LNotEqual(DDL4, Zero))
65 {
66 Store(SDDL(DDL4),DID4)
67 }
68 If(LNotEqual(DDL5, Zero))
69 {
70 Store(SDDL(DDL5),DID5)
71 }
72
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
78 // possible is 5.
79
80 If(LEqual(NDID,1))
81 {
82 If (LNOTEqual (ISPD, 0))
83 {
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))
88 Return(TMP0)
89 } Else
90 {
91 Name(TMP1,Package() {0xFFFFFFFF})
92 Store(Or(0x10000,DID1),Index(TMP1,0))
93 Return(TMP1)
94 }
95 }
96
97 If(LEqual(NDID,2))
98 {
99 If (LNOTEqual (ISPD, 0))
100 {
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))
106 Return(TMP2)
107 } Else
108 {
109 Name(TMP3,Package() {0xFFFFFFFF, 0xFFFFFFFF})
110 Store(Or(0x10000,DID1),Index(TMP3,0))
111 Store(Or(0x10000,DID2),Index(TMP3,1))
112 Return(TMP3)
113 }
114 }
115
116 If(LEqual(NDID,3))
117 {
118 If (LNOTEqual (ISPD, 0))
119 {
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))
126 Return(TMP4)
127 } Else
128 {
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))
133 Return(TMP5)
134 }
135 }
136
137 If(LEqual(NDID,4))
138 {
139 If (LNOTEqual (ISPD, 0))
140 {
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))
148 Return(TMP6)
149 } Else
150 {
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))
156 Return(TMP7)
157 }
158 }
159
160 If(LGreater(NDID,4))
161 {
162 If (LNOTEqual (ISPD, 0))
163 {
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))
172 Return(TMP8)
173 } Else
174 {
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))
181 Return(TMP9)
182 }
183 }
184
185 // If nothing else, return Unknown LFP.
186 // (Prevents compiler warning.)
187
188 //Add ISP device to GFX0
189 If (LNOTEqual (ISPD, 0))
190 {
191 Return(Package() {0x00000400, 0x00020F38})
192 } Else
193 {
194 Return(Package() {0x00000400})
195 }
196 }
197
198 Device(DD01)
199 {
200
201 // Return Unique ID.
202
203 Method(_ADR,0,Serialized)
204 {
205 If(LEqual(And(0x0F00,DID1),0x400))
206 {
207 Store(0x1, EDPV)
208 Store(DID1, DIDX)
209 Return(1)
210 }
211 If(LEqual(DID1,0))
212 {
213 Return(1)
214 }
215 Else
216 {
217 Return(And(0xFFFF,DID1))
218 }
219 }
220
221 // Return the Current Status.
222
223 Method(_DCS,0)
224 {
225 Return(CDDS(DID1))
226 }
227
228 // Query Graphics State (active or inactive).
229
230 Method(_DGS,0)
231 {
232 Return(NDDS(DID1))
233 }
234
235 // Device Set State.
236
237 // _DSS Table:
238 //
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.
244
245 Method(_DSS,1)
246 {
247 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
248 {
249
250 // State change was performed by the
251 // Video Drivers. Simply update the
252 // New State.
253
254 Store(NSTE,CSTE)
255 }
256 }
257 }
258
259 Device(DD02)
260 {
261
262 // Return Unique ID.
263
264 Method(_ADR,0,Serialized)
265 {
266 If(LEqual(And(0x0F00,DID2),0x400))
267 {
268 Store(0x2, EDPV)
269 Store(DID2, DIDX)
270 Return(2)
271 }
272 If(LEqual(DID2,0))
273 {
274 Return(2)
275 }
276 Else
277 {
278 Return(And(0xFFFF,DID2))
279 }
280 }
281
282 // Return the Current Status.
283
284 Method(_DCS,0)
285 {
286 Return(CDDS(DID2))
287 }
288
289 // Query Graphics State (active or inactive).
290
291 Method(_DGS,0)
292 {
293 // Return the Next State.
294 Return(NDDS(DID2))
295 }
296
297 // Device Set State. (See table above.)
298
299 Method(_DSS,1)
300 {
301 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
302 {
303
304 // State change was performed by the
305 // Video Drivers. Simply update the
306 // New State.
307
308 Store(NSTE,CSTE)
309 }
310 }
311 }
312
313 Device(DD03)
314 {
315
316 // Return Unique ID.
317
318 Method(_ADR,0,Serialized)
319 {
320 If(LEqual(And(0x0F00,DID3),0x400))
321 {
322 Store(0x3, EDPV)
323 Store(DID3, DIDX)
324 Return(3)
325 }
326 If(LEqual(DID3,0))
327 {
328 Return(3)
329 }
330 Else
331 {
332 Return(And(0xFFFF,DID3))
333 }
334 }
335
336 // Return the Current Status.
337
338 Method(_DCS,0)
339 {
340 If(LEqual(DID3,0))
341 {
342 Return(0x0B)
343 }
344 Else
345 {
346 Return(CDDS(DID3))
347 }
348 }
349
350 // Query Graphics State (active or inactive).
351
352 Method(_DGS,0)
353 {
354 Return(NDDS(DID3))
355 }
356
357 // Device Set State. (See table above.)
358
359 Method(_DSS,1)
360 {
361 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
362 {
363 // State change was performed by the
364 // Video Drivers. Simply update the
365 // New State.
366
367 Store(NSTE,CSTE)
368 }
369 }
370 }
371
372 Device(DD04)
373 {
374
375 // Return Unique ID.
376
377 Method(_ADR,0,Serialized)
378 {
379 If(LEqual(And(0x0F00,DID4),0x400))
380 {
381 Store(0x4, EDPV)
382 Store(DID4, DIDX)
383 Return(4)
384 }
385 If(LEqual(DID4,0))
386 {
387 Return(4)
388 }
389 Else
390 {
391 Return(And(0xFFFF,DID4))
392 }
393 }
394
395 // Return the Current Status.
396
397 Method(_DCS,0)
398 {
399 If(LEqual(DID4,0))
400 {
401 Return(0x0B)
402 }
403 Else
404 {
405 Return(CDDS(DID4))
406 }
407 }
408
409 // Query Graphics State (active or inactive).
410
411 Method(_DGS,0)
412 {
413 Return(NDDS(DID4))
414 }
415
416 // Device Set State. (See table above.)
417
418 Method(_DSS,1)
419 {
420 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
421 {
422
423 // State change was performed by the
424 // Video Drivers. Simply update the
425 // New State.
426
427 Store(NSTE,CSTE)
428 }
429 }
430 }
431
432
433 Device(DD05)
434 {
435
436 // Return Unique ID.
437
438 Method(_ADR,0,Serialized)
439 {
440 If(LEqual(And(0x0F00,DID5),0x400))
441 {
442 Store(0x5, EDPV)
443 Store(DID5, DIDX)
444 Return(5)
445 }
446 If(LEqual(DID5,0))
447 {
448 Return(5)
449 }
450 Else
451 {
452 Return(And(0xFFFF,DID5))
453 }
454 }
455
456 // Return the Current Status.
457
458 Method(_DCS,0)
459 {
460 If(LEqual(DID5,0))
461 {
462 Return(0x0B)
463 }
464 Else
465 {
466 Return(CDDS(DID5))
467 }
468 }
469
470 // Query Graphics State (active or inactive).
471
472 Method(_DGS,0)
473 {
474 Return(NDDS(DID5))
475 }
476
477 // Device Set State. (See table above.)
478
479 Method(_DSS,1)
480 {
481 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
482 {
483 // State change was performed by the
484 // Video Drivers. Simply update the
485 // New State.
486
487 Store(NSTE,CSTE)
488 }
489 }
490 }
491
492
493 Device(DD06)
494 {
495
496 // Return Unique ID.
497
498 Method(_ADR,0,Serialized)
499 {
500 If(LEqual(And(0x0F00,DID6),0x400))
501 {
502 Store(0x6, EDPV)
503 Store(DID6, DIDX)
504 Return(6)
505 }
506 If(LEqual(DID6,0))
507 {
508 Return(6)
509 }
510 Else
511 {
512 Return(And(0xFFFF,DID6))
513 }
514 }
515
516 // Return the Current Status.
517
518 Method(_DCS,0)
519 {
520 If(LEqual(DID6,0))
521 {
522 Return(0x0B)
523 }
524 Else
525 {
526 Return(CDDS(DID6))
527 }
528 }
529
530 // Query Graphics State (active or inactive).
531
532 Method(_DGS,0)
533 {
534 Return(NDDS(DID6))
535 }
536
537 // Device Set State. (See table above.)
538
539 Method(_DSS,1)
540 {
541 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
542 {
543 // State change was performed by the
544 // Video Drivers. Simply update the
545 // New State.
546
547 Store(NSTE,CSTE)
548 }
549 }
550 }
551
552
553 Device(DD07)
554 {
555
556 // Return Unique ID.
557
558 Method(_ADR,0,Serialized)
559 {
560 If(LEqual(And(0x0F00,DID7),0x400))
561 {
562 Store(0x7, EDPV)
563 Store(DID7, DIDX)
564 Return(7)
565 }
566 If(LEqual(DID7,0))
567 {
568 Return(7)
569 }
570 Else
571 {
572 Return(And(0xFFFF,DID7))
573 }
574 }
575
576 // Return the Current Status.
577
578 Method(_DCS,0)
579 {
580 If(LEqual(DID7,0))
581 {
582 Return(0x0B)
583 }
584 Else
585 {
586 Return(CDDS(DID7))
587 }
588 }
589
590 // Query Graphics State (active or inactive).
591
592 Method(_DGS,0)
593 {
594 Return(NDDS(DID7))
595 }
596
597 // Device Set State. (See table above.)
598
599 Method(_DSS,1)
600 {
601 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
602 {
603 // State change was performed by the
604 // Video Drivers. Simply update the
605 // New State.
606
607 Store(NSTE,CSTE)
608 }
609 }
610 }
611
612
613 Device(DD08)
614 {
615
616 // Return Unique ID.
617
618 Method(_ADR,0,Serialized)
619 {
620 If(LEqual(And(0x0F00,DID8),0x400))
621 {
622 Store(0x8, EDPV)
623 Store(DID8, DIDX)
624 Return(8)
625 }
626 If(LEqual(DID8,0))
627 {
628 Return(8)
629 }
630 Else
631 {
632 Return(And(0xFFFF,DID8))
633 }
634 }
635
636 // Return the Current Status.
637
638 Method(_DCS,0)
639 {
640 If(LEqual(DID8,0))
641 {
642 Return(0x0B)
643 }
644 Else
645 {
646 Return(CDDS(DID8))
647 }
648 }
649
650 // Query Graphics State (active or inactive).
651
652 Method(_DGS,0)
653 {
654 Return(NDDS(DID8))
655 }
656
657 // Device Set State. (See table above.)
658
659 Method(_DSS,1)
660 {
661 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
662 {
663 // State change was performed by the
664 // Video Drivers. Simply update the
665 // New State.
666
667 Store(NSTE,CSTE)
668 }
669 }
670 }
671
672 //device for eDP
673 Device(DD1F)
674 {
675 // Return Unique ID.
676
677 Method(_ADR,0,Serialized)
678 {
679 If(LEqual(EDPV, 0x0))
680 {
681 Return(0x1F)
682 }
683 Else
684 {
685 Return(And(0xFFFF,DIDX))
686 }
687 }
688
689 // Return the Current Status.
690
691 Method(_DCS,0)
692 {
693 If(LEqual(EDPV, 0x0))
694 {
695 Return(0x00)
696 }
697 Else
698 {
699 Return(CDDS(DIDX))
700 }
701 }
702
703 // Query Graphics State (active or inactive).
704
705 Method(_DGS,0)
706 {
707 Return(NDDS(DIDX))
708 }
709
710 // Device Set State. (See table above.)
711
712 Method(_DSS,1)
713 {
714 If(LEqual(And(Arg0,0xC0000000),0xC0000000))
715 {
716 // State change was performed by the
717 // Video Drivers. Simply update the
718 // New State.
719 Store(NSTE,CSTE)
720 }
721 }
722 // Query List of Brightness Control Levels Supported.
723
724 Method(_BCL,0)
725 {
726 // List of supported brightness levels in the following sequence.
727
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})
732 }
733
734 // Set the Brightness Level.
735
736 Method (_BCM,1)
737 {
738 // Set the requested level if it is between 0 and 100%.
739
740 If(LAnd(LGreaterEqual(Arg0,0),LLessEqual(Arg0,100)))
741 {
742 \_SB.PCI0.GFX0.AINT(1, Arg0)
743 Store(Arg0,BRTL) // Store Brightness Level.
744 }
745 }
746
747 // Brightness Query Current level.
748
749 Method (_BQC,0)
750 {
751 Return(BRTL)
752 }
753 }
754
755 Method(SDDL,1)
756 {
757 Increment(NDID)
758 Store(And(Arg0,0xF0F),Local0)
759 Or(0x80000000,Local0, Local1)
760 If(LEqual(DIDL,Local0))
761 {
762 Return(Local1)
763 }
764 If(LEqual(DDL2,Local0))
765 {
766 Return(Local1)
767 }
768 If(LEqual(DDL3,Local0))
769 {
770 Return(Local1)
771 }
772 If(LEqual(DDL4,Local0))
773 {
774 Return(Local1)
775 }
776 If(LEqual(DDL5,Local0))
777 {
778 Return(Local1)
779 }
780 If(LEqual(DDL6,Local0))
781 {
782 Return(Local1)
783 }
784 If(LEqual(DDL7,Local0))
785 {
786 Return(Local1)
787 }
788 If(LEqual(DDL8,Local0))
789 {
790 Return(Local1)
791 }
792 Return(0)
793 }
794
795 Method(CDDS,1)
796 {
797 Store(And(Arg0,0xF0F),Local0)
798
799 If(LEqual(0, Local0))
800 {
801 Return(0x1D)
802 }
803 If(LEqual(CADL, Local0))
804 {
805 Return(0x1F)
806 }
807 If(LEqual(CAL2, Local0))
808 {
809 Return(0x1F)
810 }
811 If(LEqual(CAL3, Local0))
812 {
813 Return(0x1F)
814 }
815 If(LEqual(CAL4, Local0))
816 {
817 Return(0x1F)
818 }
819 If(LEqual(CAL5, Local0))
820 {
821 Return(0x1F)
822 }
823 If(LEqual(CAL6, Local0))
824 {
825 Return(0x1F)
826 }
827 If(LEqual(CAL7, Local0))
828 {
829 Return(0x1F)
830 }
831 If(LEqual(CAL8, Local0))
832 {
833 Return(0x1F)
834 }
835 Return(0x1D)
836 }
837
838 Method(NDDS,1)
839 {
840 Store(And(Arg0,0xF0F),Local0)
841
842 If(LEqual(0, Local0))
843 {
844 Return(0)
845 }
846 If(LEqual(NADL, Local0))
847 {
848 Return(1)
849 }
850 If(LEqual(NDL2, Local0))
851 {
852 Return(1)
853 }
854 If(LEqual(NDL3, Local0))
855 {
856 Return(1)
857 }
858 If(LEqual(NDL4, Local0))
859 {
860 Return(1)
861 }
862 If(LEqual(NDL5, Local0))
863 {
864 Return(1)
865 }
866 If(LEqual(NDL6, Local0))
867 {
868 Return(1)
869 }
870 If(LEqual(NDL7, Local0))
871 {
872 Return(1)
873 }
874 If(LEqual(NDL8, Local0))
875 {
876 Return(1)
877 }
878 Return(0)
879 }
880
881 //
882 // Include IGD OpRegion/Software SCI interrupt handler which is use by
883 // the graphics drivers to request data from system BIOS.
884 //
885 include("IgdOpRn.ASL")