At first, my laptop was also waking up immediately after sleep. Seems our motherboards are very similar. I solved the problem by cleaning up the DSDT.
I'll give you a series of DSDT modifications that you'll need to apply. If they work, I'll tell you in a subsequent post what each modification does and what it's for.
1. Change your RTC0 device from this:
CODE
Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length
)
})
}
to this:
CODE
Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length
)
IRQNoFlags ()
{4}
})
}
2. Change your HPET device from this:
CODE
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (CRS, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadOnly,
...
to this:
CODE
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (CRS, ResourceTemplate ()
{
IRQNoFlags ()
{2}
IRQNoFlags ()
{8}
IRQNoFlags ()
{11}
IRQNoFlags ()
{15}
Memory32Fixed (ReadOnly,
...
3. Change your TMR device from this:
CODE
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
}
to this:
CODE
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
})
}
4. Change your SBRG device from this:
CODE
Device (SBRG)
{
Name (_ADR, 0x001F0000)
Device (IELK)
...
to this:
CODE
Device (SBRG)
{
Name (_ADR, 0x001F0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x16, 0x29, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Device (IELK)
...
5. Completely replace your SATA device with this:
CODE
Device (SATA)
{
Name (_ADR, 0x001F0002)
Device (PRT0)
{
Name (_ADR, 0x00)
}
Device (PRT1)
{
Name (_ADR, 0x01)
}
Device (PRT4)
{
Name (_ADR, 0x04)
}
Device (PRT5)
{
Name (_ADR, 0x05)
}
}
6. Completely remove your SAT1 device. There is only
one SATA controller on ICH9M chipsets. The entry for a second SATA controller in the DSDT is bogus.
7. And finally, for your sound device, replace this:
CODE
Device (HDAC)
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x0D, 0x04))
}
}
with this:
CODE
Device (AZAL)
{
Name (_ADR, 0x001B0000)
}
and make sure that you use Slice's latest version of VoodooHDA (in the russian thread). Also make sure you replace the name HDAC with AZAL.
Now for this last one, I can't guarantee you that it will make your sound work after sleep, since we don't have the same sound device (mine is an IDT), but it's worth a try.
I know this all sounds like a lot, but please try this and tell me if it works.