Jump to content

Final solution (FIX) for GMA950 Desktop edition - NEW 28 DEC 08


Dr. Hurt
 Share

486 posts in this topic

Recommended Posts

The most part of Gigabyte Boards are using Award bios so the Dr.Hurt´s .aml can work, but is better to use a dsdt for each board with the code inserted. The name of the devices are not the same for Ami and Phoenix Bios but the code works too. Only is needed look for the name of your device using the ioreg

 

example for AMI bios (P5L-VM 1394) using GMA950 (PCI0) and nVidia PCI Gfx (P0P3)

 

//after _WAK Method

Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
}))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}

If (LEqual (Arg2, One))
{
Return (One)
}
}
}

Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
.............................
..............................

Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Device (IGFX)  // GMA950
{
Name (_ADR, 0x00020000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"device_type",
Buffer (0x08)
{
"display"
},

"model",
Buffer (0x08)
{
"GMA 950"
},
"built-in",
Buffer (one)
{
0x01
}

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}


..................................
..................................
.................................

Device (P0P3)
{
Name (_ADR, 0x001E0000)
Device (GFX1)  // code for nVidia Gfx.
{
Name (_ADR, 0x000A0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x18)
{
"@0,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},

"@0,device_type",
Buffer (0x08)
{
"display"
},

"@0,name",
Buffer (0x0F)
{
"NVDA,Display-A"
},

"@1,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},

"@1,device_type",
Buffer (0x08)
{
"display"
},

"@1,name",
Buffer (0x0F)
{
"NVDA,Display-B"
},

"NVCAP",
Buffer (0x18)
{
/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
/* 0008 */ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
},

"NVPM",
Buffer (0x20)
{
/* 0000 */ 0x01, 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
},

"VRAM,totalsize",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x10
},

"device_type",
Buffer (0x0D)
{
"NVDA,GeForce"
},

"model",
Buffer (0x27)
{
"Sparkle Nvidia GeForce 6200 PCI 256 MB"
},

"rom-revision",
Buffer (0x09)
{
"DSDT ROM"
}


}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Link to comment
Share on other sites

ok first off I would like to thank you all for your Great work, but I have a Question, Issue

 

 

when the old Buggy display buffer, I could use my internal screen that is what the first file I included in the archive is, the ioregexplorer output with the old display drivers

when I install the new Drivers from ANY set, I get Garbled screen on the internal LCD, then it whites out.

with this new DSDT patch, I get full Accel and all the good Stuff on external Screen but only Blue on internal LCD, I feel thats Better then Garbled mess then white out, but it Still isn't usable,

the Second file, with the .after is the ioregexplorer output after installing the patch

 

is there a way with the dsdt_fixed.txt provided to enable the internal monitor so that it is functioning??

 

I think you guys are on the right track to making my lappy finely able to dump windows and go only os x.

 

I hope that you all are looking forward to the new year,

 

HBP

Archive.zip

Link to comment
Share on other sites

Cool!!

So my DSDT.aml also worked with an ASUS motherboard?!

Other devices didn't even match in my system, so it won't cause any problems for anyone, It's just extra obsolete code - as netkas pointed out. I'll try to clean up the code if I have time.

I'd better update the first post again.

Thank you, Azimutz.

 

Yap.. it works in my Asus.

After reading all the posts i have to agree that this is a sulution but, it's better to be implemented to DSDT from the PC to patch.

Those mismatching devices can cause trouble for some people. I didn't noticed any strange behavior but, one never knows.

I'll do some more testing when i have time! I'm always testing with INSTAHackintosh so, i have my system pretty safe for testing :)

i always manage to boot in case of trouble!!

Thanks mate.

I'll be back soon.

Link to comment
Share on other sites

Yap.. it works in my Asus.

After reading all the posts i have to agree that this is a sulution but, it's better to be implemented to DSDT from the PC to patch.

Those mismatching devices can cause trouble for some people. I didn't noticed any strange behavior but, one never knows.

I'll do some more testing when i have time! I'm always testing with INSTAHackintosh so, i have my system pretty safe for testing :)

i always manage to boot in case of trouble!!

Thanks mate.

I'll be back soon.

 

I have removed any extra devices from the DSDT in the version 2 clean-up to avoid mismatch and trouble. Only GMA950 code and the normal DSDT fixes.

 

I also released version 3 based on roisoft's recommendations to support different BIOS manufacturers. This should work well with Award, AMI, and Phoenix Bios. It's a major update.

 

This will probably be my last release. I recommend that people try version 3 and if it doesn't work, try version 2.

 

Good Luck everyone!! :)

Link to comment
Share on other sites

This is wonderful stuff Dr. Hurt! Will it work with a Pentium 4? Stupid question. I wanna try it on my sister's hack.

 

I wanna visit Cairo now.

 

I don't think it will work on a pentium 4 because the DSDT.aml is optimized for 2 core cpu (because it was created on a 2 core system). You could try if your up for a challenge - don't even know what will happen!!

I recommend that you patch your own DSDT to avoid trouble.

 

Also, your more than welcome to visit Cairo. Just make sure your ready for a life changing experience. It's an absolutely CRAZY city. I've been living here since 2002 (moved from Fairfax, Virginia), and Cairo still doesn't sieze to impress me. :D

 

The 2 new aml files still don't work :( I shall wait for an automatic patcher then.. At least I can get fully functional graphics after unplugging and plugging.

 

I really feel sorry for you. I don't know how to fix your problem. If roisoft fixes it and releases the code, I'll release a new version.

Link to comment
Share on other sites

I don't think it will work on a pentium 4 because the DSDT.aml is optimized for 2 core cpu (because it was created on a 2 core system). You could try if your up for a challenge - don't even know what will happen!!

I recommend that you patch your own DSDT to avoid trouble.

 

Silly question... would that be the cause of my problem? I have an Intel Atom with one core... :( Thankyou Dr. Hurt for trying to get this working :D

Link to comment
Share on other sites

Silly question... would that be the cause of my problem? I have an Intel Atom with one core... :( Thankyou Dr. Hurt for trying to get this working :D

 

Try this. It's optimized for 1 core.

I doubt that this is the problem, but give it a shot. I hope I did not mess this up

DSDT.aml.zip

Link to comment
Share on other sites

Try this. It's optimized for 1 core.

I doubt that this is the problem, but give it a shot. I hope I did not mess this up

 

Still no worky, activity monitor now shows correctly one core, whereas before it showed 2... but other than that, same as before.

Link to comment
Share on other sites

Still no worky, activity monitor now shows correctly one core, whereas before it showed 2... but other than that, same as before.

 

OK

white flag!!!

This is as much as I can do. Maybe you can contact roisoft for more help. He's much more experienced than me in this. Sorry nebulOSX

 

By the way, how are other people doing?

Is it working for them? I see over a hundred downloads, but no reports!!

I'll have to assume it's working for the majority.

Link to comment
Share on other sites

OK

white flag!!!

This is as much as I can do. Maybe you can contact roisoft for more help. He's much more experienced than me in this. Sorry nebulOSX

 

OK, thank you very much for trying, much appreciated! I will contact Roisoft then ;)

Link to comment
Share on other sites

The most part of Gigabyte Boards are using Award bios so the Dr.Hurt´s .aml can work, but is better to use a dsdt for each board with the code inserted. The name of the devices are not the same for Ami and Phoenix Bios but the code works too. Only is needed look for the name of your device using the ioreg

 

example for AMI bios (P5L-VM 1394) using GMA950 (PCI0) and nVidia PCI Gfx (P0P3)

 

//after _WAK Method

Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
}))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}

If (LEqual (Arg2, One))
{
Return (One)
}
}
}

Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
.............................
..............................

Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Device (IGFX)
{
Name (_ADR, 0x00020000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"device_type",
Buffer (0x08)
{
"display"
},

"model",
Buffer (0x08)
{
"GMA 950"
},
"built-in",
Buffer (one)
{
0x01
}

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}


..................................
..................................
.................................

Device (P0P3)
{
Name (_ADR, 0x001E0000)
Device (GFX1)
{
Name (_ADR, 0x000A0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x18)
{
"@0,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},

"@0,device_type",
Buffer (0x08)
{
"display"
},

"@0,name",
Buffer (0x0F)
{
"NVDA,Display-A"
},

"@1,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},

"@1,device_type",
Buffer (0x08)
{
"display"
},

"@1,name",
Buffer (0x0F)
{
"NVDA,Display-B"
},

"NVCAP",
Buffer (0x18)
{
/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
/* 0008 */ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
},

"NVPM",
Buffer (0x20)
{
/* 0000 */ 0x01, 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
},

"VRAM,totalsize",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x10
},

"device_type",
Buffer (0x0D)
{
"NVDA,GeForce"
},

"model",
Buffer (0x27)
{
"Sparkle Nvidia GeForce 6200 PCI 256 MB"
},

"rom-revision",
Buffer (0x09)
{
"DSDT ROM"
}


}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

roisoft: I have utterly no clue how to incorporate your code, unless you help me, it's useless to me

Link to comment
Share on other sites

One last question.

Have you tried using EFI strings instead?

 

I tried one if i remember correctly and nothing happened.... Do you know any that might work?

 

 

@nebulOSX

 

can you try on a fresh install please ?

 

No problem, will do that tonight and post results..

Link to comment
Share on other sites

this is the code of the macbook with X3100 , i don´t know if it will work, i´m sorry but i don´t have the hardware to test it out. I think all the code is not needed, it must be cleaned out...

 

Device (GFX)
{
Name (_ADR, XXXXX)//use a proper ADR
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x54)
{

"device_type",
Buffer (0x08)
{
"display"
},

"model",
Buffer (0x0D)
{
"X3100"
},

"built-in"
Buffer (One)
{
0x01
},

"AAPL,aux-power-connected",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL,backlight-control",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL,backlightRestore",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL,DisplayConfig",
Buffer (0x20)
{
/* 0000 */ 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
/* 0008 */ 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0018 */ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
},

"AAPL,HasLid",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL,HasPanel",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL,NumDisplays",
Buffer (0x04)
{
0x04, 0x00, 0x00, 0x00
},

"AAPL,NumFramebuffers",
Buffer (0x04)
{
0x02, 0x00, 0x00, 0x00
},

"AAPL,SelfRefreshSupported",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL00,blackscreen-preferences",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x08
},

"AAPL01,BacklightIntensity",
Buffer (0x04)
{
0x64, 0x00, 0x00, 0x00
},

"AAPL01,blackscreen-preferences",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x08
},

"AAPL01,BootDisplay",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL01,CurrentDisplay",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,DataJustify",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL01,Depth",
Buffer (0x04)
{
0x20, 0x00, 0x00, 0x00
},

"AAPL01,Dither",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,DualLink",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL01,EDID",
Buffer (0x80)
{
/* 0000 */ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
/* 0008 */ 0x06, 0x10, 0x5f, 0x9c, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x08, 0x10, 0x01, 0x03, 0x80, 0x1d, 0x12, 0x78,
/* 0018 */ 0x0A, 0x2f, 0x30, 0x97, 0x58, 0x53, 0x8b, 0x29,
/* 0020 */ 0x25, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01,
/* 0028 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
/* 0030 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xBC, 0x1B,
/* 0038 */ 0x00, 0xA0, 0x50, 0x20, 0x17, 0x30, 0x30, 0x20,
/* 0040 */ 0x36, 0x00, 0x1E, 0xB3, 0x10, 0x00, 0x00, 0x18,
/* 0048 */ 0x00, 0x00, 0x00, 0x0F, 0x00, 0x06, 0x10, 0x20,
/* 0050 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0058 */ 0x0A, 0x20, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x4C,
/* 0060 */ 0x54, 0x31, 0x33, 0x33, 0x57, 0x58, 0x31, 0x2D,
/* 0068 */ 0x00, 0x43, 0x41, 0x31, 0x00, 0x00, 0x00, 0xFE,
/* 0070 */ 0x00, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x4C,
/* 0078 */ 0x43, 0x44, 0x0A, 0x20, 0x20, 0x20, 0x00, 0xC2
},

"AAPL01,Height",
Buffer (0x04)
{
0x20, 0x03, 0x00, 0x00
},

"AAPL01,Interlace",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,Inverter",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,InverterCurrent",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,InverterFrequency",
Buffer (0x04)
{
0x08, 0x52, 0x00, 0x00
},

"AAPL01,IODisplayMode",
Buffer (0x04)
{
0x00, 0x10 0x00, 0x80
},

"AAPL01,LinkFormat",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,LinkType",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,Pipe",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL01,PixelFormat",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,Refresh",
Buffer (0x04)
{
0x3B, 0x00, 0x00, 0x00
},

"AAPL01,Stretched",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,T0",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,T1",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL01,T2",
Buffer (0x04)
{
0xC8, 0x00, 0x00, 0x00
},

"AAPL01,T3",
Buffer (0x04)
{
0xC8, 0x00, 0x00, 0x00
},

"AAPL01,T4",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},

"AAPL01,T5",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"AAPL01,T6",
Buffer (0x04)
{
0x90, 0x01, 0x00, 0x00
},

"AAPL01,Width",
Buffer (0x04)
{
0x00, 0x05, 0x00, 0x00
}

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

Link to comment
Share on other sites

I can confirm that even on a fresh install, it still doesn't work and does the same thing as before ;)

 

EDIT: OK, something really strange, I have tried with a different monitor and it works?! my main monitor clearly has something wrong...

 

OK, am i being paranoid? I have looked at the cable from my old 1024x768 monitor (which works!) compared to the cable with my newer larger monitor and i notice a pin is missing on the new monitor cable? Look at picture below, the cable from new monitor is on the right.. I would change the cables round but the older one has the cable embedded in.

 

EDIT 2:Just googled some images and seems that almost all of them have that pin missing... I think its a slightly dodgy monitor as the correct 1440x900 res isn't picked up on my macbook have to use switchresx to change it, anyone know a fix?

post-186519-1230677853_thumb.jpg

Link to comment
Share on other sites

I take it this method would not work on a laptop's Intel GMA950?

 

EDIT: Nvm read a post on 1st page. Could someone tell me how to do this though?

 

Intel GMA 950:

 Chipset Model:	GMA 950
 Type:	Display
 Bus:	Built-In
 VRAM (Total):	64 MB of shared system memory
 Vendor:	Intel (0x8086)
 Device ID:	0x27a2
 Revision ID:	0x0003
 Displays:
Display:
 Resolution:	1280 x 800
 Depth:	32-bit Color
 Built-In:	Yes
 Core Image:	Hardware Accelerated
 Main Display:	Yes
 Mirror:	Off
 Online:	Yes
 Quartz Extreme:	Supported
Display Connector:
 Status:	No display connected

Link to comment
Share on other sites

hi there, i havn't believed that there would be movement again

 

 

 

i'm on a elitegroup (ECS) 945GCT - M2/1333, installed pc efi v9 on my test disk. installed the kexts plugins and buffers.

 

copied in the DSDT.aml to the root, tried V3 and V2,

 

booting process will stuck.

 

 

 

ok, i can create my on DSDT.aml with this fassl thingy, could anyone hold my hand so i can alter it with the necessary code?

Link to comment
Share on other sites

 Share

×
×
  • Create New...