Method (SGOF, 0, Serialized)
{
If (LEqual (CCHK (Zero), Zero))
{
Return (Zero)
}
\RMDT.P1("Executing SGOF")
Store (Zero, ONOF)
//Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
//And (Local0, 0xCF, Local0)
//\_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
//\_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x95)
//\_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
//\_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)
Store (LCTL, ELCT)
Store (SVID, HVID)
Store (SDID, HDID)
Store (EMLW, DMLW)
\RMDT.P1("Executing SPP0")
SPP0 ()
Store (One, LNKD)
Store (Zero, TCNT)
While (LLess (TCNT, LDLY))
{
If (LEqual (LNKS, Zero))
{
\RMDT.P1("SGOF Break")
Break
}
Sleep (0x10)
Add (TCNT, 0x10, TCNT)
}
While (LNotEqual (LNKS, Zero))
{
Sleep (One)
}
Store (0x02, AFES)
If (LGreaterEqual (And (PNHM, 0x0F), 0x03))
{
If (LNotEqual (P0UB, Zero))
{
Store (GMXB (), MBDL)
PDUB (MBDL)
}
}
If (LGreaterEqual (PCSL, 0x04))
{
If (LEqual (SC7A, One))
{
C7OK (One)
}
}
\RMDT.P1("Executing SGPO 1")
SGPO (HLRS, One)
\RMDT.P1("Executing SGPO 2")
SGPO (PWEN, Zero)
Sleep (0x64)
Return (Zero)
}
Method (SPP0, 0, NotSerialized)
{
Store (Zero, INDX)
While (One)
{
Store (DerefOf (Index (DAT0, INDX)), WLSB)
Increment (INDX)
Store (DerefOf (Index (DAT0, INDX)), WMSB)
Increment (INDX)
Store (Or (ShiftLeft (WMSB, 0x08), WLSB), POFF)
Store (DerefOf (Index (DAT0, INDX)), PLEN)
Increment (INDX)
If (LEqual (POFF, 0xFFFF))
{
Break
}
While (LGreater (PLEN, Zero))
{
Store (RBP0 (POFF), Index (DAT0, INDX))
Increment (INDX)
Increment (POFF)
Decrement (PLEN)
}
}
}
...
so it seem it execute the SPP0 and never come back from it.
this is the SPP0 code, i can't see anything offending on it
Method (SPP0, 0, NotSerialized)
{
Store (Zero, INDX)
While (One)
{
Store (DerefOf (Index (DAT0, INDX)), WLSB)
Increment (INDX)
Store (DerefOf (Index (DAT0, INDX)), WMSB)
Increment (INDX)
Store (Or (ShiftLeft (WMSB, 0x08), WLSB), POFF)
Store (DerefOf (Index (DAT0, INDX)), PLEN)
Increment (INDX)
If (LEqual (POFF, 0xFFFF))
{
\RMDT.P2("SPP0 POFF", POFF)
\RMDT.P1("SPP0 break")
Break
}
While (LGreater (PLEN, Zero))
{
Store (RBP0 (POFF), Index (DAT0, INDX))
Increment (INDX)
Increment (POFF)
Decrement (PLEN)
}
}
}
modified the SPP0 like this
Code:Method (SPP0, 0, NotSerialized) { Store (Zero, INDX) While (One) { Store (DerefOf (Index (DAT0, INDX)), WLSB) Increment (INDX) Store (DerefOf (Index (DAT0, INDX)), WMSB) Increment (INDX) Store (Or (ShiftLeft (WMSB, 0x08), WLSB), POFF) Store (DerefOf (Index (DAT0, INDX)), PLEN) Increment (INDX) If (LEqual (POFF, 0xFFFF)) { \RMDT.P2("SPP0 POFF", POFF) \RMDT.P1("SPP0 break") Break } While (LGreater (PLEN, Zero)) { Store (RBP0 (POFF), Index (DAT0, INDX)) Increment (INDX) Increment (POFF) Decrement (PLEN) } } }
so i get this in the log
Nov 5 23:53:37 localhost kernel[0]: ACPIDebug: "Executing SPP0"
Nov 5 23:53:37 localhost kernel[0]: ACPIDebug: { "SPP0 POFF", 0xffff, }
Nov 5 23:53:37 localhost kernel[0]: ACPIDebug: "SPP0 break"
so it reach the break, i'm not a programmer, but such break interrupt the execution right?
Method (SPP0, 0, NotSerialized)
{
\rmdt.p1("SPP0 enter")
Store (Zero, INDX)
While (One)
{
Store (DerefOf (Index (DAT0, INDX)), WLSB)
Increment (INDX)
Store (DerefOf (Index (DAT0, INDX)), WMSB)
Increment (INDX)
Store (Or (ShiftLeft (WMSB, 0x08), WLSB), POFF)
Store (DerefOf (Index (DAT0, INDX)), PLEN)
Increment (INDX)
If (LEqual (POFF, 0xFFFF))
{
\RMDT.P2("SPP0 POFF", POFF)
\RMDT.P1("SPP0 break")
Break
}
\rmdt.p1("SPP0 before 2nd While")
While (LGreater (PLEN, Zero))
{
Store (RBP0 (POFF), Index (DAT0, INDX))
Increment (INDX)
Increment (POFF)
Decrement (PLEN)
}
}
\rmdt.p1("SPP0 exit")
}
Hello
i traded to disabling but i had on error whane i applied remove _dsm methods
Compiler aborting due to parser-detected syntax error(s)
DSDT.dsl 19202:
Error 6126 - syntax error, unexpected $end and premature End-Of-File
ASL Input: DSDT.dsl - 19202 lines, 524434 bytes, 7639 keywords
Compilation complete. 1 Errors, 0 Warnings, 0 Remarks, 0 Optimizations
Salims-iMacDSDT salim$
Tankes