Method (_WAK, 1, NotSerialized) // _WAK: Wake
{
\RMDT.PUSH ("Enter _WAK")
If (LOr (LLess (Arg0, One), LGreater (Arg0, 0x05)))
{
Store (0x03, Arg0)
}
ADBG ("_WAK")
If (LOr (LEqual (Arg0, Zero), LGreaterEqual (Arg0, 0x05)))
{
Return (WAKI)
}
Store (Zero, SPS)
Store (Zero, \_SB.PCI0.LPC.EC.HCMU)
\_SB.PCI0.LPC.EC.EVNT (One)
\_SB.PCI0.LPC.EC.HKEY.MHKE (One)
\_SB.PCI0.LPC.EC.FNST ()
UCMS (0x0D)
Store (Zero, LIDB)
Store (\_SB.PCI0.LPC.EC.CMMD, PMMD)
If (LGreaterEqual (PMMD, 0x07))
{
Store (Zero, PMMD)
}
Store (\_SB.PCI0.LPC.EC.CMMD, LVMD)
If (LOr (LEqual (LVMD, Zero), LGreaterEqual (LVMD, 0x07)))
{
Store (One, LVMD)
}
ElseIf (LOr (LEqual (LVMD, 0x02), LEqual (LVMD, 0x03)))
{
Store (0x02, LVMD)
}
Else
{
Store (0x03, LVMD)
}
If (LEqual (Arg0, One))
{
Store (\_SB.PCI0.LPC.EC.HFNI, FNID)
}
If (LEqual (Arg0, 0x03))
{
NVSS (Zero)
\_SB.PCI0.LPC.EC.LED (Zero, 0x80)
\_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
If (OSC4)
{
PNTF (0x81)
}
If (LNotEqual (ACST, \_SB.PCI0.LPC.EC.AC._PSR ()))
{
\_SB.PCI0.LPC.EC.ATMC ()
}
If (SCRM)
{
Store (0x07, \_SB.PCI0.LPC.EC.HFSP)
}
Store (Zero, IOEN)
Store (Zero, IOST)
If (LEqual (ISWK, One))
{
If (\_SB.PCI0.LPC.EC.HKEY.DHKC)
{
\_SB.PCI0.LPC.EC.HKEY.MHKQ (0x6070)
}
}
If (VIGD)
{
Store (\_SB.LID._LID (), \_SB.PCI0.IGPU.CLID)
If (WVIS)
{
VBTD ()
}
}
ElseIf (WVIS)
{
Store (\_SB.LID._LID (), \_SB.PCI0.IGPU.CLID)
VBTD ()
}
VCMS (One, \_SB.LID._LID ())
AWON (Zero)
If (CMPR)
{
Notify (\_SB.SLPB, 0x02)
Store (Zero, CMPR)
}
}
If (LEqual (Arg0, 0x04))
{
NVSS (Zero)
Store (Zero, \_SB.PCI0.LPC.EC.HSPA)
Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
If (OSC4)
{
PNTF (0x81)
}
\_SB.PCI0.LPC.EC.ATMC ()
If (SCRM)
{
Store (0x07, \_SB.PCI0.LPC.EC.HFSP)
}
If (LNot (NBCF))
{
If (VIGD)
{
\_SB.PCI0.LPC.EC.BRNS ()
}
Else
{
VBRC (BRLV)
}
}
Store (Zero, IOEN)
Store (Zero, IOST)
If (LEqual (ISWK, 0x02))
{
If (\_SB.PCI0.LPC.EC.HKEY.DHKC)
{
\_SB.PCI0.LPC.EC.HKEY.MHKQ (0x6080)
}
}
}
\_SB.PCI0.LPC.EC.BATW (Arg0)
\_SB.PCI0.LPC.EC.HKEY.WGWK (Arg0)
Notify (\_TZ.THM0, 0x80)
VSLD (\_SB.LID._LID ())
If (VIGD)
{
Store (\_SB.LID._LID (), \_SB.PCI0.IGPU.CLID)
}
ElseIf (WVIS)
{
Store (\_SB.LID._LID (), \_SB.PCI0.IGPU.CLID)
}
If (LLess (Arg0, 0x04))
{
If (LOr (And (RRBF, 0x02), And (B1B2 (\_SB.PCI0.LPC.EC.AC10, \_SB.PCI0.LPC.EC.AC11), 0x02)))
{
ShiftLeft (Arg0, 0x08, Local0)
Store (Or (0x2013, Local0), Local0)
\_SB.PCI0.LPC.EC.HKEY.MHKQ (Local0)
}
}
If (LEqual (Arg0, 0x04))
{
Store (Zero, Local0)
Store (CSUM (Zero), Local1)
If (LNotEqual (Local1, CHKC))
{
Store (One, Local0)
Store (Local1, CHKC)
}
Store (CSUM (One), Local1)
If (LNotEqual (Local1, CHKE))
{
Store (One, Local0)
Store (Local1, CHKE)
}
If (Local0)
{
Notify (_SB, Zero)
}
}
If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
{
ADBG ("_WAK0")
Store (Zero, \_SB.PCI0.LPC.EC.HKEY.ANGN)
If (LOr (LEqual (\_SB.LID._LID (), One), LEqual (\_SB.PCI0.LPC.EC.AC._PSR (), One)))
{
\_SB.PCI0.LPC.EC.HKEY.DYTC (0x000F4001)
}
Else
{
\_SB.PCI0.LPC.EC.HKEY.DYTC (0x000F0001)
}
ADBG ("_WAK1")
}
\RMDT.PUSH ("Leave _WAK")
Store (Zero, RRBF)
Return (WAKI)
}