Jump to content

DSDT help for Lenovo G480 EHCI Wakeup


sarim khan
 Share

3 posts in this topic

Recommended Posts

System info:

Lenovo G480 (20156)

BIOS VERSION: 62CN41WW

CPU: i3-3110M

 

So, using a patched AppleIntelCpuPowerManagement kext. When i try to sleep it, it sleeps , but immediately wakes up.

 

see dmesg log http://pastebin.com/ENyAwRuq , these lines got my attention,

Wake reason = GLAN EHC2 EHC1

The USB device HubDevice (Port 1 of Hub at 0x1a000000) may have caused a wake by issuing a remote wakeup (2)
The USB device HubDevice (Port 1 of Hub at 0x1d000000) may have caused a wake by issuing a remote wakeup (2)
[0xffffff80075cce00](0)/(5) Device not responding

 

So after hours of googling i learned that these EHC2 EHC1 are usb hubs and not correctly recognized in osx so they are waking the system. i cheched the ioreg, EHC2 is the hub and webcam is under it. ECH1 is hub and sdcard reader is under it.

 

So i learned that i need to edit DSDT to make these device not send Wake call. Need help regarding that.

So far tried,

removing _PRW method from both EHC2 EHC1. No help :(

 

patched: added DTGP, EHC2 and EHC1 from this https://raw.github.c...2_DSDTPatch.txt

didn't work, got KP. I think i need to add this _DSM method but need to match device ID's with my system's id. But no idea how to do this, no knowledge about this :(

 

Any idea, hint would very helpful.

Is there any option/setting/tweak/hack in OSX that can let me select which which devices to listen to for Wake call ? i can just remove GLAN EHC2 EHC1 from there. No need to listen to these device's wake call.

 

Attached: my DSDT , removed _PRW from both EHC2 EHC1.

dsdt-no-prw.dsl.zip

Link to comment
Share on other sites

Hi, I had a similar problem with an ASMedia USB3 chipset. It causes an automatic wake after sleep.

The required DSDT edit was setting the "AAPL,clock-id" property.

 

You might want to try creating a _DSM method for both EHC1 and EHC2 which just contains the "AAPL,clock-id" property.

I do not know what its value actually stands for, though.

Link to comment
Share on other sites

  • 3 weeks later...

Hi sarim khan,

So, using a patched AppleIntelCpuPowerManagement kext. When i try to sleep it, it sleeps , but immediately wakes up.

 

see dmesg log http://pastebin.com/ENyAwRuq , these lines got my attention,

Wake reason = GLAN EHC2 EHC1

 

So i learned that i need to edit DSDT to make these device not send Wake call. Need help regarding that.

So far tried,

removing _PRW method from both EHC2 EHC1. No help :(

 

patched: added DTGP, EHC2 and EHC1 from this https://raw.github.c...2_DSDTPatch.txt

didn't work, got KP. I think i need to add this _DSM method but need to match device ID's with my system's id. But no idea how to do this, no knowledge about this :(

 

Any idea, hint would very helpful.

Is there any option/setting/tweak/hack in OSX that can let me select which which devices to listen to for Wake call ? i can just remove GLAN EHC2 EHC1 from there. No need to listen to these device's wake call.

 

Attached: my DSDT , removed _PRW from both EHC2 EHC1.

 

Wake reason: GLAN and EHC2 and EHC1, you modified only EHC1 and EHC2 and forgot about GLAN.

Your GLAN:

Device (GLAN)
{
Name (_ADR, 0x00190000)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x0D, 0x04))
}
}

_PRW above is related to Method (_L0D, 0, NotSerialized) by 0x0D.

My GLAN:

/********** Original device GLAN ***********
Device (GLAN)
{
Name (_ADR, 0x00190000)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x0D, 0x04))
}
}
*************** Modified GLAN *************/
Device (GLAN)
{
Name (_ADR, 0x00190000)
Name (_PRW, Package (0x02)
{
0x09, // changed from 0x0D
0x04
})
}
/*************** End of mod ***************/

My EHC1:

Device (EHC1)
{
Name (_ADR, 0x001D0000)

// . . . . rest of code here

/********** Original _PRW ***********
Method (_PRW, 0, NotSerialized)
{
If (USBW)
{
Return (GPRW (0x0D, 0x03)) // <-- this cause wake,
}
Else
{
Return (GPRW (0x0D, 0x00)) // <-- ...this not
}
}
*************** Modified _PRW *************/
Name (_PRW, Package (0x02)
{
0x0D,
0x00 // value >2 cause wake, you need to experiment or live 0x00
})
/*************** End of mod ***************/

// . . . . rest of code here

}

Link to comment
Share on other sites

 Share

×
×
  • Create New...