张秋桥:
又发现W520SSDT的一个问题,_CST竟然不返回值,修改后温度降了10度左右。
[阅读: 338] 2012-05-17 19:04:50
在Win下面就发现C-State不起作用,一直以为联想关闭了这功能。
// Method (_CST, 0, Serialized)
// {
// If (LAnd (LNot (CSTF), And (CFGD, 0x00400000)))
// {
// Store (0x50, Index (C3LI, 0x02))
// Store (0x50, Index (C3LM, 0x02))
// Store (0x6D, Index (C7SM, 0x02))
// Store (0x6D, Index (C7LM, 0x02))
// Store (0x68, Index (C6LM, 0x02))
// Store (0x6D, Index (C7LI, 0x02))
// Store (0x68, Index (C6LI, 0x02))
// Store (Ones, CSTF)
// }
// If (LAnd (And (CFGD, 0x1000), And (PDC0, 0x0200)))
// {
// If (LNot (\_SB.PCI0.LPC.EC.AC._PSR))
// {
// If (LAnd (LAnd (And (CFGD, 0x00010000), LNot (\C7NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// If (And (CFGD, 0x08))
// {
// Store (C1LM, Index (C3ST, One))
// Store (C3LM, Index (C3ST, 0x02))
// Store (C7SM, Index (C3ST, 0x03))
// Return (C3ST)
// }
// Else
// {
// Store (C1LM, Index (C2ST, One))
// Store (C7SM, Index (C2ST, 0x02))
// Return (C2ST)
// }
// }
// If (LAnd (LAnd (And (CFGD, 0x20), LNot (\C7NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// If (And (CFGD, 0x08))
// {
// Store (C1LM, Index (C3ST, One))
// Store (C3LM, Index (C3ST, 0x02))
// Store (C7LM, Index (C3ST, 0x03))
// Return (C3ST)
// }
// Else
// {
// Store (C1LM, Index (C2ST, One))
// Store (C7LM, Index (C2ST, 0x02))
// Return (C2ST)
// }
// }
// If (LAnd (LAnd (And (CFGD, 0x10), LNot (\C6NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// If (And (CFGD, 0x08))
// {
// Store (C1LM, Index (C3ST, One))
// Store (C3LM, Index (C3ST, 0x02))
// Store (C6LM, Index (C3ST, 0x03))
// Return (C3ST)
// }
// Else
// {
// Store (C1LM, Index (C2ST, One))
// Store (C6LM, Index (C2ST, 0x02))
// Return (C2ST)
// }
// }
// If (LAnd (And (CFGD, 0x08), LNot (\C3NA)))
// {
// Store (C1LM, Index (C2ST, One))
// Store (C3LM, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// Store (C1LM, Index (C1ST, One))
// Return (C1ST)
// }
// }
// If (LAnd (LAnd (And (CFGD, 0x10), LNot (\C6NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// Store (C1LM, Index (C2ST, One))
// Store (C6LM, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// If (LAnd (And (CFGD, 0x08), LNot (\C3NA)))
// {
// Store (C1LM, Index (C2ST, One))
// Store (C3LM, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// Store (C1LM, Index (C1ST, One))
// Return (C1ST)
// }
// }
// }
// If (LAnd (And (CFGD, 0x1000), And (PDC0, 0x0100)))
// {
// If (LNot (\_SB.PCI0.LPC.EC.AC._PSR))
// {
// If (LAnd (LAnd (And (CFGD, 0x20), LNot (\C7NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// If (And (CFGD, 0x08))
// {
// Store (C1LM, Index (C3ST, One))
// Store (C3LI, Index (C3ST, 0x02))
// Store (C7LI, Index (C3ST, 0x03))
// Return (C3ST)
// }
// Else
// {
// Store (C1LM, Index (C2ST, One))
// Store (C7LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// }
// If (LAnd (LAnd (And (CFGD, 0x10), LNot (\C6NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// If (And (CFGD, 0x08))
// {
// Store (C1LM, Index (C3ST, One))
// Store (C3LI, Index (C3ST, 0x02))
// Store (C6LI, Index (C3ST, 0x03))
// Return (C3ST)
// }
// Else
// {
// Store (C1LM, Index (C2ST, One))
// Store (C6LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// }
// If (LAnd (And (CFGD, 0x08), LNot (\C3NA)))
// {
// Store (C1LM, Index (C2ST, One))
// Store (C3LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// Store (C1LM, Index (C1ST, One))
// Return (C1ST)
// }
// }
// If (LAnd (LAnd (And (CFGD, 0x10), LNot (\C6NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// Store (C1LM, Index (C2ST, One))
// Store (C6LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// If (LAnd (And (CFGD, 0x08), LNot (\C3NA)))
// {
// Store (C1LM, Index (C2ST, One))
// Store (C3LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// Store (C1LM, Index (C1ST, One))
// Return (C1ST)
// }
// }
// }
// If (LNot (\_SB.PCI0.LPC.EC.AC._PSR))
// {
// If (LAnd (LAnd (And (CFGD, 0x20), LNot (\C7NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// If (And (CFGD, 0x08))
// {
// Store (C1LH, Index (C3ST, One))
// Store (C3LI, Index (C3ST, 0x02))
// Store (C7LI, Index (C3ST, 0x03))
// Return (C3ST)
// }
// Else
// {
// Store (C1LH, Index (C2ST, One))
// Store (C7LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// }
// If (LAnd (LAnd (And (CFGD, 0x10), LNot (\C6NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// If (And (CFGD, 0x08))
// {
// Store (C1LH, Index (C3ST, One))
// Store (C3LI, Index (C3ST, 0x02))
// Store (C6LI, Index (C3ST, 0x03))
// Return (C3ST)
// }
// Else
// {
// Store (C1LH, Index (C2ST, One))
// Store (C6LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// }
// If (LAnd (And (CFGD, 0x08), LNot (\C3NA)))
// {
// Store (C1LH, Index (C2ST, One))
// Store (C3LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// Store (C1LH, Index (C1ST, One))
// Return (C1ST)
// }
// }
// If (LAnd (LAnd (And (CFGD, 0x10), LNot (\C6NA)), LNot (\_SB.PCI0.LPC.EC.HKEY.CKC4(Zero))))
// {
// Store (C1LH, Index (C2ST, One))
// Store (C6LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// If (LAnd (And (CFGD, 0x08), LNot (\C3NA)))
// {
// Store (C1LH, Index (C2ST, One))
// Store (C3LI, Index (C2ST, 0x02))
// Return (C2ST)
// }
// Else
// {
// Store (C1LH, Index (C1ST, One))
// Return (C1ST)
// }
// }
// }
// }
Method (_CST, 0, Serialized)
{
If (LAnd (LNot (CSTF), And (CFGD, 0x00400000)))
{
Store (0x50, Index (C3LI, 0x02))
// Store (0x50, Index (C3LM, 0x02))
// Store (0x6D, Index (C7SM, 0x02))
// Store (0x6D, Index (C7LM, 0x02))
// Store (0x68, Index (C6LM, 0x02))
// Store (0x6D, Index (C7LI, 0x02))
Store (0x68, Index (C6LI, 0x02))
Store (Ones, CSTF)
}
Store (C1LM, Index (C3ST, One))
Store (C3LI, Index (C3ST, 0x02))
Store (C6LI, Index (C3ST, 0x03))
Return (C3ST)
}