Morning,
Thanks for all the great work you guys have been doing. I thought I would share a success story from the weekend. I wanted to use my d620 as a desktop machine - in the docking station with an external monitor + keyboard + mouse with the lid closed. What I found that while the external monitor would work when the laptop lid was open and I used both monitors, I could not get the external monitor to work when the lid was closed. I discovered that the external monitor worked in this configuration when I booted without a modified DSDT. I tracked this down to the inclusion of the AAPL,HasPanel device property. If the property was there, the external monitor only worked when the lid was open. This was all good but it was a hassle having to select a different DSDT whenever I wanted to use the d620 as a laptop or a desktop.
After several hours of hacking the DSDT I found a way to detect if the laptop is docked and whether the lid is closed. From this I was able to modify the _DSM method of the VID device. I added the following to the start of the method:
Method (_DSM, 4, NotSerialized)
{
Store (MIS2, Local0)
If (LNotEqual (Local0, 0x00))
{
Store (SMI (0x84, Zero), Local0)
If (LEqual (Local0, 0x00))
{
Return (0x00)
}
}
< ... snip normal _DSM code ... >
}
I discovered that the value in MIS2 is 0 when the laptop is not docked and SMI(0x84, Zero) returns 0 when the lid is closed.
My tests show that this works with the official EDP DSDT (extracted from the bios mod).
EDIT: I neglected to mention that I had to remove the device-properties line from /Extra/com.apple.boot.plist.