Contribute
Register

DSDT patching issues with Lenovo T410

Status
Not open for further replies.
I chose to patch the DSDT to load AppleLPC for me by reporting the Device ID and compatibility as a similar device that is already in the kext.

My actual device device ID is: 8086,3b07

I added the _DSM method:
Code:
            Device (LPC)
            {
                Name (_ADR, 0x001F0000)  // _ADR: Address
                Name (_S3D, 0x03)  // _S3D: S3 Device State
                Name (RID, Zero)
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Store (Package (0x04)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                 0x09, 0x3B, 0x00, 0x00
                            }, 

                            "compatible", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b09"
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }

I had to patch AppleRTC to stop it from invalidating the CMOS checksum when attempting to sleep.
I have a 1st Generation Core i5 series processor.

Good... Much better way than patching the kext directly...

Your _DSM can be simplified (no need for DTGP):
Code:
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
                    Return (Package (0x04)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                 0x09, 0x3B, 0x00, 0x00
                            }, 

                            "compatible", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b09"
                            }
                        })
                }
 
So I removed Generation of C states and P states from the chameleon plist and now i'm locked in at 1.2Ghz ...
I used MaciASL to generate a SSDT but either its wrong or it doesn't load when I have DropSSDT in the plist.

These are new...
May 6 19:00:05 eweiman-t410-osx kernel[0]: Standby delay is not specified! Defaulting to 0x1068
May 6 19:00:05 eweiman-t410-osx kernel[0]: ErP Timer is not specified! Defaulting to 0x3840
 

Attachments

  • SSDT.aml
    980 bytes · Views: 174
So I removed Generation of C states and P states from the chameleon plist and now i'm locked in at 1.2Ghz ...
I used MaciASL to generate a SSDT but either its wrong or it doesn't load when I have DropSSDT in the plist.

These are new...
May 6 19:00:05 eweiman-t410-osx kernel[0]: Standby delay is not specified! Defaulting to 0x1068
May 6 19:00:05 eweiman-t410-osx kernel[0]: ErP Timer is not specified! Defaulting to 0x3840

Don't use MaciASL to generate SSDT. Use ssdtPRgen.sh or the ProBook Installer.

Current version of ssdtPRgen.sh is here: https://github.com/Piker-Alpha/ssdtPRGen.sh

You're locked at 12 because your SSDT is not loading due to it defining what I'm assuming is a duplicate DTGP method also likely defined in your DSDT.

Best not to use DTGP at all as I noted in my previous post.
 
I've fixed the DSTD like you mentioned with the DTGP removal.

However ... as I have a 1st Gen processor I'm assuming this doesn't work.
Code:
bash-3.2# ./ssdtPRGen.sh -turbo 3200

ssdtPRGen.sh v0.9 Copyright (c) 2011-2012 by † RevoGirl
             v6.6 Copyright (c) 2013 by † Jeroen
             v13.4 Copyright (c) 2013-2014 by Pike R. Alpha
-----------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/ssdtPRGen.sh/issues <

Override value: (-turbo) maximum (turbo) frequency, now using: 3200 MHz!

System information: Mac OS X 10.9.2 (13C1021)
Brandstring 'Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz'

Warning: The brandstring has an unexpected length!

Error: Unknown processor model ...
Aborting ...
Done
The ProBook installer also fails to run the SSDT creation.
 
I've fixed the DSTD like you mentioned with the DTGP removal.

However ... as I have a 1st Gen processor I'm assuming this doesn't work.
Code:
bash-3.2# ./ssdtPRGen.sh -turbo 3200

ssdtPRGen.sh v0.9 Copyright (c) 2011-2012 by † RevoGirl
             v6.6 Copyright (c) 2013 by † Jeroen
             v13.4 Copyright (c) 2013-2014 by Pike R. Alpha
-----------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/ssdtPRGen.sh/issues <

Override value: (-turbo) maximum (turbo) frequency, now using: 3200 MHz!

System information: Mac OS X 10.9.2 (13C1021)
Brandstring 'Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz'

Warning: The brandstring has an unexpected length!

Error: Unknown processor model ...
Aborting ...
Done
The ProBook installer also fails to run the SSDT creation.

ssdtPRgen.sh requires at least Sandy Bridge. Use GeneratePStates/GenerateCStates instead.
 
That is what I've been using but I've read to enable sleep I need to not use them.
I need to get X86PlatformPlugin to load up instead of the ACPI_SMC_PlatformPlugin...

I've read elsewhere the following should be placed in 'Scope (\_PR.CPU0) { .... }'. Once it's there, the 'x86platformplugin.kext' will load, along with 'applesmcpdrc.kext' hooked to device 'MCHC'.
Code:
    Scope (\_PR.CPU0) 
        {
        Method (_DSM, 4, NotSerialized)
        {
            Store ("Writing plugin-type to Registry!", Debug)
            Store (Package (0x02)
                {
                    "plugin-type", 
                    0x01
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
        }
I assume that the code above could should work like so:

Code:
    Scope (\_PR.CPU0) 
    {
        Method (_DSM, 4, NotSerialized)
           {
            Store ("Writing plugin-type to Registry!", Debug)
            Store (Package (0x02)
               {
                 "plugin-type", 
                  0x01
               }, Local0)
            Return (Local0)
           }
    }
 
That is what I've been using but I've read to enable sleep I need to not use them.
I need to get X86PlatformPlugin to load up instead of the ACPI_SMC_PlatformPlugin...

I've read elsewhere the following should be placed in 'Scope (\_PR.CPU0) { .... }'. Once it's there, the 'x86platformplugin.kext' will load, along with 'applesmcpdrc.kext' hooked to device 'MCHC'.
Code:
    Scope (\_PR.CPU0) 
        {
        Method (_DSM, 4, NotSerialized)
        {
            Store ("Writing plugin-type to Registry!", Debug)
            Store (Package (0x02)
                {
                    "plugin-type", 
                    0x01
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
        }
I assume that the code above could should work like so:

Code:
    Scope (\_PR.CPU0) 
    {
        Method (_DSM, 4, NotSerialized)
           {
            Store ("Writing plugin-type to Registry!", Debug)
            Store (Package (0x02)
               {
                 "plugin-type", 
                  0x01
               }, Local0)
            Return (Local0)
           }
    }

On which computer?

Note: Second _DSM method is coded incorrectly (first is unnecessarily complex).

Note: X86PlatformPlugin is only for CPUs Ivy or later.
 
This would be for the T410 ... just working on trying to get functional sleep.
 
This would be for the T410 ... just working on trying to get functional sleep.

According to your specs listed for the T410, it is not Ivy Bridge (3rd gen Intel Core i-series). Why are you trying to use X86PlatformPlugin on a CPU that is not Ivy or Haswell?
 
No idea ... other than it seemed like that was the one thing I was missing to getting sleep working when I was reading other threads/forums about getting sleep working in 10.9 .... nobody mentioned it was for Ivy only and I recalled needing it on the toshiba laptop w/ the 3rd gen i3, thought it applied to all of the i series processors.

So do you know what else I have to patch to get sleep to work on this 1st gen i5?
 
Status
Not open for further replies.
Back
Top