Jump to content
majrul

Please help me in DSDT patching for Intel HD 3000 Graphics

Recommended Posts

Hi,


I am facing all those artifacts on my ASUS X53SC Laptop and found that many were able to solve the problem by editing the DSDT by adding the following code:

Method (_DSM, 4, NotSerialized)
           {
               Store (Package (0x02)
                   {
                       "AAPL00,DualLink",
                       Buffer (0x04)
                       {
                           0x01, 0x00, 0x00, 0x00
                       }
                   }, Local0)
               DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
               Return (Local0)
           }

But the problem is that the DSDT for my system already contains the following method with this code:

Method (_DSM, 4, Serialized)
               {
                   Name (_T_0, Zero)
                   If (LEqual (Arg0, Buffer (0x10)
                           {
                               /* 0000 */    0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
                               /* 0008 */    0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
                           }))
                   {
                       Store (Zero, Local0)
                       Store (ShiftLeft (DerefOf (Index (Arg3, 0x03)), 0x18), Local0)
                       Add (ShiftLeft (DerefOf (Index (Arg3, 0x02)), 0x10), Local0,
                           Local0)
                       Add (ShiftLeft (DerefOf (Index (Arg3, One)), 0x08), Local0,
                           Local0)
                       Add (ShiftLeft (DerefOf (Index (Arg3, Zero)), Zero), Local0,
                           Local0)
                       If (LNotEqual (Arg1, 0x0100))
                       {
                           Return (Buffer (0x04)
                           {
                               0x02, 0x00, 0x00, 0x80
                           })
                       }
                       Store ("Optimus _DSM is called ", Debug)
                       While (One)
                       {
                           Store (Arg2, _T_0)
                           If (LEqual (_T_0, 0x00))
                           {
                               Store ("Optimus _DSM subfunc 0, return 0x04000001 ", Debug)
                               Return (Buffer (0x04)
                               {
                                   0x01, 0x00, 0x03, 0x04
                               })
                           }
                           Else
                           {
                               If (LEqual (_T_0, 0x1A))
                               {
                                   Store ("Optimus _DSM subfunc 26 ", Debug)
                                   If (And (Local0, One))
                                   {
                                       ShiftRight (Local0, 0x18, Local2)
                                       If (LEqual (Local2, 0x03))
                                       {
                                           Store ("Optimus _DSM subfunc 26, OMPR=3", Debug)
                                           Store (0x03, \OMPR)
                                       }
                                       If (LEqual (Local2, 0x02))
                                       {
                                           Store (0x02, \OMPR)
                                       }
                                   }
                                   If (LEqual (\PO54, Zero))
                                   {
                                       Return (Buffer (0x04)
                                       {
                                           0x59, 0x00, 0x00, 0x01
                                       })
                                   }
                                   Else
                                   {
                                       Return (Buffer (0x04)
                                       {
                                           0x41, 0x00, 0x00, 0x01
                                       })
                                   }
                               }
                               Else
                               {
                                   Return (Buffer (0x04)
                                   {
                                       0x02, 0x00, 0x00, 0x80
                                   })
                               }
                           }
                           Break
                       }
                   }
                   Return (0x00)
               }

Because i am very new to DSDT patching, i am unable to understand where should i incorporate the changes required so that i can make Intel HD 3000 Graphics work smoothly. I even tried some heroic things but then the output was a blank screen. Please help me in editing this _DSM method. My device id is 116.

Link to comment
Share on other sites

I would try replacing

                    Return (0x00)

by

                Store (Package (0x02)
                   {
                       "AAPL00,DualLink",
                       Buffer (0x04)
                       {
                           0x01, 0x00, 0x00, 0x00
                       }
                   }, Local0)
               DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
               Return (Local0)

 

Or replace the existing _DSM by the new one, since it looks like to be related to nVidia Optimus, which doesn't work in hackintosh.

ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8

Link to comment
Share on other sites

Hi Cassio,


Thanks a lot for the suggestion. I see you are almost replying to all the posts here. That's great! People come to this forum for help and they don't return back disappointed. Hats off!


My problem hasn't got resolved. I've tried all different DSM methods i could find, tried replacing the existing one as you recommended, also tried modifying the default one with the extra stuff, but none of them are removing the artifacts on my Laptop. QE/CI is also not working. In the game of Chess, after 2 moves, the game hangs.


So please guide me as to what can i do..

Link to comment
Share on other sites

ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8

Link to comment
Share on other sites

After multiple attempts, i have still not succeeded in making the display work 100%. I don't know why DSDT editing of _DSM method is not working for me. The only result i see if i edit the DSDT is a garbage screen. My device id is 116, so the system detects the card only if i set GraphicsEnabler=No and if set to Yes, it will show the card as unknown. Increasing the VRAM also didn't help.


Still those artifacts are haunting me. Everytime i play the game of Chess, it hangs after 2 moves. Someone please help!

Link to comment
Share on other sites

This guy was having the same problem and found that the problem is in the LCD, he replaced the display (physically) and the problem is gone http://Olarila.com/forum/viewtopic.php?f=6&t=924 (portuguese)

ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.





×
  • Create New...
The popup will be closed in 15 seconds...