1984 lines
37 KiB
Plaintext
1984 lines
37 KiB
Plaintext
/** @file
|
|
This file contains the IGD OpRegion/Software ACPI Reference
|
|
Code.
|
|
It defines the methods to enable/disable output switching,
|
|
store display switching and LCD brightness BIOS control
|
|
and return valid addresses for all display device encoders
|
|
present in the system, etc.
|
|
|
|
@copyright
|
|
INTEL CONFIDENTIAL
|
|
Copyright 1999 - 2020 Intel Corporation.
|
|
|
|
The source code contained or described herein and all documents related to the
|
|
source code ("Material") are owned by Intel Corporation or its suppliers or
|
|
licensors. Title to the Material remains with Intel Corporation or its suppliers
|
|
and licensors. The Material may contain trade secrets and proprietary and
|
|
confidential information of Intel Corporation and its suppliers and licensors,
|
|
and is protected by worldwide copyright and trade secret laws and treaty
|
|
provisions. No part of the Material may be used, copied, reproduced, modified,
|
|
published, uploaded, posted, transmitted, distributed, or disclosed in any way
|
|
without Intel's prior express written permission.
|
|
|
|
No license under any patent, copyright, trade secret or other intellectual
|
|
property right is granted to or conferred upon you by disclosure or delivery
|
|
of the Materials, either expressly, by implication, inducement, estoppel or
|
|
otherwise. Any license under such intellectual property rights must be
|
|
express and approved by Intel in writing.
|
|
|
|
Unless otherwise agreed by Intel in writing, you may not remove or alter
|
|
this notice or any other notice embedded in Materials by Intel or
|
|
Intel's suppliers or licensors in any way.
|
|
|
|
This file contains an 'Intel Peripheral Driver' and is uniquely identified as
|
|
"Intel Reference Module" and is licensed for Intel CPUs and chipsets under
|
|
the terms of your license agreement with Intel or your vendor. This file may
|
|
be modified by the user, subject to additional terms of the license agreement.
|
|
|
|
@par Specification Reference:
|
|
**/
|
|
|
|
External(\PLD1, MethodObj)
|
|
External(\PLD2, MethodObj)
|
|
External(\ECST, MethodObj)
|
|
External(\PBCL, MethodObj)
|
|
External(HDOS, MethodObj)
|
|
External(\ECON, IntObj)
|
|
External(\PNHM, IntObj)
|
|
External(OSYS, IntObj)
|
|
External(CPSC)
|
|
External(\GUAM, MethodObj)
|
|
External(DSEN)
|
|
External(S0ID)
|
|
|
|
//
|
|
// Default Physical Location of Device
|
|
//
|
|
Name (DPLD, Package (0x1) {
|
|
ToPLD (
|
|
PLD_Revision = 0x2,
|
|
PLD_IgnoreColor = 0x1,
|
|
PLD_Red = 0x0,
|
|
PLD_Green = 0x0,
|
|
PLD_Blue = 0x0,
|
|
PLD_Width = 0x320, //800 mm
|
|
PLD_Height = 0x7D0, //2000 mm
|
|
PLD_UserVisible = 0x1, //Set if the device connection point can be seen by the user without disassembly.
|
|
PLD_Dock = 0x0, // Set if the device connection point resides in a docking station or port replicator.
|
|
PLD_Lid = 0x0, // Set if this device connection point resides on the lid of laptop system.
|
|
PLD_Panel = "TOP", // Describes which panel surface of the systems housing the device connection point resides on.
|
|
PLD_VerticalPosition = "CENTER", // Vertical Position on the panel where the device connection point resides.
|
|
PLD_HorizontalPosition = "RIGHT", // Horizontal Position on the panel where the device connection point resides.
|
|
PLD_Shape = "VERTICALRECTANGLE",
|
|
PLD_GroupOrientation = 0x0, // if Set, indicates vertical grouping, otherwise horizontal is assumed.
|
|
PLD_GroupToken = 0x0, // Unique numerical value identifying a group.
|
|
PLD_GroupPosition = 0x0, // Identifies this device connection points position in the group (i.e. 1st, 2nd)
|
|
PLD_Bay = 0x0, // Set if describing a device in a bay or if device connection point is a bay.
|
|
PLD_Ejectable = 0x0, // Set if the device is ejectable. Indicates ejectability in the absence of _EJx objects
|
|
PLD_EjectRequired = 0x0, // OSPM Ejection required: Set if OSPM needs to be involved with ejection process. User-operated physical hardware ejection is not possible.
|
|
PLD_CabinetNumber = 0x0, // For single cabinet system, this field is always 0.
|
|
PLD_CardCageNumber = 0x0, // For single card cage system, this field is always 0.
|
|
PLD_Reference = 0x0, // if Set, this _PLD defines a reference shape that is used to help orient the user with respect to the other shapes when rendering _PLDs.
|
|
PLD_Rotation = 0x0, // 0 - 0deg, 1 - 45deg, 2 - 90deg, 3 - 135deg, 4 - 180deg, 5 - 225deg, 6 - 270deg, 7 - 315deg
|
|
PLD_Order = 0x3, // Identifies the drawing order of the connection point described by a _PLD
|
|
PLD_VerticalOffset = 0x0,
|
|
PLD_HorizontalOffset = 0x0
|
|
)
|
|
} // Package
|
|
) //DPLD
|
|
|
|
// Enable/Disable Output Switching. In WIN2K/WINXP, _DOS = 0 will
|
|
// get called during initialization to prepare for an ACPI Display
|
|
// Switch Event. During an ACPI Display Switch, the OS will call
|
|
// _DOS = 2 immediately after a Notify=0x80 to temporarily disable
|
|
// all Display Switching. After ACPI Display Switching is complete,
|
|
// the OS will call _DOS = 0 to re-enable ACPI Display Switching.
|
|
Method(_DOS,1)
|
|
{
|
|
//
|
|
// Store Display Switching and LCD brightness BIOS control bit
|
|
//
|
|
Store(And(Arg0,7),DSEN)
|
|
|
|
If(LEqual(And(Arg0, 0x3), 0)) // If _DOS[1:0]=0
|
|
{
|
|
If(CondRefOf(HDOS))
|
|
{
|
|
HDOS()
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// Enumerate the Display Environment. This method will return
|
|
// valid addresses for all display device encoders present in the
|
|
// system. The Miniport Driver will reject the addresses for every
|
|
// encoder that does not have an attached display device. After
|
|
// enumeration is complete, the OS will call the _DGS methods
|
|
// during a display switch only for the addresses accepted by the
|
|
// Miniport Driver. For hot-insertion and removal of display
|
|
// devices, a re-enumeration notification will be required so the
|
|
// address of the newly present display device will be accepted by
|
|
// the Miniport Driver.
|
|
//
|
|
Method(_DOD,0)
|
|
{
|
|
//
|
|
// Two LFP devices are supporte by default
|
|
//
|
|
Store(2, NDID)
|
|
If(LNotEqual(DIDL, Zero))
|
|
{
|
|
Store(SDDL(DIDL),DID1)
|
|
}
|
|
If(LNotEqual(DDL2, Zero))
|
|
{
|
|
Store(SDDL(DDL2),DID2)
|
|
}
|
|
If(LNotEqual(DDL3, Zero))
|
|
{
|
|
Store(SDDL(DDL3),DID3)
|
|
}
|
|
If(LNotEqual(DDL4, Zero))
|
|
{
|
|
Store(SDDL(DDL4),DID4)
|
|
}
|
|
If(LNotEqual(DDL5, Zero))
|
|
{
|
|
Store(SDDL(DDL5),DID5)
|
|
}
|
|
If(LNotEqual(DDL6, Zero))
|
|
{
|
|
Store(SDDL(DDL6),DID6)
|
|
}
|
|
If(LNotEqual(DDL7, Zero))
|
|
{
|
|
Store(SDDL(DDL7),DID7)
|
|
}
|
|
If(LNotEqual(DDL8, Zero))
|
|
{
|
|
Store(SDDL(DDL8),DID8)
|
|
}
|
|
If(LNotEqual(DDL9, Zero))
|
|
{
|
|
Store(SDDL(DDL9),DID9)
|
|
}
|
|
If(LNotEqual(DD10, Zero))
|
|
{
|
|
Store(SDDL(DD10),DIDA)
|
|
}
|
|
If(LNotEqual(DD11, Zero))
|
|
{
|
|
Store(SDDL(DD11),DIDB)
|
|
}
|
|
If(LNotEqual(DD12, Zero))
|
|
{
|
|
Store(SDDL(DD12),DIDC)
|
|
}
|
|
If(LNotEqual(DD13, Zero))
|
|
{
|
|
Store(SDDL(DD13),DIDD)
|
|
}
|
|
If(LNotEqual(DD14, Zero))
|
|
{
|
|
Store(SDDL(DD14),DIDE)
|
|
}
|
|
If(LNotEqual(DD15, Zero))
|
|
{
|
|
Store(SDDL(DD15),DIDF)
|
|
}
|
|
|
|
//
|
|
// Enumerate the encoders. Note that for
|
|
// current silicon, the maximum number of encoders
|
|
// possible is 15.
|
|
//
|
|
If(LEqual(NDID,1))
|
|
{
|
|
Name(TMP1,Package() {
|
|
0xFFFFFFFF})
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP1,0))
|
|
} Else {
|
|
Store(Or(0x10000,DID1),Index(TMP1,0))
|
|
}
|
|
Return(TMP1)
|
|
}
|
|
|
|
If(LEqual(NDID,2))
|
|
{
|
|
Name(TMP2,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP2,0))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP2,1))
|
|
} Else {
|
|
Store(Or(0x10000,DID2),Index(TMP2,1))
|
|
}
|
|
Return(TMP2)
|
|
}
|
|
|
|
If(LEqual(NDID,3))
|
|
{
|
|
Name(TMP3,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP3,0))
|
|
Store(Or(0x10000,DID2),Index(TMP3,1))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP3,2))
|
|
} Else {
|
|
Store(Or(0x10000,DID3),Index(TMP3,2))
|
|
}
|
|
Return(TMP3)
|
|
}
|
|
|
|
If(LEqual(NDID,4))
|
|
{
|
|
Name(TMP4,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP4,0))
|
|
Store(Or(0x10000,DID2),Index(TMP4,1))
|
|
Store(Or(0x10000,DID3),Index(TMP4,2))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP4,3))
|
|
} Else {
|
|
Store(Or(0x10000,DID4),Index(TMP4,3))
|
|
}
|
|
Return(TMP4)
|
|
}
|
|
|
|
If(LEqual(NDID,5))
|
|
{
|
|
Name(TMP5,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP5,0))
|
|
Store(Or(0x10000,DID2),Index(TMP5,1))
|
|
Store(Or(0x10000,DID3),Index(TMP5,2))
|
|
Store(Or(0x10000,DID4),Index(TMP5,3))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP5,4))
|
|
} Else {
|
|
Store(Or(0x10000,DID5),Index(TMP5,4))
|
|
}
|
|
Return(TMP5)
|
|
}
|
|
|
|
If(LEqual(NDID,6))
|
|
{
|
|
Name(TMP6,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP6,0))
|
|
Store(Or(0x10000,DID2),Index(TMP6,1))
|
|
Store(Or(0x10000,DID3),Index(TMP6,2))
|
|
Store(Or(0x10000,DID4),Index(TMP6,3))
|
|
Store(Or(0x10000,DID5),Index(TMP6,4))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP6,5))
|
|
} Else {
|
|
Store(Or(0x10000,DID6),Index(TMP6,5))
|
|
}
|
|
Return(TMP6)
|
|
}
|
|
|
|
If(LEqual(NDID,7))
|
|
{
|
|
Name(TMP7,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP7,0))
|
|
Store(Or(0x10000,DID2),Index(TMP7,1))
|
|
Store(Or(0x10000,DID3),Index(TMP7,2))
|
|
Store(Or(0x10000,DID4),Index(TMP7,3))
|
|
Store(Or(0x10000,DID5),Index(TMP7,4))
|
|
Store(Or(0x10000,DID6),Index(TMP7,5))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP7,6))
|
|
} Else {
|
|
Store(Or(0x10000,DID7),Index(TMP7,6))
|
|
}
|
|
Return(TMP7)
|
|
}
|
|
|
|
If(LEqual(NDID,8))
|
|
{
|
|
Name(TMP8,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP8,0))
|
|
Store(Or(0x10000,DID2),Index(TMP8,1))
|
|
Store(Or(0x10000,DID3),Index(TMP8,2))
|
|
Store(Or(0x10000,DID4),Index(TMP8,3))
|
|
Store(Or(0x10000,DID5),Index(TMP8,4))
|
|
Store(Or(0x10000,DID6),Index(TMP8,5))
|
|
Store(Or(0x10000,DID7),Index(TMP8,6))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP8,7))
|
|
} Else {
|
|
Store(Or(0x10000,DID8),Index(TMP8,7))
|
|
}
|
|
Return(TMP8)
|
|
}
|
|
|
|
If(LEqual(NDID,9))
|
|
{
|
|
Name(TMP9,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMP9,0))
|
|
Store(Or(0x10000,DID2),Index(TMP9,1))
|
|
Store(Or(0x10000,DID3),Index(TMP9,2))
|
|
Store(Or(0x10000,DID4),Index(TMP9,3))
|
|
Store(Or(0x10000,DID5),Index(TMP9,4))
|
|
Store(Or(0x10000,DID6),Index(TMP9,5))
|
|
Store(Or(0x10000,DID7),Index(TMP9,6))
|
|
Store(Or(0x10000,DID8),Index(TMP9,7))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMP9,8))
|
|
} Else {
|
|
Store(Or(0x10000,DID9),Index(TMP9,8))
|
|
}
|
|
Return(TMP9)
|
|
}
|
|
|
|
If(LEqual(NDID,0x0A))
|
|
{
|
|
Name(TMPA,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMPA,0))
|
|
Store(Or(0x10000,DID2),Index(TMPA,1))
|
|
Store(Or(0x10000,DID3),Index(TMPA,2))
|
|
Store(Or(0x10000,DID4),Index(TMPA,3))
|
|
Store(Or(0x10000,DID5),Index(TMPA,4))
|
|
Store(Or(0x10000,DID6),Index(TMPA,5))
|
|
Store(Or(0x10000,DID7),Index(TMPA,6))
|
|
Store(Or(0x10000,DID8),Index(TMPA,7))
|
|
Store(Or(0x10000,DID9),Index(TMPA,8))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMPA,9))
|
|
} Else {
|
|
Store(Or(0x10000,DIDA),Index(TMPA,9))
|
|
}
|
|
Return(TMPA)
|
|
}
|
|
|
|
If(LEqual(NDID,0x0B))
|
|
{
|
|
Name(TMPB,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMPB,0))
|
|
Store(Or(0x10000,DID2),Index(TMPB,1))
|
|
Store(Or(0x10000,DID3),Index(TMPB,2))
|
|
Store(Or(0x10000,DID4),Index(TMPB,3))
|
|
Store(Or(0x10000,DID5),Index(TMPB,4))
|
|
Store(Or(0x10000,DID6),Index(TMPB,5))
|
|
Store(Or(0x10000,DID7),Index(TMPB,6))
|
|
Store(Or(0x10000,DID8),Index(TMPB,7))
|
|
Store(Or(0x10000,DID9),Index(TMPB,8))
|
|
Store(Or(0x10000,DIDA),Index(TMPB,9))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMPB,10))
|
|
} Else {
|
|
Store(Or(0x10000,DIDB),Index(TMPB,10))
|
|
}
|
|
Return(TMPB)
|
|
}
|
|
|
|
If(LEqual(NDID,0x0C))
|
|
{
|
|
Name(TMPC,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMPC,0))
|
|
Store(Or(0x10000,DID2),Index(TMPC,1))
|
|
Store(Or(0x10000,DID3),Index(TMPC,2))
|
|
Store(Or(0x10000,DID4),Index(TMPC,3))
|
|
Store(Or(0x10000,DID5),Index(TMPC,4))
|
|
Store(Or(0x10000,DID6),Index(TMPC,5))
|
|
Store(Or(0x10000,DID7),Index(TMPC,6))
|
|
Store(Or(0x10000,DID8),Index(TMPC,7))
|
|
Store(Or(0x10000,DID9),Index(TMPC,8))
|
|
Store(Or(0x10000,DIDA),Index(TMPC,9))
|
|
Store(Or(0x10000,DIDB),Index(TMPC,10))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMPC,11))
|
|
} Else {
|
|
Store(Or(0x10000,DIDC),Index(TMPC,11))
|
|
}
|
|
Return(TMPC)
|
|
}
|
|
|
|
If(LEqual(NDID,0x0D))
|
|
{
|
|
Name(TMPD,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMPD,0))
|
|
Store(Or(0x10000,DID2),Index(TMPD,1))
|
|
Store(Or(0x10000,DID3),Index(TMPD,2))
|
|
Store(Or(0x10000,DID4),Index(TMPD,3))
|
|
Store(Or(0x10000,DID5),Index(TMPD,4))
|
|
Store(Or(0x10000,DID6),Index(TMPD,5))
|
|
Store(Or(0x10000,DID7),Index(TMPD,6))
|
|
Store(Or(0x10000,DID8),Index(TMPD,7))
|
|
Store(Or(0x10000,DID9),Index(TMPD,8))
|
|
Store(Or(0x10000,DIDA),Index(TMPD,9))
|
|
Store(Or(0x10000,DIDB),Index(TMPD,10))
|
|
Store(Or(0x10000,DIDC),Index(TMPD,11))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMPD,12))
|
|
} Else {
|
|
Store(Or(0x10000,DIDD),Index(TMPD,12))
|
|
}
|
|
Return(TMPD)
|
|
}
|
|
|
|
If(LEqual(NDID,0x0E))
|
|
{
|
|
Name(TMPE,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMPE,0))
|
|
Store(Or(0x10000,DID2),Index(TMPE,1))
|
|
Store(Or(0x10000,DID3),Index(TMPE,2))
|
|
Store(Or(0x10000,DID4),Index(TMPE,3))
|
|
Store(Or(0x10000,DID5),Index(TMPE,4))
|
|
Store(Or(0x10000,DID6),Index(TMPE,5))
|
|
Store(Or(0x10000,DID7),Index(TMPE,6))
|
|
Store(Or(0x10000,DID8),Index(TMPE,7))
|
|
Store(Or(0x10000,DID9),Index(TMPE,8))
|
|
Store(Or(0x10000,DIDA),Index(TMPE,9))
|
|
Store(Or(0x10000,DIDB),Index(TMPE,10))
|
|
Store(Or(0x10000,DIDC),Index(TMPE,11))
|
|
Store(Or(0x10000,DIDD),Index(TMPE,12))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMPE,13))
|
|
} Else {
|
|
Store(Or(0x10000,DIDE),Index(TMPE,13))
|
|
}
|
|
Return(TMPE)
|
|
}
|
|
|
|
If(LEqual(NDID,0x0F))
|
|
{
|
|
Name(TMPF,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMPF,0))
|
|
Store(Or(0x10000,DID2),Index(TMPF,1))
|
|
Store(Or(0x10000,DID3),Index(TMPF,2))
|
|
Store(Or(0x10000,DID4),Index(TMPF,3))
|
|
Store(Or(0x10000,DID5),Index(TMPF,4))
|
|
Store(Or(0x10000,DID6),Index(TMPF,5))
|
|
Store(Or(0x10000,DID7),Index(TMPF,6))
|
|
Store(Or(0x10000,DID8),Index(TMPF,7))
|
|
Store(Or(0x10000,DID9),Index(TMPF,8))
|
|
Store(Or(0x10000,DIDA),Index(TMPF,9))
|
|
Store(Or(0x10000,DIDB),Index(TMPF,10))
|
|
Store(Or(0x10000,DIDC),Index(TMPF,11))
|
|
Store(Or(0x10000,DIDD),Index(TMPF,12))
|
|
Store(Or(0x10000,DIDE),Index(TMPF,13))
|
|
If (LEqual(IPTP,1)) {
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
//
|
|
Store(0x00023480,Index(TMPF,14))
|
|
} Else {
|
|
Store(Or(0x10000,DIDF),Index(TMPF,14))
|
|
}
|
|
Return(TMPF)
|
|
}
|
|
|
|
If(LEqual(NDID,0x10))
|
|
{
|
|
Name(TMPG,Package() {
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF,
|
|
0xFFFFFFFF})
|
|
Store(Or(0x10000,DID1),Index(TMPG,0))
|
|
Store(Or(0x10000,DID2),Index(TMPG,1))
|
|
Store(Or(0x10000,DID3),Index(TMPG,2))
|
|
Store(Or(0x10000,DID4),Index(TMPG,3))
|
|
Store(Or(0x10000,DID5),Index(TMPG,4))
|
|
Store(Or(0x10000,DID6),Index(TMPG,5))
|
|
Store(Or(0x10000,DID7),Index(TMPG,6))
|
|
Store(Or(0x10000,DID8),Index(TMPG,7))
|
|
Store(Or(0x10000,DID9),Index(TMPG,8))
|
|
Store(Or(0x10000,DIDA),Index(TMPG,9))
|
|
Store(Or(0x10000,DIDB),Index(TMPG,10))
|
|
Store(Or(0x10000,DIDC),Index(TMPG,11))
|
|
Store(Or(0x10000,DIDD),Index(TMPG,12))
|
|
Store(Or(0x10000,DIDE),Index(TMPG,13))
|
|
Store(Or(0x10000,DIDF),Index(TMPG,14))
|
|
//
|
|
// IGFX need report IPUA as GFX0 child
|
|
// NDID can only be 0x10 if IPU is enabled
|
|
//
|
|
Store(0x00023480,Index(TMPG,15))
|
|
Return(TMPG)
|
|
}
|
|
|
|
//
|
|
// If nothing else, return Unknown LFP.
|
|
// (Prevents compiler warning.)
|
|
//
|
|
Return(Package() {0x00000400})
|
|
}
|
|
|
|
Device(DD01)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID1),0x400))
|
|
{
|
|
Store(0x1, EDPV)
|
|
Store(NXD1, NXDX)
|
|
Store(DID1, DIDX)
|
|
Return(1)
|
|
}
|
|
If(LEqual(DID1,0))
|
|
{
|
|
Return(1)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID1))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
Return(CDDS(DID1))
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD1)
|
|
}
|
|
Return(NDDS(DID1))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD02)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID2),0x400))
|
|
{
|
|
If(LEqual(And(0xF,DID2),0x1))
|
|
{
|
|
Store(0x2, EDPV)
|
|
Store(NXD2, NXDY)
|
|
Store(DID2, DIDY)
|
|
Return(2)
|
|
}
|
|
Store(0x2, EDPV)
|
|
Store(NXD2, NXDX)
|
|
Store(DID2, DIDX)
|
|
Return(2)
|
|
}
|
|
If(LEqual(DID2,0))
|
|
{
|
|
Return(2)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID2))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(LIDS,0))
|
|
{
|
|
Return(0x0)
|
|
}
|
|
Return(CDDS(DID2))
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
//
|
|
// Return the Next State.
|
|
//
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD2)
|
|
}
|
|
Return(NDDS(DID2))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD03)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID3),0x400))
|
|
{
|
|
Store(0x3, EDPV)
|
|
Store(NXD3, NXDX)
|
|
Store(DID3, DIDX)
|
|
Return(3)
|
|
}
|
|
If(LEqual(DID3,0))
|
|
{
|
|
Return(3)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID3))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DID3,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DID3))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD3)
|
|
}
|
|
Return(NDDS(DID3))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD04)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID4),0x400))
|
|
{
|
|
Store(0x4, EDPV)
|
|
Store(NXD4, NXDX)
|
|
Store(DID4, DIDX)
|
|
Return(4)
|
|
}
|
|
If(LEqual(DID4,0))
|
|
{
|
|
Return(4)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID4))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DID4,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DID4))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD4)
|
|
}
|
|
Return(NDDS(DID4))
|
|
}
|
|
|
|
//
|
|
// Device Set State. (See table above.)
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD05)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID5),0x400))
|
|
{
|
|
Store(0x5, EDPV)
|
|
Store(NXD5, NXDX)
|
|
Store(DID5, DIDX)
|
|
Return(5)
|
|
}
|
|
If(LEqual(DID5,0))
|
|
{
|
|
Return(5)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID5))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DID5,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DID5))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD5)
|
|
}
|
|
Return(NDDS(DID5))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD06)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID6),0x400))
|
|
{
|
|
Store(0x6, EDPV)
|
|
Store(NXD6, NXDX)
|
|
Store(DID6, DIDX)
|
|
Return(6)
|
|
}
|
|
If(LEqual(DID6,0))
|
|
{
|
|
Return(6)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID6))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DID6,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DID6))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD6)
|
|
}
|
|
Return(NDDS(DID6))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD07)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID7),0x400))
|
|
{
|
|
Store(0x7, EDPV)
|
|
Store(NXD7, NXDX)
|
|
Store(DID7, DIDX)
|
|
Return(7)
|
|
}
|
|
If(LEqual(DID7,0))
|
|
{
|
|
Return(7)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID7))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DID7,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DID7))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD7)
|
|
}
|
|
Return(NDDS(DID7))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD08)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID8),0x400))
|
|
{
|
|
Store(0x8, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DID8, DIDX)
|
|
Return(8)
|
|
}
|
|
If(LEqual(DID8,0))
|
|
{
|
|
Return(8)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID8))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DID8,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DID8))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DID8))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD09)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DID9),0x400))
|
|
{
|
|
Store(0x9, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DID9, DIDX)
|
|
Return(9)
|
|
}
|
|
If(LEqual(DID9,0))
|
|
{
|
|
Return(9)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DID9))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DID9,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DID9))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DID9))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD0A)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DIDA),0x400))
|
|
{
|
|
Store(0xA, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DIDA, DIDX)
|
|
Return(0x0A)
|
|
}
|
|
If(LEqual(DIDA,0))
|
|
{
|
|
Return(0x0A)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDA))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DIDA,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDA))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DIDA))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD0B)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DIDB),0x400))
|
|
{
|
|
Store(0xB, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DIDB, DIDX)
|
|
Return(0X0B)
|
|
}
|
|
If(LEqual(DIDB,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDB))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DIDB,0))
|
|
{
|
|
Return(0x0B)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDB))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DIDB))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD0C)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DIDC),0x400))
|
|
{
|
|
Store(0xC, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DIDC, DIDX)
|
|
Return(0X0C)
|
|
}
|
|
If(LEqual(DIDC,0))
|
|
{
|
|
Return(0x0C)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDC))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DIDC,0))
|
|
{
|
|
Return(0x0C)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDC))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DIDC))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD0D)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DIDD),0x400))
|
|
{
|
|
Store(0xD, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DIDD, DIDX)
|
|
Return(0X0D)
|
|
}
|
|
If(LEqual(DIDD,0))
|
|
{
|
|
Return(0x0D)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDD))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DIDD,0))
|
|
{
|
|
Return(0x0D)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDD))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DIDD))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD0E)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DIDE),0x400))
|
|
{
|
|
Store(0xE, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DIDE, DIDX)
|
|
Return(0X0E)
|
|
}
|
|
If(LEqual(DIDE,0))
|
|
{
|
|
Return(0x0E)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDE))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DIDE,0))
|
|
{
|
|
Return(0x0E)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDE))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DIDE))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
Device(DD0F)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(And(0x0F00,DIDF),0x400))
|
|
{
|
|
Store(0xF, EDPV)
|
|
Store(NXD8, NXDX)
|
|
Store(DIDF, DIDX)
|
|
Return(0X0F)
|
|
}
|
|
If(LEqual(DIDF,0))
|
|
{
|
|
Return(0x0F)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDF))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(DIDC,0))
|
|
{
|
|
Return(0x0F)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDF))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXD8)
|
|
}
|
|
Return(NDDS(DIDF))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
}
|
|
|
|
//
|
|
//Device for eDP
|
|
//
|
|
Device(DD1F)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(EDPV, 0x0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDX))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(EDPV, 0x0))
|
|
{
|
|
Return(0x00)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDX))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXDX)
|
|
}
|
|
Return(NDDS(DIDX))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
|
|
//
|
|
// Query List of Brightness Control Levels Supported.
|
|
//
|
|
Method(_BCL,0)
|
|
{
|
|
//
|
|
// List of supported brightness levels in the following sequence.
|
|
// Level when machine has full power.
|
|
// Level when machine is on batteries.
|
|
// Other supported levels.
|
|
//
|
|
If(CondRefOf(\PBCL)) {
|
|
Return (PBCL())
|
|
} Else {
|
|
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})
|
|
}
|
|
}
|
|
|
|
//
|
|
// Set the Brightness Level.
|
|
//
|
|
Method (_BCM,1)
|
|
{
|
|
//
|
|
// Set the requested level if it is between 0 and 100%.
|
|
//
|
|
If(LAnd(LGreaterEqual(Arg0,0),LLessEqual(Arg0,100)))
|
|
{
|
|
\_SB.PC00.GFX0.AINT(1, Arg0)
|
|
Store(Arg0,BRTL) // Store Brightness Level.
|
|
}
|
|
}
|
|
|
|
//
|
|
// Brightness Query Current level.
|
|
//
|
|
Method (_BQC,0)
|
|
{
|
|
Return(BRTL)
|
|
}
|
|
|
|
//
|
|
// Physical Location of Device
|
|
//
|
|
Method (_PLD,0)
|
|
{
|
|
If(CondRefOf(\PLD1)) {
|
|
Return (PLD1())
|
|
} Else {
|
|
Return (DPLD)
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// Second Display
|
|
//
|
|
Device(DD2F)
|
|
{
|
|
//
|
|
// Return Unique ID.
|
|
//
|
|
Method(_ADR,0,Serialized)
|
|
{
|
|
If(LEqual(EDPV, 0x0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(EDPV, 0x1))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
Else
|
|
{
|
|
Return(And(0xFFFF,DIDY))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Return the Current Status.
|
|
//
|
|
Method(_DCS,0)
|
|
{
|
|
If(LEqual(EDPV, 0x0))
|
|
{
|
|
Return(0x00)
|
|
}
|
|
If(LEqual(EDPV, 0x1))
|
|
{
|
|
Return(0x0)
|
|
}
|
|
Else
|
|
{
|
|
Return(CDDS(DIDY))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Query Graphics State (active or inactive).
|
|
//
|
|
Method(_DGS,0)
|
|
{
|
|
If(LAnd(LEqual(And(HGMD,0x7F),0x01),CondRefOf(SNXD)))
|
|
{
|
|
Return (NXDY)
|
|
}
|
|
Return(NDDS(DIDY))
|
|
}
|
|
|
|
//
|
|
// Device Set State.
|
|
//
|
|
Method(_DSS,1)
|
|
{
|
|
DSST(Arg0)
|
|
}
|
|
|
|
//
|
|
// Query List of Brightness Control Levels Supported.
|
|
//
|
|
Method(_BCL,0)
|
|
{
|
|
//
|
|
// List of supported brightness levels in the following sequence.
|
|
// Level when machine has full power.
|
|
// Level when machine is on batteries.
|
|
// Other supported levels.
|
|
//
|
|
If(CondRefOf(\PBCL)) {
|
|
Return (PBCL())
|
|
} Else {
|
|
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})
|
|
}
|
|
}
|
|
|
|
//
|
|
// Set the Brightness Level.
|
|
//
|
|
Method (_BCM,1)
|
|
{
|
|
//
|
|
// Set the requested level if it is between 0 and 100%.
|
|
//
|
|
If(LAnd(LGreaterEqual(Arg0,0),LLessEqual(Arg0,100)))
|
|
{
|
|
\_SB.PC00.GFX0.AINT(1, Arg0)
|
|
Store(Arg0,BRTL) // Store Brightness Level.
|
|
}
|
|
}
|
|
|
|
//
|
|
// Brightness Query Current level.
|
|
//
|
|
Method (_BQC,0)
|
|
{
|
|
Return(BRTL)
|
|
}
|
|
|
|
Method (_PLD,0)
|
|
{
|
|
If(CondRefOf(\PLD2)) {
|
|
Return (PLD2())
|
|
} Else {
|
|
Return (DPLD)
|
|
}
|
|
}
|
|
}
|
|
|
|
Method(SDDL,1)
|
|
{
|
|
Increment(NDID)
|
|
Store(And(Arg0,0xF0F),Local0)
|
|
Or(0x80000000,Local0, Local1)
|
|
If(LEqual(DIDL,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL2,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL3,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL4,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL5,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL6,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL7,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL8,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DDL9,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DD10,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DD11,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DD12,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DD13,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DD14,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
If(LEqual(DD15,Local0))
|
|
{
|
|
Return(Local1)
|
|
}
|
|
Return(0)
|
|
}
|
|
|
|
Method(CDDS,1)
|
|
{
|
|
Store(And(Arg0,0xF0F),Local0)
|
|
|
|
If(LEqual(0, Local0))
|
|
{
|
|
Return(0x1D)
|
|
}
|
|
If(LEqual(CADL, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(CAL2, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(CAL3, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(CAL4, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(CAL5, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(CAL6, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(CAL7, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
If(LEqual(CAL8, Local0))
|
|
{
|
|
Return(0x1F)
|
|
}
|
|
Return(0x1D)
|
|
}
|
|
|
|
Method(NDDS,1)
|
|
{
|
|
Store(And(Arg0,0xF0F),Local0)
|
|
|
|
If(LEqual(0, Local0))
|
|
{
|
|
Return(0)
|
|
}
|
|
If(LEqual(NADL, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
If(LEqual(NDL2, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
If(LEqual(NDL3, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
If(LEqual(NDL4, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
If(LEqual(NDL5, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
If(LEqual(NDL6, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
If(LEqual(NDL7, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
If(LEqual(NDL8, Local0))
|
|
{
|
|
Return(1)
|
|
}
|
|
Return(0)
|
|
}
|
|
|
|
//
|
|
// Device Set State Table
|
|
// BIT31 BIT30 Execution
|
|
// 0 0 Don't implement.
|
|
// 0 1 Cache change. Nothing to Implement.
|
|
// 1 0 Don't Implement.
|
|
// 1 1 Display Switch Complete. Implement.
|
|
//
|
|
Method(DSST,1)
|
|
{
|
|
If(LEqual(And(Arg0,0xC0000000),0xC0000000))
|
|
{
|
|
//
|
|
// State change was performed by the
|
|
// Video Drivers. Simply update the
|
|
// New State.
|
|
//
|
|
Store(NSTE,CSTE)
|
|
}
|
|
}
|
|
|
|
//
|
|
// Include IGD OpRegion/Software SCI interrupt handler/DSM which is used by
|
|
// the graphics drivers to request data from system BIOS.
|
|
//
|
|
include ("IgfxOpRn.asl")
|
|
include ("IgfxDsm.asl")
|