Skip to content

Instantly share code, notes, and snippets.

@spacepluk
Last active January 17, 2020 10:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spacepluk/2b41bad338563e18c89584a5403342b2 to your computer and use it in GitHub Desktop.
Save spacepluk/2b41bad338563e18c89584a5403342b2 to your computer and use it in GitHub Desktop.
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20191018 (64-bit version)
* Copyright (c) 2000 - 2019 Intel Corporation
*
* Disassembling to non-symbolic legacy ASL operators
*
* Disassembly of SSDT-6-OptTabl.aml, Fri Jan 17 10:40:26 2020
*
* Original Table Header:
* Signature "SSDT"
* Length 0x0000144E (5198)
* Revision 0x01
* Checksum 0xAA
* OEM ID "OptRef"
* OEM Table ID "OptTabl"
* OEM Revision 0x00001000 (4096)
* Compiler ID "INTL"
* Compiler Version 0x20120711 (538052369)
*/
DefinitionBlock ("", "SSDT", 1, "OptRef", "OptTabl", 0x00001000)
{
/*
* iASL Warning: There were 5 external control methods found during
* disassembly, but only 3 were resolved (2 unresolved). Additional
* ACPI tables may be required to properly disassemble the code. This
* resulting disassembler output file may not compile because the
* disassembler did not know how many arguments to assign to the
* unresolved methods. Note: SSDTs can be dynamically loaded at
* runtime and may or may not be available via the host OS.
*
* To specify the tables needed to resolve external control method
* references, the -e option can be used to specify the filenames.
* Example iASL invocations:
* iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml
* iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml
* iasl -e ssdt*.aml -d dsdt.aml
*
* In addition, the -fe option can be used to specify a file containing
* control method external declarations with the associated method
* argument counts. Each line of the file must be of the form:
* External (<method pathname>, MethodObj, <argument count>)
* Invocation:
* iasl -fe refs.txt -d dsdt.aml
*
* The following methods were unresolved and many not compile properly
* because the disassembler had to guess at the number of arguments
* required for each:
*/
External (_PR_.CPU0, UnknownObj)
External (_PR_.CPU0._PPC, UnknownObj)
External (_PR_.CPU0._PSS, IntObj)
External (_PR_.CPU0._PTC, UnknownObj)
External (_PR_.CPU0._TSS, IntObj)
External (_SB_.PCI0, DeviceObj)
External (_SB_.PCI0.GFX0, DeviceObj)
External (_SB_.PCI0.GFX0._DSM, IntObj)
External (_SB_.PCI0.LPCB.EC0_.BMRD, IntObj)
External (_SB_.PCI0.LPCB.EC0_.BMWD, UnknownObj)
External (_SB_.PCI0.LPCB.H_EC.GTVR, IntObj)
External (_SB_.PCI0.PEG0, DeviceObj)
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
External (_SB_.PCI0.PEG0.PEGP.SGOF, MethodObj) // 0 Arguments
External (_SB_.PCI0.PEG0.PEGP.SGON, MethodObj) // 0 Arguments
External (_SB_.PCI0.PEG0.PEGP.SGST, MethodObj) // 0 Arguments
External (DID1, IntObj)
External (DID2, IntObj)
External (DID3, IntObj)
External (DID4, IntObj)
External (DID5, IntObj)
External (DID6, IntObj)
External (DID7, IntObj)
External (DID8, UnknownObj)
External (EBAS, UnknownObj)
External (NVGA, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (NVHA, MethodObj) // Warning: Unknown method, guessing 1 arguments
External (NXD1, UnknownObj)
External (NXD2, UnknownObj)
External (NXD3, UnknownObj)
External (NXD4, UnknownObj)
External (NXD5, UnknownObj)
External (NXD6, UnknownObj)
External (NXD7, UnknownObj)
External (NXD8, UnknownObj)
External (P8XH, UnknownObj)
External (SGFL, UnknownObj)
External (SSMP, UnknownObj)
Scope (\_SB.PCI0)
{
Name (OTM, "OTMACPI 2010-Mar-09 12:08:26")
}
Scope (\_SB.PCI0.PEG0.PEGP)
{
OperationRegion (PCI2, SystemMemory, EBAS(0x0500))
Field (PCI2, DWordAcc, Lock, Preserve)
{
Offset (0x04),
CMDR, 8,
VGAR, 2000,
Offset (0x48B),
, 1,
NHDA, 1
}
Name (VGAB, Buffer (0xFA)
{
0x00 // .
})
Name (GPRF, Zero)
OperationRegion (NVHM, SystemMemory, NVHA (0x00020400), Field (NVHM, DWordAcc, NoLock, Preserve)
{
NVSG, 128,
NVSZ, 32,
NVVR, 32,
NVHO, 32,
RVBS, 32,
RBF1, 262144,
RBF2, 262144,
RBF3, 262144,
RBF4, 262144,
MXML, 32,
MXM3, 1600
})
Name (OPCE, 0x02)
Name (DGPS, Zero)
Name (_PSC, Zero) // _PSC: Power State Current
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
Store (Zero, _PSC) /* \_SB_.PCI0.PEG0.PEGP._PSC */
If (LNotEqual (DGPS, Zero))
{
_ON ()
Store (Zero, DGPS) /* \_SB_.PCI0.PEG0.PEGP.DGPS */
Store (Zero, NHDA) /* \_SB_.PCI0.PEG0.PEGP.NHDA */
}
}
Method (_PS1, 0, NotSerialized) // _PS1: Power State 1
{
Store (One, _PSC) /* \_SB_.PCI0.PEG0.PEGP._PSC */
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
If (LEqual (OPCE, 0x03))
{
If (LEqual (DGPS, Zero))
{
_OFF ()
Store (One, DGPS) /* \_SB_.PCI0.PEG0.PEGP.DGPS */
}
Store (0x02, OPCE) /* \_SB_.PCI0.PEG0.PEGP.OPCE */
}
Store (0x03, _PSC) /* \_SB_.PCI0.PEG0.PEGP._PSC */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0x0F)
}
Method (_ROM, 2, NotSerialized) // _ROM: Read-Only Memory
{
Store (Arg0, Local0)
Store (Arg1, Local1)
If (LGreater (Local1, 0x1000))
{
Store (0x1000, Local1)
}
If (LGreater (Local0, 0x00020000))
{
Return (Buffer (Local1)
{
0x00 // .
})
}
Multiply (Local1, 0x08, Local3)
Name (ROM1, Buffer (0x8000)
{
0x00 // .
})
Name (ROM2, Buffer (Local1)
{
0x00 // .
})
If (LLess (Local0, 0x8000))
{
Store (RBF1, ROM1) /* \_SB_.PCI0.PEG0.PEGP._ROM.ROM1 */
}
ElseIf (LLess (Local0, 0x00010000))
{
Subtract (Local0, 0x8000, Local0)
Store (RBF2, ROM1) /* \_SB_.PCI0.PEG0.PEGP._ROM.ROM1 */
}
ElseIf (LLess (Local0, 0x00018000))
{
Subtract (Local0, 0x00010000, Local0)
Store (RBF3, ROM1) /* \_SB_.PCI0.PEG0.PEGP._ROM.ROM1 */
}
ElseIf (LLess (Local0, 0x00020000))
{
Subtract (Local0, 0x00018000, Local0)
Store (RBF4, ROM1) /* \_SB_.PCI0.PEG0.PEGP._ROM.ROM1 */
}
Multiply (Local0, 0x08, Local2)
CreateField (ROM1, Local2, Local3, TMPB)
Store (TMPB, ROM2) /* \_SB_.PCI0.PEG0.PEGP._ROM.ROM2 */
Return (ROM2) /* \_SB_.PCI0.PEG0.PEGP._ROM.ROM2 */
}
Method (HDSM, 4, Serialized)
{
Return (0x80000001)
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
CreateByteField (Arg0, 0x03, GUID)
Return (\_SB.PCI0.GFX0.HDSM (Arg0, Arg1, Arg2, Arg3))
}
Name (CTXT, Zero)
Method (_ON, 0, Serialized) // _ON_: Power On
{
SGON ()
If (LNotEqual (GPRF, One))
{
Store (CMDR, Local0)
Store (Zero, CMDR) /* \_SB_.PCI0.PEG0.PEGP.CMDR */
Store (VGAB, VGAR) /* \_SB_.PCI0.PEG0.PEGP.VGAR */
Store (0x06, CMDR) /* \_SB_.PCI0.PEG0.PEGP.CMDR */
Store (Zero, NHDA) /* \_SB_.PCI0.PEG0.PEGP.NHDA */
Store (Local0, CMDR) /* \_SB_.PCI0.PEG0.PEGP.CMDR */
}
Store (0xB7, SSMP) /* External reference */
}
Method (_OFF, 0, Serialized) // _OFF: Power Off
{
If (LEqual (CTXT, Zero))
{
If (LNotEqual (GPRF, One))
{
Store (VGAR, VGAB) /* \_SB_.PCI0.PEG0.PEGP.VGAB */
}
Store (One, CTXT) /* \_SB_.PCI0.PEG0.PEGP.CTXT */
}
SGOF ()
}
}
Scope (\_SB.PCI0.GFX0)
{
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (DID1, Index (TLPK, Zero))
Store (DID2, Index (TLPK, 0x02))
Store (DID3, Index (TLPK, 0x04))
Store (DID4, Index (TLPK, 0x06))
Store (DID5, Index (TLPK, 0x08))
Store (DID6, Index (TLPK, 0x0A))
Store (DID7, Index (TLPK, 0x0C))
Store (DID2, Index (TLPK, 0x0E))
Store (DID1, Index (TLPK, 0x0F))
Store (DID2, Index (TLPK, 0x11))
Store (DID3, Index (TLPK, 0x12))
Store (DID2, Index (TLPK, 0x14))
Store (DID4, Index (TLPK, 0x15))
Store (DID2, Index (TLPK, 0x17))
Store (DID5, Index (TLPK, 0x18))
Store (DID2, Index (TLPK, 0x1A))
Store (DID6, Index (TLPK, 0x1B))
Store (DID2, Index (TLPK, 0x1D))
Store (DID7, Index (TLPK, 0x1E))
}
OperationRegion (NVIG, SystemMemory, NVGA (0x45), Field (NVIG, DWordAcc, NoLock, Preserve)
{
NISG, 128,
NISZ, 32,
NIVR, 32,
GPSS, 32,
GACD, 16,
GATD, 16,
LDES, 8,
DKST, 8,
DACE, 8,
DHPE, 8,
DHPS, 8,
SGNC, 8,
GPPO, 8,
USPM, 8,
GPSP, 8,
TLSN, 8,
DOSF, 8,
ELCL, 16
})
Name (TLPK, Package (0x20)
{
Ones,
0x2C,
Ones,
0x2C,
Ones,
0x2C,
Ones,
0x2C,
Ones,
0x2C,
Ones,
0x2C,
Ones,
0x2C,
Ones,
Ones,
0x2C,
Ones,
Ones,
0x2C,
Ones,
Ones,
0x2C,
Ones,
Ones,
0x2C,
Ones,
Ones,
0x2C,
Ones,
Ones,
0x2C
})
Method (INDL, 0, Serialized)
{
Store (Zero, NXD1) /* External reference */
Store (Zero, NXD2) /* External reference */
Store (Zero, NXD3) /* External reference */
Store (Zero, NXD4) /* External reference */
Store (Zero, NXD5) /* External reference */
Store (Zero, NXD6) /* External reference */
Store (Zero, NXD7) /* External reference */
Store (Zero, NXD8) /* External reference */
}
Method (SND1, 1, Serialized)
{
If (LEqual (Arg0, DID1))
{
Store (One, NXD1) /* External reference */
}
If (LEqual (Arg0, DID2))
{
Store (One, NXD2) /* External reference */
}
If (LEqual (Arg0, DID3))
{
Store (One, NXD3) /* External reference */
}
If (LEqual (Arg0, DID4))
{
Store (One, NXD4) /* External reference */
}
If (LEqual (Arg0, DID5))
{
Store (One, NXD5) /* External reference */
}
If (LEqual (Arg0, DID6))
{
Store (One, NXD6) /* External reference */
}
If (LEqual (Arg0, DID7))
{
Store (One, NXD7) /* External reference */
}
If (LEqual (Arg0, DID8))
{
Store (One, NXD8) /* External reference */
}
}
Method (SNXD, 1, Serialized)
{
INDL ()
Store (One, Local0)
Store (Zero, Local1)
While (LLess (Local0, Arg0))
{
If (LEqual (DerefOf (Index (TLPK, Local1)), 0x2C))
{
Increment (Local0)
}
Increment (Local1)
}
SND1 (DerefOf (Index (TLPK, Local1)))
Increment (Local1)
If (LNotEqual (DerefOf (Index (TLPK, Local1)), 0x2C))
{
SND1 (DerefOf (Index (TLPK, Local1)))
}
}
Method (CTOI, 1, Serialized)
{
Switch (ToInteger (Arg0))
{
Case (One)
{
Return (One)
}
Case (0x02)
{
Return (0x02)
}
Case (0x04)
{
Return (0x03)
}
Case (0x08)
{
Return (0x04)
}
Case (0x10)
{
Return (0x05)
}
Case (0x20)
{
Return (0x06)
}
Case (0x40)
{
Return (0x07)
}
Case (0x03)
{
Return (0x08)
}
Case (0x06)
{
Return (0x09)
}
Case (0x0A)
{
Return (0x0A)
}
Case (0x12)
{
Return (0x0B)
}
Case (0x22)
{
Return (0x0C)
}
Case (0x42)
{
Return (0x0D)
}
Default
{
Return (One)
}
}
}
Method (HDSM, 4, Serialized)
{
If (LEqual (Arg0, ToUUID ("a3132d01-8cda-49ba-a52e-bc9d46df6b81")))
{
Return (\_SB.PCI0.PEG0.PEGP.GPS (Arg0, Arg1, Arg2, Arg3))
}
Name (SGCI, Zero)
Name (NBCI, Zero)
Name (OPCI, Zero)
Name (BUFF, Zero)
If (LEqual (Arg0, ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0")))
{
Store (One, OPCI) /* \_SB_.PCI0.GFX0.HDSM.OPCI */
}
If (LOr (OPCI, LOr (SGCI, NBCI)))
{
If (OPCI)
{
If (LNotEqual (Arg1, 0x0100))
{
Return (0x80000002)
}
}
ElseIf (LNotEqual (Arg1, 0x0102))
{
Return (0x80000002)
}
If (LEqual (Arg2, Zero))
{
If (SGCI)
{
Return (Buffer (0x04)
{
0x7F, 0x00, 0x04, 0x00 // ....
})
}
ElseIf (NBCI)
{
Return (Buffer (0x04)
{
0x73, 0x00, 0x04, 0x00 // s...
})
}
ElseIf (OPCI)
{
Return (Buffer (0x04)
{
0x61, 0x18, 0x03, 0x0C // a...
})
}
}
If (LEqual (Arg2, One))
{
Name (TEMP, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00 // ....
})
CreateDWordField (TEMP, Zero, STS0)
If (SGCI)
{
Or (STS0, 0x0B0000BF, STS0) /* \_SB_.PCI0.GFX0.HDSM.STS0 */
Or (STS0, ShiftLeft (SGNC, 0x08, SGNC) /* \_SB_.PCI0.GFX0.SGNC */, STS0) /* \_SB_.PCI0.GFX0.HDSM.STS0 */
}
Else
{
Or (STS0, Zero, STS0) /* \_SB_.PCI0.GFX0.HDSM.STS0 */
}
Return (TEMP) /* \_SB_.PCI0.GFX0.HDSM.TEMP */
}
If (LEqual (Arg2, 0x02))
{
Name (TMP1, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00 // ....
})
CreateDWordField (TMP1, Zero, STS1)
ToInteger (Arg3, Local0)
And (Local0, 0x1F, Local0)
If (And (Local0, 0x10))
{
And (Local0, 0x0F, Local0)
Store (Local0, GPSS) /* \_SB_.PCI0.GFX0.GPSS */
Notify (\_SB.PCI0.GFX0, 0xD9) // Hardware-Specific
Notify (\_SB.PCI0.WMI1, 0xD9) // Hardware-Specific
}
Else
{
And (Local0, 0x0F, Local0)
If (LEqual (GPPO, One))
{
Store (GPSS, Local0)
Or (Local0, 0x10, Local0)
Store (Zero, GPPO) /* \_SB_.PCI0.GFX0.GPPO */
}
}
Or (STS1, Local0, STS1) /* \_SB_.PCI0.GFX0.HDSM.STS1 */
Return (TMP1) /* \_SB_.PCI0.GFX0.HDSM.TMP1 */
}
If (LEqual (Arg2, 0x03))
{
Name (TMP2, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00 // ....
})
CreateDWordField (TMP2, Zero, STS2)
ToInteger (Arg3, Local0)
And (Local0, 0x03, Local0)
If (LEqual (Local0, Zero))
{
\_SB.PCI0.PEG0.PEGP.SGST ()
}
If (LEqual (Local0, One))
{
\_SB.PCI0.PEG0.PEGP.SGON ()
}
If (LEqual (Local0, 0x02))
{
\_SB.PCI0.PEG0.PEGP.SGOF ()
}
If (LEqual (\_SB.PCI0.PEG0.PEGP.SGST (), 0x0F))
{
Or (STS2, One, STS2) /* \_SB_.PCI0.GFX0.HDSM.STS2 */
}
Return (TMP2) /* \_SB_.PCI0.GFX0.HDSM.TMP2 */
}
If (LEqual (Arg2, 0x04))
{
Name (TMP3, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00 // ....
})
CreateDWordField (TMP3, Zero, STS3)
ToInteger (Arg3, Local0)
Store (Local0, Local1)
ShiftRight (Local0, 0x10, Local0)
And (Local0, One, USPM) /* \_SB_.PCI0.GFX0.USPM */
ShiftRight (Local1, 0x0D, Local1)
And (Local1, 0x03, Local1)
If (LNotEqual (Local1, GPSP))
{
If (LEqual (USPM, One))
{
Store (Local1, GPSP) /* \_SB_.PCI0.GFX0.GPSP */
}
Else
{
Store (GPSP, Local1)
Or (STS3, 0x8000, STS3) /* \_SB_.PCI0.GFX0.HDSM.STS3 */
}
}
Or (STS3, ShiftLeft (Local1, 0x0D), STS3) /* \_SB_.PCI0.GFX0.HDSM.STS3 */
Return (TMP3) /* \_SB_.PCI0.GFX0.HDSM.TMP3 */
}
If (LEqual (Arg2, 0x05))
{
Name (TMP4, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00 // ....
})
CreateDWordField (TMP4, Zero, STS4)
ToInteger (Arg3, Local0)
If (And (Local0, 0x80000000))
{
Store (And (ShiftRight (Local0, 0x19), 0x1F), TLSN) /* \_SB_.PCI0.GFX0.TLSN */
If (And (Local0, 0x40000000))
{
Store (One, DOSF) /* \_SB_.PCI0.GFX0.DOSF */
}
}
If (And (Local0, 0x01000000))
{
Store (And (ShiftRight (Local0, 0x0C), 0x0FFF), GACD) /* \_SB_.PCI0.GFX0.GACD */
Store (And (Local0, 0x0FFF), GATD) /* \_SB_.PCI0.GFX0.GATD */
Store (CTOI (GACD), TLSN) /* \_SB_.PCI0.GFX0.TLSN */
Increment (TLSN)
If (LGreater (TLSN, 0x0D))
{
Store (One, TLSN) /* \_SB_.PCI0.GFX0.TLSN */
}
SNXD (TLSN)
}
Or (STS4, ShiftLeft (DHPE, 0x15), STS4) /* \_SB_.PCI0.GFX0.HDSM.STS4 */
Or (STS4, ShiftLeft (DHPS, 0x14), STS4) /* \_SB_.PCI0.GFX0.HDSM.STS4 */
Or (STS4, ShiftLeft (TLSN, 0x08), STS4) /* \_SB_.PCI0.GFX0.HDSM.STS4 */
Or (STS4, ShiftLeft (DKST, 0x05), STS4) /* \_SB_.PCI0.GFX0.HDSM.STS4 */
Or (STS4, ShiftLeft (LDES, 0x04), STS4) /* \_SB_.PCI0.GFX0.HDSM.STS4 */
Or (STS4, DACE, STS4) /* \_SB_.PCI0.GFX0.HDSM.STS4 */
Store (Zero, LDES) /* \_SB_.PCI0.GFX0.LDES */
Store (Zero, DHPS) /* \_SB_.PCI0.GFX0.DHPS */
Store (Zero, DHPE) /* \_SB_.PCI0.GFX0.DHPE */
Store (Zero, DACE) /* \_SB_.PCI0.GFX0.DACE */
Return (TMP4) /* \_SB_.PCI0.GFX0.HDSM.TMP4 */
}
If (LEqual (Arg2, 0x06))
{
Return (TLPK) /* \_SB_.PCI0.GFX0.TLPK */
}
If (LEqual (Arg2, 0x10))
{
CreateWordField (Arg3, 0x02, USRG)
Name (OPVK, Buffer (0xE6)
{
/* 0000 */ 0xE4, 0x42, 0x5F, 0x14, 0x36, 0x26, 0x16, 0x37, // .B_.6&.7
/* 0008 */ 0x4B, 0x56, 0xE6, 0x00, 0x00, 0x00, 0x01, 0x00, // KV......
/* 0010 */ 0x31, 0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, // 14859745
/* 0018 */ 0x36, 0x39, 0x38, 0x35, 0x47, 0x65, 0x6E, 0x75, // 6985Genu
/* 0020 */ 0x69, 0x6E, 0x65, 0x20, 0x4E, 0x56, 0x49, 0x44, // ine NVID
/* 0028 */ 0x49, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, // IA Certi
/* 0030 */ 0x66, 0x69, 0x65, 0x64, 0x20, 0x4F, 0x70, 0x74, // fied Opt
/* 0038 */ 0x69, 0x6D, 0x75, 0x73, 0x20, 0x52, 0x65, 0x61, // imus Rea
/* 0040 */ 0x64, 0x79, 0x20, 0x4D, 0x6F, 0x74, 0x68, 0x65, // dy Mothe
/* 0048 */ 0x72, 0x62, 0x6F, 0x61, 0x72, 0x64, 0x20, 0x66, // rboard f
/* 0050 */ 0x6F, 0x72, 0x20, 0x37, 0x33, 0x36, 0x30, 0x31, // or 73601
/* 0058 */ 0x39, 0x5F, 0x4D, 0x49, 0x52, 0x63, 0x20, 0x20, // 9_MIRc
/* 0060 */ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, //
/* 0068 */ 0x2D, 0x20, 0x3C, 0x34, 0x27, 0x21, 0x58, 0x29, // - <4'!X)
/* 0070 */ 0x57, 0x27, 0x58, 0x20, 0x27, 0x25, 0x59, 0x5D, // W'X '%Y]
/* 0078 */ 0x31, 0x29, 0x3A, 0x2A, 0x26, 0x39, 0x59, 0x43, // 1):*&9YC
/* 0080 */ 0x56, 0x3B, 0x58, 0x56, 0x58, 0x3D, 0x59, 0x4E, // V;XVX=YN
/* 0088 */ 0x3B, 0x3A, 0x35, 0x44, 0x25, 0x42, 0x5A, 0x48, // ;:5D%BZH
/* 0090 */ 0x55, 0x3A, 0x58, 0x4C, 0x25, 0x48, 0x54, 0x21, // U:XL%HT!
/* 0098 */ 0x35, 0x4B, 0x4D, 0x37, 0x2C, 0x3C, 0x20, 0x2D, // 5KM7,< -
/* 00A0 */ 0x20, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, // Copyrig
/* 00A8 */ 0x68, 0x74, 0x20, 0x32, 0x30, 0x31, 0x30, 0x20, // ht 2010
/* 00B0 */ 0x4E, 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x43, // NVIDIA C
/* 00B8 */ 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, // orporati
/* 00C0 */ 0x6F, 0x6E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x52, // on All R
/* 00C8 */ 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, // ights Re
/* 00D0 */ 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2D, 0x31, // served-1
/* 00D8 */ 0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, 0x36, // 48597456
/* 00E0 */ 0x39, 0x38, 0x35, 0x28, 0x52, 0x29 // 985(R)
})
If (LEqual (USRG, 0x564B))
{
Return (OPVK) /* \_SB_.PCI0.GFX0.HDSM.OPVK */
}
Return (Zero)
}
If (LEqual (Arg2, 0x11))
{
Return (Zero)
}
If (LEqual (Arg2, 0x12))
{
Return (Package (0x0A)
{
0xD0,
ToUUID ("921a2f40-0dc4-402d-ac18-b48444ef9ed2"),
0xD9,
ToUUID ("c12ad361-9fa9-4c74-901f-95cb0945cf3e"),
0xDB,
ToUUID ("42848006-8886-490e-8c72-2bdca93a8a09"),
0xEF,
ToUUID ("b3e485d2-3cc1-4b54-8f31-77ba2fdc9ebe"),
0xF0,
ToUUID ("360d6fb6-1d4e-4fa6-b848-1be33dd8ec7b")
})
}
If (LEqual (Arg2, 0x1A))
{
CreateField (Arg3, 0x18, 0x02, OMPR)
CreateField (Arg3, Zero, One, FLCH)
CreateField (Arg3, One, One, DVSR)
CreateField (Arg3, 0x02, One, DVSC)
If (ToInteger (FLCH))
{
Store (OMPR, \_SB.PCI0.PEG0.PEGP.OPCE)
}
Store (Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00 // ....
}, Local0)
CreateField (Local0, Zero, One, OPEN)
CreateField (Local0, 0x03, 0x02, CGCS)
CreateField (Local0, 0x06, One, SHPC)
CreateField (Local0, 0x08, One, SNSR)
CreateField (Local0, 0x18, 0x03, DGPC)
CreateField (Local0, 0x1B, 0x02, HDAC)
Store (One, OPEN) /* \_SB_.PCI0.GFX0.HDSM.OPEN */
Store (One, SHPC) /* \_SB_.PCI0.GFX0.HDSM.SHPC */
Store (0x02, HDAC) /* \_SB_.PCI0.GFX0.HDSM.HDAC */
Store (One, DGPC) /* \_SB_.PCI0.GFX0.HDSM.DGPC */
If (ToInteger (DVSC))
{
If (ToInteger (DVSR))
{
Store (One, \_SB.PCI0.PEG0.PEGP.GPRF)
}
Else
{
Store (Zero, \_SB.PCI0.PEG0.PEGP.GPRF)
}
}
Store (\_SB.PCI0.PEG0.PEGP.GPRF, SNSR) /* \_SB_.PCI0.GFX0.HDSM.SNSR */
If (LNotEqual (\_SB.PCI0.PEG0.PEGP.SGST (), Zero))
{
Store (0x03, CGCS) /* \_SB_.PCI0.GFX0.HDSM.CGCS */
}
Return (Local0)
}
If (LEqual (Arg2, 0x1B))
{
ToInteger (Arg3, Local0)
If (And (Local0, 0x02))
{
Store (Zero, BUFF) /* \_SB_.PCI0.GFX0.HDSM.BUFF */
If (And (Local0, One))
{
Store (One, BUFF) /* \_SB_.PCI0.GFX0.HDSM.BUFF */
}
}
And (SGFL, 0xFFFFFFFD, SGFL) /* External reference */
Or (SGFL, ShiftLeft (BUFF, One), SGFL) /* External reference */
Store (0xB6, SSMP) /* External reference */
Return (Local0)
}
Return (0x80000002)
}
Return (0x80000001)
}
}
Scope (\_SB.PCI0)
{
Name (GPS, "GPSACPI 2012-Aug-12 14:56:05")
}
Scope (\_SB.PCI0.PEG0.PEGP)
{
Name (PSAP, Zero)
Name (ECBF, Buffer (0x14){})
CreateDWordField (ECBF, Zero, EDS1)
CreateDWordField (ECBF, 0x04, EDS2)
CreateDWordField (ECBF, 0x08, EDS3)
CreateDWordField (ECBF, 0x0C, EDS4)
CreateDWordField (ECBF, 0x10, EPDT)
Name (GPSP, Buffer (0x24){})
CreateDWordField (GPSP, Zero, RETN)
CreateDWordField (GPSP, 0x04, VRV1)
CreateDWordField (GPSP, 0x08, TGPU)
CreateDWordField (GPSP, 0x0C, PDTS)
CreateDWordField (GPSP, 0x10, SFAN)
CreateDWordField (GPSP, 0x14, SKNT)
CreateDWordField (GPSP, 0x18, CPUE)
CreateDWordField (GPSP, 0x1C, TMP1)
CreateDWordField (GPSP, 0x20, TMP2)
Name (NLIM, Zero)
Name (PSCP, Zero)
Method (GPS, 4, Serialized)
{
Store ("------- GPS DSM --------", Debug)
If (LNotEqual (Arg1, 0x0100))
{
Return (0x80000002)
}
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Name (FMSK, Buffer (0x08)
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF // ........
})
Store (Buffer (0x08)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ........
}, Local0)
Divide (Zero, 0x08, Local2, Local1)
ShiftLeft (One, Local2, Local2)
Or (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
Divide (0x13, 0x08, Local2, Local1)
ShiftLeft (One, Local2, Local2)
Or (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
Divide (0x20, 0x08, Local2, Local1)
ShiftLeft (One, Local2, Local2)
Or (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
Divide (0x21, 0x08, Local2, Local1)
ShiftLeft (One, Local2, Local2)
Or (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
Divide (0x22, 0x08, Local2, Local1)
ShiftLeft (One, Local2, Local2)
Or (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
Divide (0x23, 0x08, Local2, Local1)
ShiftLeft (One, Local2, Local2)
Or (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
Divide (0x2A, 0x08, Local2, Local1)
ShiftLeft (One, Local2, Local2)
Or (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
Store (SizeOf (Local0), Local1)
While (LNotEqual (Local1, Zero))
{
Decrement (Local1)
Store (DerefOf (Index (FMSK, Local1)), Local2)
And (DerefOf (Index (Local0, Local1)), Local2, Index (Local0, Local1))
}
Return (Local0)
}
Case (0x13)
{
Store ("GPS fun 19", Debug)
CreateByteField (Arg3, Zero, TEMP)
If (LEqual (TEMP, Zero))
{
Return (0x04)
}
Store (\_SB.PCI0.LPCB.EC0.BMRD, 0x18)
Local0
If (LNotEqual (TEMP, Local0))
{
\_SB.PCI0.LPCB.EC0.BMWD
0x18
TEMP
Or (0x20, \_SB.PCI0.LPCB.EC0.BMRD, 0x13)
Local1
\_SB.PCI0.LPCB.EC0.BMWD
0x13
Local1
P8XH
Zero
\_SB.PCI0.LPCB.EC0.BMRD
0x13
}
Return (Arg3)
}
Case (0x20)
{
Store ("GPS fun 20", Debug)
Name (RET1, Zero)
CreateBitField (Arg3, 0x18, NRIT)
CreateBitField (Arg3, 0x19, NRIS)
If (NRIS)
{
If (NRIT)
{
Or (RET1, 0x01000000, RET1) /* \_SB_.PCI0.PEG0.PEGP.GPS_.RET1 */
}
Else
{
And (RET1, 0xFEFFFFFF, RET1) /* \_SB_.PCI0.PEG0.PEGP.GPS_.RET1 */
}
}
Or (RET1, 0x40000002, RET1) /* \_SB_.PCI0.PEG0.PEGP.GPS_.RET1 */
If (NLIM)
{
Or (RET1, One, RET1) /* \_SB_.PCI0.PEG0.PEGP.GPS_.RET1 */
}
Return (RET1) /* \_SB_.PCI0.PEG0.PEGP.GPS_.RET1 */
}
Case (0x21)
{
Return (\_PR.CPU0._PSS) /* External reference */
}
Case (0x22)
{
CreateByteField (Arg3, Zero, PCAP)
Store (PCAP, \_PR.CPU0._PPC) /* External reference */
Notify (\_PR.CPU0, 0x80) // Status Change
Store (PCAP, PSAP) /* \_SB_.PCI0.PEG0.PEGP.PSAP */
Return (PCAP) /* \_SB_.PCI0.PEG0.PEGP.GPS_.PCAP */
}
Case (0x23)
{
Return (PSAP) /* \_SB_.PCI0.PEG0.PEGP.PSAP */
}
Case (0x25)
{
Store ("GPS fun 25", Debug)
Return (\_PR.CPU0._TSS) /* External reference */
}
Case (0x26)
{
Store ("GPS fun 26", Debug)
CreateDWordField (Arg3, Zero, TCAP)
Store (TCAP, \_PR.CPU0._PTC) /* External reference */
Notify (\_PR.CPU0, 0x80) // Status Change
Return (TCAP) /* \_SB_.PCI0.PEG0.PEGP.GPS_.TCAP */
}
Case (0x2A)
{
Store ("GPS fun 2a", Debug)
CreateByteField (Arg3, Zero, PSH0)
CreateByteField (Arg3, One, PSH1)
CreateBitField (Arg3, 0x08, GPUT)
CreateBitField (Arg3, 0x09, CPUT)
CreateBitField (Arg3, 0x0A, FANS)
CreateBitField (Arg3, 0x0B, SKIN)
CreateBitField (Arg3, 0x0C, ENGR)
CreateBitField (Arg3, 0x0D, SEN1)
CreateBitField (Arg3, 0x0E, SEN2)
Switch (PSH0)
{
Case (Zero)
{
If (CPUT)
{
Store (0x0200, RETN) /* \_SB_.PCI0.PEG0.PEGP.RETN */
Or (RETN, PSH0, RETN) /* \_SB_.PCI0.PEG0.PEGP.RETN */
Store (\_SB.PCI0.LPCB.H_EC.GTVR, PDTS) /* \_SB_.PCI0.PEG0.PEGP.PDTS */
}
Return (GPSP) /* \_SB_.PCI0.PEG0.PEGP.GPSP */
}
Case (One)
{
Store (0x0300, RETN) /* \_SB_.PCI0.PEG0.PEGP.RETN */
Or (RETN, PSH0, RETN) /* \_SB_.PCI0.PEG0.PEGP.RETN */
Store (0x03E8, PDTS) /* \_SB_.PCI0.PEG0.PEGP.PDTS */
Return (GPSP) /* \_SB_.PCI0.PEG0.PEGP.GPSP */
}
Case (0x02)
{
Store (0x0102, RETN) /* \_SB_.PCI0.PEG0.PEGP.RETN */
Store (Zero, VRV1) /* \_SB_.PCI0.PEG0.PEGP.VRV1 */
Store (Zero, TGPU) /* \_SB_.PCI0.PEG0.PEGP.TGPU */
Store (Zero, PDTS) /* \_SB_.PCI0.PEG0.PEGP.PDTS */
Store (Zero, SFAN) /* \_SB_.PCI0.PEG0.PEGP.SFAN */
Store (Zero, CPUE) /* \_SB_.PCI0.PEG0.PEGP.CPUE */
Store (Zero, SKNT) /* \_SB_.PCI0.PEG0.PEGP.SKNT */
Store (Zero, TMP1) /* \_SB_.PCI0.PEG0.PEGP.TMP1 */
Store (Zero, TMP2) /* \_SB_.PCI0.PEG0.PEGP.TMP2 */
Return (GPSP) /* \_SB_.PCI0.PEG0.PEGP.GPSP */
}
}
}
}
Return (0x80000002)
}
}
Scope (\_SB.PCI0.PEG0)
{
}
Scope (\_SB.PCI0)
{
Device (WMI1)
{
Name (_HID, "PNP0C14" /* Windows Management Instrumentation Device */) // _HID: Hardware ID
Name (_UID, "OPT1") // _UID: Unique ID
Name (_WDG, Buffer (0x14)
{
/* 0000 */ 0x3C, 0x5C, 0xCB, 0xF6, 0xAE, 0x9C, 0xBD, 0x4E, // <\.....N
/* 0008 */ 0xB5, 0x77, 0x93, 0x1E, 0xA3, 0x2A, 0x2C, 0xC0, // .w...*,.
/* 0010 */ 0x4D, 0x58, 0x01, 0x02 // MX..
})
Method (WMMX, 3, NotSerialized)
{
CreateDWordField (Arg2, Zero, FUNC)
If (LEqual (FUNC, 0x534F525F))
{
If (LGreaterEqual (SizeOf (Arg2), 0x08))
{
CreateDWordField (Arg2, 0x04, ARGS)
CreateDWordField (Arg2, 0x08, XARG)
Return (\_SB.PCI0.PEG0.PEGP._ROM (ARGS, XARG))
}
}
If (LEqual (FUNC, 0x4D53445F))
{
If (LGreaterEqual (SizeOf (Arg2), 0x1C))
{
CreateField (Arg2, Zero, 0x80, MUID)
CreateDWordField (Arg2, 0x10, REVI)
CreateDWordField (Arg2, 0x14, SFNC)
CreateField (Arg2, 0xE0, 0x20, XRG0)
If (CondRefOf (\_SB.PCI0.GFX0._DSM))
{
Return (\_SB.PCI0.GFX0._DSM) /* External reference */
MUID
REVI
SFNC
XRG0
}
}
}
Return (Zero)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment