- 积分
- 79
- 最后登录
- 2022-12-8
- 精华
- 0
- 阅读权限
- 20
- 主题
- 7
- UID
- 2951741
- 帖子
- 122
- PB币
- 456
- 威望
- 5
- 贡献
- 0
- 技术
- 10
- 活跃
- 55
- UID
- 2951741
- 帖子
- 122
- PB币
- 456
- 贡献
- 0
- 技术
- 10
- 活跃
- 55
|
412F
发表于 2012-12-22 16:44:39
IP属地云南
楼主,帮忙看看,貌似我的dsdt中全部是“Store (^^SBRG.EC0.BSTS (), Local0)”这种类型的,函数嵌套函数,这种怎么改?
Scope (_SB.PCI0)
{
Device (BAT0)
{
Name (_HID, EisaId ("PNP0C0A"))
Name (_UID, Zero)
Name (_PCL, Package (0x01)
{
PCI0
})
Method (_STA, 0, NotSerialized)
{
If (^^SBRG.EC0.BATP (Zero))
{
Return (0x1F)
}
Else
{
Return (0x0F)
}
}
Name (LOW2, 0x012C)
Name (DVOT, 0x0E)
Name (PUNT, One)
Name (LFCC, 0x1770)
Name (NBIF, Package (0x0D)
{
Zero,
Ones,
Ones,
One,
Ones,
Ones,
Ones,
Ones,
Ones,
"",
"",
"",
""
})
Name (PBIF, Package (0x0D)
{
One,
0x1770,
0x1770,
One,
0x39D0,
0x0258,
0x012C,
0x3C,
0x3C,
"M3N",
" ",
"LIon",
"ASUSTek"
})
Name (PBST, Package (0x04)
{
Zero,
Ones,
Ones,
Ones
})
Method (FBIF, 5, NotSerialized)
{
Store (Arg0, PUNT)
Store (Arg1, Local1)
Store (Arg2, Local2)
If (LEqual (PUNT, Zero))
{
Multiply (Local1, 0x0A, Local1)
Multiply (Local2, 0x0A, Local2)
}
Store (Arg0, Index (PBIF, Zero))
Store (Local1, Index (PBIF, One))
Store (Local2, Index (PBIF, 0x02))
Store (Local2, LFCC)
Store (Arg3, Index (PBIF, 0x03))
Store (Arg4, Index (PBIF, 0x04))
Divide (Local1, 0x0A, Local3, Local5)
Store (Local5, Index (PBIF, 0x05))
Divide (Local1, 0x64, Local3, Local6)
Store (Local6, Index (PBIF, 0x06))
Store (Local6, LOW2)
Divide (Local1, 0x64, Local3, Local7)
Store (Local7, Index (PBIF, 0x07))
Store (Local7, Index (PBIF, 0x08))
}
Method (CBIF, 0, NotSerialized)
{
If (PUNT)
{
Store (DerefOf (Index (PBIF, 0x04)), Local0)
Add (Local0, 0x01F4, Local0)
Divide (Local0, 0x03E8, Local1, DVOT)
Store (Zero, Index (PBIF, Zero))
Multiply (DerefOf (Index (PBIF, One)), DVOT, Index (PBIF, One
))
Multiply (DerefOf (Index (PBIF, 0x02)), DVOT, Index (PBIF, 0x02
))
Multiply (DerefOf (Index (PBIF, 0x05)), DVOT, Index (PBIF, 0x05
))
Multiply (DerefOf (Index (PBIF, 0x06)), DVOT, Index (PBIF, 0x06
))
Multiply (DerefOf (Index (PBIF, 0x07)), DVOT, Index (PBIF, 0x07
))
Multiply (DerefOf (Index (PBIF, 0x08)), DVOT, Index (PBIF, 0x08
))
}
}
Method (_BIF, 0, NotSerialized)
{
If (LNot (^^SBRG.EC0.BATP (Zero)))
{
Return (NBIF)
}
If (LEqual (^^SBRG.EC0.GBTT (Zero), 0xFF))
{
Return (NBIF)
}
BATO ()
BATS (Zero)
Store (^^SBRG.EC0.BIF9 (), Index (PBIF, 0x09))
Store (ONAM, Index (PBIF, 0x0C))
Store (^^SBRG.EC0.BIF0 (), Local0)
Store (^^SBRG.EC0.BIF1 (), Local1)
Store (^^SBRG.EC0.BIF2 (), Local2)
Store (^^SBRG.EC0.BIF3 (), Local3)
Store (^^SBRG.EC0.BIF4 (), Local4)
If (LNotEqual (Local0, Ones))
{
If (LNotEqual (Local1, Ones))
{
If (LNotEqual (Local2, Ones))
{
If (LNotEqual (Local3, Ones))
{
If (LNotEqual (Local4, Ones))
{
FBIF (Local0, Local1, Local2, Local3, Local4)
CBIF ()
}
}
}
}
}
If (LEqual (PUNT, Zero))
{
Multiply (Local2, 0x0A, Local2)
}
Store (Local2, LFCC)
BATR ()
Return (PBIF)
}
Method (FBST, 4, NotSerialized)
{
And (Arg1, 0xFFFF, Local1)
Store (Zero, Local0)
If (^^SBRG.EC0.ACAP ())
{
Store (One, Local0)
}
If (Local0)
{
If (CHGS (Zero))
{
Store (0x02, Local0)
}
Else
{
Store (Zero, Local0)
}
}
Else
{
Store (One, Local0)
}
If (BLLO)
{
ShiftLeft (One, 0x02, Local2)
Or (Local0, Local2, Local0)
}
If (LLessEqual (^^SBRG.EC0.RRAM (0x03B0), One))
{
ShiftLeft (One, 0x02, Local2)
Or (Local0, Local2, Local0)
}
If (LGreaterEqual (Local1, 0x8000))
{
Subtract (0xFFFF, Local1, Local1)
}
Store (Arg2, Local2)
If (LEqual (PUNT, Zero))
{
Multiply (Local1, DVOT, Local1)
Multiply (Local2, 0x0A, Local2)
}
And (Local0, 0x02, Local3)
If (LNot (Local3))
{
Subtract (LFCC, Local2, Local3)
Divide (LFCC, 0xC8, Local4, Local5)
If (LLess (Local3, Local5))
{
Store (LFCC, Local2)
}
}
Else
{
Divide (LFCC, 0xC8, Local4, Local5)
Subtract (LFCC, Local5, Local4)
If (LGreater (Local2, Local4))
{
Store (Local4, Local2)
}
}
If (LNot (^^SBRG.EC0.ACAP ()))
{
Divide (Local2, MBLF, Local3, Local4)
If (LLess (Local1, Local4))
{
Store (Local4, Local1)
}
}
Store (Local0, Index (PBST, Zero))
Store (Local1, Index (PBST, One))
Store (Local2, Index (PBST, 0x02))
Store (Arg3, Index (PBST, 0x03))
}
Method (CBST, 0, NotSerialized)
{
If (PUNT)
{
Multiply (DerefOf (Index (PBST, One)), DVOT, Index (PBST, One
))
Multiply (DerefOf (Index (PBST, 0x02)), DVOT, Index (PBST, 0x02
))
}
}
Method (_BST, 0, NotSerialized)
{
Store (Zero, Index (PBST, Zero))
Store (Ones, Index (PBST, One))
Store (Ones, Index (PBST, 0x02))
Store (Ones, Index (PBST, 0x03))
If (LNot (^^SBRG.EC0.BATP (Zero)))
{
Return (PBST)
}
If (LEqual (^^SBRG.EC0.GBTT (Zero), 0xFF))
{
Return (PBST)
}
If (MES4)
{
Decrement (MES4)
Return (PBST)
}
BATO ()
BATS (Zero)
Store (^^SBRG.EC0.BSTS (), Local0)
Store (^^SBRG.EC0.BCRT (), Local1)
Store (^^SBRG.EC0.BRCP (), Local2)
Store (^^SBRG.EC0.BVOT (), Local3)
If (LNotEqual (Local0, Ones))
{
If (LNotEqual (Local1, Ones))
{
If (LNotEqual (Local2, Ones))
{
If (LNotEqual (Local3, Ones))
{
FBST (Local0, Local1, Local2, Local3)
CBST ()
}
}
}
}
BATR ()
Return (PBST)
}
}
}
附上完整的dsdt,楼主帮我看看
dsdt.dsl.zip
(135.94 KB, 下载次数: 0)
|
|