Jump to content
7 posts in this topic

Recommended Posts

I was just looking through the dsdt table for my Vaio, and I noticed that it looks like the DSDT is set to return one of 5 different values for the EDID of the LCD display... 6 if you count the last one. EMPT I'll post it here, maybe someone can make sense out of it. Maybe if we can figure out the right one to use, or how to get OS X to match up with the IF statement with the EDID that would work, maybe it would fix the issue. Not sure.

 

                    Name (EDI1, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                       /* 0008 */    0x4D, 0xD9, 0xFA, 0x06, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
                       /* 0018 */    0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
                       /* 0020 */    0x1C, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 
                       /* 0028 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
                       /* 0030 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x28, 0x23, 
                       /* 0038 */    0x40, 0x32, 0x60, 0x84, 0x0A, 0x30, 0x11, 0x11, 
                       /* 0040 */    0x33, 0x00, 0x68, 0xC8, 0x10, 0x00, 0x00, 0x18, 
                       /* 0048 */    0x28, 0x23, 0x40, 0x13, 0x61, 0x84, 0x3C, 0x30, 
                       /* 0050 */    0x5B, 0x5B, 0x44, 0x00, 0x68, 0xC8, 0x10, 0x00, 
                       /* 0058 */    0x00, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x4E, 
                       /* 0060 */    0x76, 0x69, 0x64, 0x69, 0x61, 0x20, 0x44, 0x65, 
                       /* 0068 */    0x66, 0x61, 0x75, 0x6C, 0x00, 0x00, 0x00, 0xFC, 
                       /* 0070 */    0x00, 0x74, 0x20, 0x46, 0x6C, 0x61, 0x74, 0x20, 
                       /* 0078 */    0x50, 0x61, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0xEE
                   })
                   Name (EDI2, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                       /* 0008 */    0x4D, 0xD9, 0xFA, 0x06, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
                       /* 0018 */    0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
                       /* 0020 */    0x1C, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 
                       /* 0028 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
                       /* 0030 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x30, 0x2A, 
                       /* 0038 */    0x40, 0x5E, 0x61, 0x84, 0x18, 0x30, 0x74, 0x74, 
                       /* 0040 */    0x88, 0x00, 0x6A, 0xCC, 0x10, 0x00, 0x00, 0x18, 
                       /* 0048 */    0x00, 0x00, 0x00, 0xFC, 0x00, 0x4E, 0x76, 0x69, 
                       /* 0050 */    0x64, 0x69, 0x61, 0x20, 0x44, 0x65, 0x66, 0x61, 
                       /* 0058 */    0x75, 0x6C, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x74, 
                       /* 0060 */    0x20, 0x46, 0x6C, 0x61, 0x74, 0x20, 0x50, 0x61, 
                       /* 0068 */    0x6E, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xFD, 
                       /* 0070 */    0x00, 0x00, 0x3D, 0x1D, 0x38, 0x0B, 0x00, 0x00, 
                       /* 0078 */    0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x8A
                   })
                   Name (EDI3, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                       /* 0008 */    0x4D, 0xD9, 0xFA, 0x06, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
                       /* 0018 */    0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
                       /* 0020 */    0x1C, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 
                       /* 0028 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
                       /* 0030 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x30, 0x2A, 
                       /* 0038 */    0x40, 0x5E, 0x61, 0x84, 0x18, 0x30, 0x74, 0x74, 
                       /* 0040 */    0x88, 0x00, 0x68, 0xC8, 0x10, 0x00, 0x00, 0x18, 
                       /* 0048 */    0x30, 0x2A, 0x40, 0x90, 0x61, 0x84, 0xB4, 0x30, 
                       /* 0050 */    0x85, 0x85, 0xCC, 0x00, 0x68, 0xC8, 0x10, 0x00, 
                       /* 0058 */    0x00, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x4E, 
                       /* 0060 */    0x76, 0x69, 0x64, 0x69, 0x61, 0x20, 0x44, 0x65, 
                       /* 0068 */    0x66, 0x61, 0x75, 0x6C, 0x00, 0x00, 0x00, 0xFC, 
                       /* 0070 */    0x00, 0x74, 0x20, 0x46, 0x6C, 0x61, 0x74, 0x20, 
                       /* 0078 */    0x50, 0x61, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0xA9
                   })
                   Name (EDI4, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                       /* 0008 */    0x36, 0x7F, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
                       /* 0018 */    0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
                       /* 0020 */    0x1C, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 
                       /* 0028 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
                       /* 0030 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x38, 
                       /* 0038 */    0x80, 0xB4, 0x70, 0x38, 0x40, 0x40, 0x3C, 0x3C, 
                       /* 0040 */    0x55, 0x00, 0x68, 0xC8, 0x10, 0x00, 0x00, 0x18, 
                       /* 0048 */    0x40, 0x38, 0x80, 0x80, 0x71, 0x38, 0xAA, 0x40, 
                       /* 0050 */    0x80, 0x80, 0x88, 0x00, 0x68, 0xC8, 0x10, 0x00, 
                       /* 0058 */    0x00, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x4E, 
                       /* 0060 */    0x76, 0x69, 0x64, 0x69, 0x61, 0x20, 0x44, 0x65, 
                       /* 0068 */    0x66, 0x61, 0x75, 0x6C, 0x00, 0x00, 0x00, 0xFC, 
                       /* 0070 */    0x00, 0x74, 0x20, 0x46, 0x6C, 0x61, 0x74, 0x20, 
                       /* 0078 */    0x50, 0x61, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0x1F
                   })
                   Name (EDI5, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                       /* 0008 */    0x36, 0x7F, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
                       /* 0018 */    0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
                       /* 0020 */    0x1C, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 
                       /* 0028 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
                       /* 0030 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x38, 
                       /* 0038 */    0x80, 0xB4, 0x70, 0x38, 0x40, 0x40, 0x3C, 0x3C, 
                       /* 0040 */    0x55, 0x00, 0x68, 0xC8, 0x10, 0x00, 0x00, 0x18, 
                       /* 0048 */    0x40, 0x38, 0x80, 0x80, 0x71, 0x38, 0xAA, 0x40, 
                       /* 0050 */    0x80, 0x80, 0x88, 0x00, 0x68, 0xC8, 0x10, 0x00, 
                       /* 0058 */    0x00, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x4E, 
                       /* 0060 */    0x76, 0x69, 0x64, 0x69, 0x61, 0x20, 0x44, 0x65, 
                       /* 0068 */    0x66, 0x61, 0x75, 0x6C, 0x00, 0x00, 0x00, 0xFC, 
                       /* 0070 */    0x00, 0x74, 0x20, 0x46, 0x6C, 0x61, 0x74, 0x20, 
                       /* 0078 */    0x50, 0x61, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0x1F
                   })
                   Name (EMPT, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0018 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0020 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0028 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0030 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0038 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0040 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0048 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0050 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0058 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0060 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0068 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0070 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                       /* 0078 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                   })
                   Device (LCD)
                   {
                       Name (_ADR, 0x0110)
                       Method (_DDC, 1, NotSerialized)
                       {
                           Store (\GPID, Local0)
                           If (LEqual (Local0, 0x01))
                           {
                               Return (EDI1)
                           }

                           If (LEqual (Local0, 0x02))
                           {
                               Return (EDI2)
                           }

                           If (LEqual (Local0, 0x03))
                           {
                               Return (EDI3)
                           }

                           If (LEqual (Local0, 0x04))
                           {
                               Return (EDI4)
                           }

                           If (LEqual (Local0, 0x05))
                           {
                               Return (EDI5)
                           }
                           Else
                           {
                               Return (EMPT)
                           }
                       }

 

Yeah, just looked at a few other DSDT files to compare and the LCD section from those examples does not include multiple EDID values or the code at the bottom with the if statements for the different EDID versions. Still don't know if this has anything to do with the issue. Maybe someone could clear up the "IF (LEqual (Local0, 0x0X)) part. Maybe somehow OSX is falling into the else part and ending up with EMPT returned, which looks like no EDID.

 

Also interesting, EDI4 and 5 are the same, while 1, 2, and 3 are all different.

 

The plot thickens...

Link to comment
https://www.insanelymac.com/forum/topic/254392-5-different-edids/
Share on other sites

Oh even better. The EDID returned in Windows does not match any of the EDID values in the DSDT. Maybe that is why injecting EDID has not worked up to this point? Here are the hex values for my EDID from Windows.

 

:1000000000FFFFFFFFFFFF004DD9FA0600000000D0

:100010002D0C010390241400EAA8E099574B922586

:100020001C50540000000101010101010101010124

:10003000010101010101302A405E618418307474DA

:10004000880068C810000018302A40906184B43019

:100050008585CC0068C810000018000000FC004E73

:1000600076696469612044656661756C000000FC70

:10007000007420466C61742050616E656C0000AA14

:00000001FF

 

So again, WTF?

 

Where is that Kizwan guy to make sense of this nonsense?

..................................... <---- what code is above ??

..................................... <----

Name (EDI1, Buffer (0x80)

 

Here is the code you requested:

 

            Device (PEG3)
           {
               Name (_ADR, 0x00030000)
               Device (NGFX)
               {
                   Method (_ADR, 0, Serialized)
                   {
                       \DBGC (0x65, 0x00, BCEN)
                       Return (0x00)
                   }

                   OperationRegion (NVFX, PCI_Config, 0x00, 0x10)
                   Field (NVFX, AnyAcc, NoLock, Preserve)
                   {
                       NVID,   16
                   }

                   Name (_DOD, Package (0x04)
                   {
                       0x0100, 
                       0x0110, 
                       0x80007330, 
                       0x8000A430
                   })
                   Name (BCL1, Package (0x09)
                   {
                       0x34, 
                       0x40, 
                       0x4F, 
                       0x5E, 
                       0x6F, 
                       0x86, 
                       0xA0, 
                       0xC3, 
                       0xFF
                   })
                   Name (BCL4, Package (0x09)
                   {
                       0x34, 
                       0x3E, 
                       0x4B, 
                       0x5C, 
                       0x6F, 
                       0x86, 
                       0xA0, 
                       0xC3, 
                       0xFF
                   })
                   Name (BCL5, Package (0x09)
                   {
                       0x0D, 
                       0x13, 
                       0x1B, 
                       0x27, 
                       0x39, 
                       0x53, 
                       0x79, 
                       0xAF, 
                       0xFF
                   })
                   Name (ICL2, Package (0x0B)
                   {
                       0x64, 
                       0x64, 
                       0x04, 
                       0x10, 
                       0x1C, 
                       0x28, 
                       0x34, 
                       0x40, 
                       0x4C, 
                       0x58, 
                       0x64
                   })
                   Name (I10B, Buffer (0x08) {})
                   CreateField (I10B, 0x00, 0x08, I_AL)
                   CreateField (I10B, 0x08, 0x08, I_AH)
                   CreateField (I10B, 0x10, 0x08, I_BL)
                   CreateField (I10B, 0x18, 0x08, I_BH)
                   CreateField (I10B, 0x20, 0x08, I_CL)
                   CreateField (I10B, 0x28, 0x08, I_CH)
                   CreateField (I10B, 0x30, 0x08, I_DL)
                   CreateField (I10B, 0x38, 0x08, I_DH)
                   Method (SBRI, 1, NotSerialized)
                   {
                       Store (0x14, I_AL)
                       Store (0x4F, I_AH)
                       Store (0x94, I_BL)
                       Store (0x01, I_BH)
                       Store (Arg0, I_CL)
                       PHDD (0xE2, I10B)
                   }

                   Name (SSBR, 0x00)
                   Method (GBRI, 0, NotSerialized)
                   {
                       Store (0x14, I_AL)
                       Store (0x4F, I_AH)
                       Store (0x94, I_BL)
                       Store (0x00, I_BH)
                       Store (0x00, I_CL)
                       Store (PHDD (0xE2, I10B), I10B)
                       Store (DerefOf (Index (I10B, 0x04)), SSBR)
                       Return (SSBR)
                   }

                   Name (EDI1, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                       /* 0008 */    0x4D, 0xD9, 0xFA, 0x06, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
                       /* 0018 */    0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
                       /* 0020 */    0x1C, 0x50, 0x54....

 

I'm not sure how far back you wanted me to go though, so the entire file is attached as well. I saw your comment that AlexanderPD had tried the same thing. When I have a minute more I'm going to search through the posts to see what method he used. This is an IF statement, so you couldn't just delete all the options, I think the thing to do would be guess that OS X may be defaulting to the empt value, or at least that is the only thing that would make sense based on what I can see in my computer and my IO registry, and based on that guess tweak the EDID to return whichever value of the five that works the best, recompile, and see what happens.

 

I'm not trying to knock AlexanderPD or anything, but we have a bunch of people looking into this with different skill levels, and I've seen valid fixes proclaimed bunk before (though not for this issue) just because someone bungled the procedure. So I'm likely to give this a shot anyway.

 

One additional interesting thing I noticed in a quick line during OS X boot is a line that said something to the effect of IOAPIC (I think that is the abbreviation it uses, it flashes by so fast, I need to use the wait flag) table not found. So I don't know if this section of the DSDT affects how it operates at all or not.

 

What I do know after all the reading that I've done is that we aren't going to get updated drivers from NVIDIA anytime soon, nor are we likely to port a driver from Linux that has been updated to fix the problem, unless someone happens to know a programing super genius that can reverse engineer the closed nvidia drivers, also, we can't take the route I was looking for which was to basically hard-code the monitor properties into OS X since it rebuilds the IO registry each time it boots up.

 

So, whatever we do will have to use injecting some type of information at boot in the form of an EDID, a DSDT, or some other less well known solution.

 

.... not sure but it might yet be possible to plug this information into the com.apple.windowserver.plist files, but then again it might just overwrite that on the next boot, and I can't quite make sense out of how to generate my own com.apple.windowserver.plist file. Not sure how they work yet.

 

Good luck!

 

EDIT: Not allowed to upload the dsdt.... screw you forum. Email me if you want the whole file.

Here is the code you requested:

 

            Device (PEG3)
           {
               Name (_ADR, 0x00030000)
               Device (NGFX)
               {
                   Method (_ADR, 0, Serialized)
                   {
                       \DBGC (0x65, 0x00, BCEN)
                       Return (0x00)
                   }

                   OperationRegion (NVFX, PCI_Config, 0x00, 0x10)
                   Field (NVFX, AnyAcc, NoLock, Preserve)
                   {
                       NVID,   16
                   }

                   Name (_DOD, Package (0x04)
                   {
                       0x0100, 
                       0x0110, 
                       0x80007330, 
                       0x8000A430
                   })
                   Name (BCL1, Package (0x09)
                   {
                       0x34, 
                       0x40, 
                       0x4F, 
                       0x5E, 
                       0x6F, 
                       0x86, 
                       0xA0, 
                       0xC3, 
                       0xFF
                   })
                   Name (BCL4, Package (0x09)
                   {
                       0x34, 
                       0x3E, 
                       0x4B, 
                       0x5C, 
                       0x6F, 
                       0x86, 
                       0xA0, 
                       0xC3, 
                       0xFF
                   })
                   Name (BCL5, Package (0x09)
                   {
                       0x0D, 
                       0x13, 
                       0x1B, 
                       0x27, 
                       0x39, 
                       0x53, 
                       0x79, 
                       0xAF, 
                       0xFF
                   })
                   Name (ICL2, Package (0x0B)
                   {
                       0x64, 
                       0x64, 
                       0x04, 
                       0x10, 
                       0x1C, 
                       0x28, 
                       0x34, 
                       0x40, 
                       0x4C, 
                       0x58, 
                       0x64
                   })
                   Name (I10B, Buffer (0x08) {})
                   CreateField (I10B, 0x00, 0x08, I_AL)
                   CreateField (I10B, 0x08, 0x08, I_AH)
                   CreateField (I10B, 0x10, 0x08, I_BL)
                   CreateField (I10B, 0x18, 0x08, I_BH)
                   CreateField (I10B, 0x20, 0x08, I_CL)
                   CreateField (I10B, 0x28, 0x08, I_CH)
                   CreateField (I10B, 0x30, 0x08, I_DL)
                   CreateField (I10B, 0x38, 0x08, I_DH)
                   Method (SBRI, 1, NotSerialized)
                   {
                       Store (0x14, I_AL)
                       Store (0x4F, I_AH)
                       Store (0x94, I_BL)
                       Store (0x01, I_BH)
                       Store (Arg0, I_CL)
                       PHDD (0xE2, I10B)
                   }

                   Name (SSBR, 0x00)
                   Method (GBRI, 0, NotSerialized)
                   {
                       Store (0x14, I_AL)
                       Store (0x4F, I_AH)
                       Store (0x94, I_BL)
                       Store (0x00, I_BH)
                       Store (0x00, I_CL)
                       Store (PHDD (0xE2, I10B), I10B)
                       Store (DerefOf (Index (I10B, 0x04)), SSBR)
                       Return (SSBR)
                   }

                   Name (EDI1, Buffer (0x80)
                   {
                       /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                       /* 0008 */    0x4D, 0xD9, 0xFA, 0x06, 0x00, 0x00, 0x00, 0x00, 
                       /* 0010 */    0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
                       /* 0018 */    0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
                       /* 0020 */    0x1C, 0x50, 0x54....

 

I'm not sure how far back you wanted me to go though, so the entire file is attached as well. I saw your comment that AlexanderPD had tried the same thing. When I have a minute more I'm going to search through the posts to see what method he used. This is an IF statement, so you couldn't just delete all the options, I think the thing to do would be guess that OS X may be defaulting to the empt value, or at least that is the only thing that would make sense based on what I can see in my computer and my IO registry, and based on that guess tweak the EDID to return whichever value of the five that works the best, recompile, and see what happens.

 

I'm not trying to knock AlexanderPD or anything, but we have a bunch of people looking into this with different skill levels, and I've seen valid fixes proclaimed bunk before (though not for this issue) just because someone bungled the procedure. So I'm likely to give this a shot anyway.

 

One additional interesting thing I noticed in a quick line during OS X boot is a line that said something to the effect of IOAPIC (I think that is the abbreviation it uses, it flashes by so fast, I need to use the wait flag) table not found. So I don't know if this section of the DSDT affects how it operates at all or not.

 

What I do know after all the reading that I've done is that we aren't going to get updated drivers from NVIDIA anytime soon, nor are we likely to port a driver from Linux that has been updated to fix the problem, unless someone happens to know a programing super genius that can reverse engineer the closed nvidia drivers, also, we can't take the route I was looking for which was to basically hard-code the monitor properties into OS X since it rebuilds the IO registry each time it boots up.

 

So, whatever we do will have to use injecting some type of information at boot in the form of an EDID, a DSDT, or some other less well known solution.

 

.... not sure but it might yet be possible to plug this information into the com.apple.windowserver.plist files, but then again it might just overwrite that on the next boot, and I can't quite make sense out of how to generate my own com.apple.windowserver.plist file. Not sure how they work yet.

 

Good luck!

 

EDIT: Not allowed to upload the dsdt.... screw you forum. Email me if you want the whole file.

 

Its really interesting to see your code as my is working totally different. I think, too that it should be possible with a injection into dsdt, some guys from thinkpad section also managed that internal display problem. Someone just told that but I never saw it. You know i just worked 3 weeks with that problem and i have no ideas anymore how to solve this. We need really some guru here.

Yeah, I agree. We may need some guru help to finish this one off. However, have you ever seen how they get truly slammed with questions in the forums? I think to get the help of someone a little more experienced, we are going to have to do the homework and research ourselves and hand it off to a guru that can help by realizing the final solution. I think for the moment though, it would be most effective to keep gathering information on the situation and keep the expert questions to simple yes/no situations.

 

Another thing that seems odd to me, I was doing some more looking through that EDID section of the DSDT and things are getting even stranger. You know, a section of code shouldn't be allowed to spread out over say 5 to 10 pages, because then you look through the code and realize that the section with 5 EDIDs is duplicated somewhere else in the code like I just did. Soooo... yeah, two EDID sections, so now I need to figure out what to do with that.

 

Good luck, I'll continue doing research, and let me know if you find out anything.

  • 1 month later...
×
×
  • Create New...