Jump to content

Intel HD Graphics / GMA 5700


sockerkid
 Share

1,324 posts in this topic

Recommended Posts

The "display-connect-flags" is a ATI / NVIDIA only flag. Verify this yourself with grep -r -e display-connect-flags . which dumps something like:
Binary file ./ATI1300Controller.kext/Contents/MacOS/ATI1300Controller matches
...

Binary file ./ATI5000Controller.kext/Contents/MacOS/ATI5000Controller matches
Binary file ./ATIFramebuffer.kext/Contents/MacOS/ATIFramebuffer matches
Binary file ./IONDRVSupport.kext/IONDRVSupport matches

And activate your framebuffer can be done by adding the following snippet to _DSM in your DSDT:

"AAPL,os-info",
Buffer (0x10)
{
	0x30, 0x49, 0x01, 0x11, 0x01, 0x10, 0x08, 0x00, 0x00, 0x01,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
}

Or by using this info in the booter.

 

Yes you're Ok

Buffer (0x14) not 0x10

 

I do it in gma.c

 

Fred

Link to comment
Share on other sites

The kext was released by apple in 10.6.3 and i didnt see anyone working on it.. If anyone have get the gma to work in snow leopard please share here.. i think most of us will appreciate you..

 

Thanks.

 

here is the kext from original 10.6.4 Mac OSX..

 

http://www.mediafire.com/download.php?nt2iterfjaz

 

Edit :

Uploaded Original DSDT from MacbookPro 2010 model with gforce 330m / Intel HD graphics.

Thanks to one guy in x4500 thread for upload this..

 

Regards.

 

The most important thing is to get ioreg dump with Intel HD Enable.

 

Fred

Link to comment
Share on other sites

Does dump of ioregistry was made with Intel HD enable ?

 

Fred

Yes, it is with Intel HD graphics enabled. My friend gave it to me. It is from MacBookPro6,1 with switchable graphics, Intel HD & Nvidia GPU. I'm not on my Mac now to double check it but I believe it have Intel Core i5 or i7-620M

Link to comment
Share on other sites

Yes, it is with Intel HD graphics enabled. My friend gave it to me. It is from MacBookPro6,1 with switchable graphics, Intel HD & Nvidia GPU. I'm not on my Mac now to double check it but I believe it have Intel Core i5 or i7-620M

 

Strange, if you open MacBook_Pro-6.1.ioreg you can see in GFX0 -> AAPL,ndrv-dev Boolean True.

In IGPU nothing

 

 

I suppose that ndrv-dev means Native driver Device ?

 

It could be nice to do both dump one with Nvidia enable, one with Intel Hd enable.

 

And after do a binary compare to see what have change.

 

Regards

 

Fred

 

Hi Fred,

 

Good catch. Fixed. Thanks for spotting my error.

 

 

Don't have gma.c What is it?

 

Gma.c is part of meklort Job.

 

You can get it from :

 

svn co http://forge.voodooprojects.org/svn/chameleon/

 

Regards

 

Fred

Link to comment
Share on other sites

It could be nice to do both dump one with Nvidia enable, one with Intel Hd enable.

Too bad. I only have one with Intel HD enabled. If I'm not mistaken there is MacBook with Intel HD only. On notebook with switchable graphics, it use multiplexer(s) (except for Optimus powered notebook) between GPUs & LVDS (also HDMI, VGA, etc). Output from Intel HD is handled by PCH & connected to multiplexer(s) while discrete GPU connected to multiplexer(s) directly. I don't know whether Apple also use multiplexer(s) on their MacBookPro (with swtichable graphics) or not. But looking on how the GPUs switched in MacBookPro, look like it does use multiplexer but I might be mistaken. I don't think Intel released special processor for macbook. So this ruled out the possibility of differences between macbook's Intel HD & ours. The problem maybe lies on how macbook relay the output to display which might be different with ours.

Link to comment
Share on other sites

And activate your framebuffer can be done by adding the following snippet to _DSM in your DSDT:
"AAPL,os-info",
   Buffer (0x14)
   {
	   0x30, 0x49, 0x01, 0x11, 0x01, 0x10, 0x08, 0x00, 0x00, 0x01,
	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
   }

Or by using this info in the booter.

 

Hi

 

Please can anybody help me ?

where to put in the code above in dsdt ?

when i try in Device_VID (my graphics device in dsdt) via DSM methode

i have compile errors

 

Thanks

Link to comment
Share on other sites

Hi

 

Please can anybody help me ? where to put in the code above in dsdt ? when i try in Device_VID (my graphics device in dsdt) via DSM methodei have compile errors

 

Thanks

Hi fmac. Here's an example:

                OperationRegion (GFXH, PCI_Config, 0x00, 0x40)		// See Intel Datasheet
               Field (GFXH, ByteAcc, NoLock, Preserve)
               {
                   VID0,   16, 
                   DID0,   16
               }

               Method (_DSM, 4, NotSerialized)
               {
                   If (LEqual (Arg0, Buffer (0x10)			// Might Not Be Required!
                           {
                               /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                               /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                           }))
                   {
                       If (LNotEqual (And (VID0, 0xFFFF), 0xFFFF))	// Might Not Be Required!
                       {
                           Store (Package (0x08)			// Change Buffer Length (0x08 here) Accordantly
                               {
                                   "AAPL,aux-power-connected",		// MagSafe Power Adapter Status
                                   Buffer (0x04)
                                   {
                                       0x01, 0x00, 0x00, 0x00
                                   },

                                   "AAPL,display-alias", 			// Fix Framebuffer Alias
                                   Buffer (0x04)
                                   {
                                       0x00, 0x00, 0x00, 0x00
                                   },

                                   "AAPL,os-info",			// Kernel Graphics Info
                                   Buffer (0x14)
                                   {
                                       /* 0000 */	0x30, 0x49, 0x01, 0x11, 0x01, 0x10, 0x08, 0x00, 0x00, 0x01, 
                                       /* 0008 */	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
                                   },

                                   "hda-gfx", 				// Device Audio Linkage
                                   Buffer (0x0A)
                                   {
                                       "onboard-1"
                                   } 				           // No Comma Here!
                               }, Local0)
                          [color="#FF0000"] MCDP (Arg2, RefOf (Local0))	[/color]		// Master Chief's Shortcut
                           Return (Local0)
                       }
                   }

                   Return (0x80000002)					// Prevent Control Path Return Value Compiler Warning
               }
           }

Inject this at the bottom of the Device with: Name (_ADR, 0x00020000) and replace DTGP with this:

    Method (MCDP, 2, NotSerialized)
   {
       If (LEqual (Arg0, Zero))
       {
           Store (Buffer (One)
               {
                   0x03
               }, Arg1)
       }
   }

And fix the callers of DTGP. Change them into MCDP (note the arguments) and you should be fine. You should also have:

    Scope (_SB)
   {
       [color="#2E8B57"]Device (PNLF)
       {
           Name (_HID, EisaId ("APP0002"))
           Name (_CID, "backlight")
           Name (_UID, 0x0A)
           Name (_STA, 0x0B)
       }[/color]

Where the green lines really matter. The rest is just to let you see where, in which scope it should reside. And lastly. There's something like this which you need:

			Device (MCHC) 				// ACPI SMC Connect Link
		{
			Name (_ADR, 0x00)
		}

Which btw I think is the living proof that Master Chief really worked for Intel. Like he said he did. Well. That should cover it.

Link to comment
Share on other sites

Hi fmac. Here's an example:
                OperationRegion (GFXH, PCI_Config, 0x00, 0x40)		// See Intel Datasheet
               Field (GFXH, ByteAcc, NoLock, Preserve)
               {
                   VID0,   16, 
                   DID0,   16
               }

               Method (_DSM, 4, NotSerialized)
               {
                   If (LEqual (Arg0, Buffer (0x10)			// Might Not Be Required!
                           {
                               /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                               /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                           }))
                   {
                       If (LNotEqual (And (VID0, 0xFFFF), 0xFFFF))	// Might Not Be Required!
                       {
                           Store (Package (0x08)			// Change Buffer Length (0x08 here) Accordantly
                               {
                                   "AAPL,aux-power-connected",		// MagSafe Power Adapter Status
                                   Buffer (0x04)
                                   {
                                       0x01, 0x00, 0x00, 0x00
                                   },

                                   "AAPL,display-alias", 			// Fix Framebuffer Alias
                                   Buffer (0x04)
                                   {
                                       0x00, 0x00, 0x00, 0x00
                                   },

                                   "AAPL,os-info",			// Kernel Graphics Info
                                   Buffer (0x14)
                                   {
                                       /* 0000 */	0x30, 0x49, 0x01, 0x11, 0x01, 0x10, 0x08, 0x00, 0x00, 0x01, 
                                       /* 0008 */	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
                                   },

                                   "hda-gfx", 				// Device Audio Linkage
                                   Buffer (0x0A)
                                   {
                                       "onboard-1"
                                   } 				           // No Comma Here!
                               }, Local0)
                          [color="#ff0000"] MCDP (Arg2, RefOf (Local0))	[/color]		// Master Chief's Shortcut
                           Return (Local0)
                       }
                   }

                   Return (0x80000002)					// Prevent Control Path Return Value Compiler Warning
               }
           }

Inject this at the bottom of the Device with: Name (_ADR, 0x00020000) and replace DTGP with this:

    Method (MCDP, 2, NotSerialized)
   {
       If (LEqual (Arg0, Zero))
       {
           Store (Buffer (One)
               {
                   0x03
               }, Arg1)
       }
   }

And fix the callers of DTGP. Change them into MCDP (note the arguments) and you should be fine. You should also have:

    Scope (_SB)
   {
       [color="#2e8b57"]Device (PNLF)
       {
           Name (_HID, EisaId ("APP0002"))
           Name (_CID, "backlight")
           Name (_UID, 0x0A)
           Name (_STA, 0x0B)
       }[/color]

Where the green lines really matter. The rest is just to let you see where, in which scope it should reside. And lastly. There's something like this which you need:

			Device (MCHC)				 // ACPI SMC Connect Link
		  {
			  Name (_ADR, 0x00)
		  }

Which btw I think is the living proof that Master Chief really worked for Intel. Like he said he did. Well. That should cover it.

 

I cant get it -_-

 

Please can you help me

 

untouched dsdt file is atteched

Link to comment
Share on other sites

Hello,

 

Scope (\_SB.PCI0)

{

Device (VID)

{

Name (_ADR, 0x00020000)

Name (IVD5, Buffer (0x03) {})

CreateByteField (IVD5, 0x00, IVD6)

CreateByteField (IVD5, 0x01, IVD7)

CreateByteField (IVD5, 0x02, IVD8)

OperationRegion (PCS, PCI_Config, 0x00, 0x0100)

Field (PCS, AnyAcc, NoLock, WriteAsZeros)

{

VVID, 16,

Offset (0x0A),

DCLS, 16

}

***************************************

Put your code here

 

Method (_DSM, 4, NotSerialized)

{

}

***************************************

Method (VINI, 2, NotSerialized)

{

If (LEqual (Arg0, 0x02))

{

Store (0x00, IVD6)

Store (DCLS, Local1)

If (LEqual (DCLS, 0x0300))

{

Store (0x01, IVD6)

Store (\_SB.LID._LID (), Local0)

\_SB.PCI0.GFX0.GLID (Local0)

}

}

}

 

 

Fred

Link to comment
Share on other sites

Hello,

 

Scope (\_SB.PCI0)

{

Device (VID)

{

Name (_ADR, 0x00020000)

Name (IVD5, Buffer (0x03) {})

CreateByteField (IVD5, 0x00, IVD6)

CreateByteField (IVD5, 0x01, IVD7)

CreateByteField (IVD5, 0x02, IVD8)

OperationRegion (PCS, PCI_Config, 0x00, 0x0100)

Field (PCS, AnyAcc, NoLock, WriteAsZeros)

{

VVID, 16,

Offset (0x0A),

DCLS, 16

}

***************************************

Put your code here

 

Method (_DSM, 4, NotSerialized)

{

}

***************************************

Method (VINI, 2, NotSerialized)

{

If (LEqual (Arg0, 0x02))

{

Store (0x00, IVD6)

Store (DCLS, Local1)

If (LEqual (DCLS, 0x0300))

{

Store (0x01, IVD6)

Store (\_SB.LID._LID (), Local0)

\_SB.PCI0.GFX0.GLID (Local0)

}

}

}

 

 

Fred

 

Thanks

will give it a try

Link to comment
Share on other sites

Ok

 

I got it

but it is a nogo for me

 

no Display

 

only remote :)

I can help you if you want. This will be an experiment though. Since you can remote, please provide me IOreg dump using IORegistryExplorer application. The one you gave earlier is text base IOreg dump, it is difficult to read. I assume the DSDT you gave earlier is the original DSDT, right? I'm also want EDID value for the internal LCD. You can get it using MonInfo application. The "Raw Data" is the EDID value.

Link to comment
Share on other sites

I can help you if you want. This will be an experiment though. Since you can remote, please provide me IOreg dump using IORegistryExplorer application. The one you gave earlier is text base IOreg dump, it is difficult to read. I assume the DSDT you gave earlier is the original DSDT, right? I'm also want EDID value for the internal LCD. You can get it using MonInfo application. The "Raw Data" is the EDID value.

 

Yes please ;)

 

All infos you request are in the zip file

I added an output of "system info" to

the dsdt is untouched, without any modifications

the EDID is an export of "switch resx 4"

native resolution of my display is 1600x900

 

Kind regards

Link to comment
Share on other sites

Hi,

 

So i go back to seven to get proper EDID my screen is 1920x1080.

And will test with correct value.

Hope it will work.

 

I also have life battery trouble under OSX about 5 hours, Seven or Linux is 9 hours. ( Battery 9 cells )

 

Fred

Link to comment
Share on other sites

Yes please :thumbsup_anim:

 

All infos you request are in the zip file

I added an output of "system info" to

the dsdt is untouched, without any modifications

the EDID is an export of "switch resx 4"

native resolution of my display is 1600x900

 

Kind regards

Thanks. :) You got the EDID value from SwitchResX. Can you obtain it in windows? Since Mac OS X cannot properly detect the internal LCD, the EDID value taken in it may/will not be accurate. The best way is to obtain it in windows. Thank you. :)

Link to comment
Share on other sites

Thanks. :thumbsup_anim: You got the EDID value from SwitchResX. Can you obtain it in windows? Since Mac OS X cannot properly detect the internal LCD, the EDID value taken in it may/will not be accurate. The best way is to obtain it in windows. Thank you. :)

 

Ok

 

I do

Link to comment
Share on other sites

Re

 

For Pannel 1920x1080 extract under seven 64 bits.

 

EDID is :

 

00,FF,FF,FF,FF,FF,FF,00,30,E4,00,00,00,00,00,00,

00,13,01,04,95,22,13,78,02,15,D5,9E,59,50,98,26,

0E,50,54,00,00,00,01,01,01,01,01,01,01,01,01,01,

01,01,01,01,01,01,CA,35,80,92,70,38,1F,40,30,20,

35,00,58,C2,10,00,00,18,22,24,80,A0,70,38,1F,40,

30,20,35,00,58,C2,10,00,00,18,00,00,00,FE,00,44,

48,30,39,31,80,31,35,36,57,46,31,0A,00,00,00,00,

00,00,41,31,1E,00,00,00,00,09,01,0A,20,20,00,D6

 

Fred

Link to comment
Share on other sites

Ok

 

here´s all

 

Monitor Asset Manager Report, generated 17.10.2010 (5.1.2600)

Copyright © 1995-2010, EnTech Taiwan.

---------------------------

 

Hardware data

BUS_SLOT = PCI00000.PCI00004.PCI00008.PCI0000C.PCI00010.PCI00014.PCI00018.PCI0001C

00000000 = 00448086.20900006.06000002.00000000.00000000.00000000.00000000.00000000

00000010 = 00468086.00900007.03000002.00000000.F0000004.00000000.E000000C.00000000

000000B0 = 3B648086.00100006.07800006.00800000.F69B0004.00000000.00000000.00000000

000000B3 = 3B678086.00B80000.07000206.00000000.000070A1.F6990000.00000000.00000000

000000C8 = 10EA8086.00100007.02000005.00000000.F6900000.F6980000.00007041.00000000

000000D0 = 3B3C8086.02900006.0C032005.00000000.F6970000.00000000.00000000.00000000

000000D8 = 3B568086.00100006.04030005.00000010.F6960004.00000000.00000000.00000000

000000E0 = 3B428086.00100007.06040005.00810010.00000000.00000000.00010100.20006060

000000E8 = 3B348086.02900006.0C032005.00000000.F6950000.00000000.00000000.00000000

000000F0 = 24488086.00100007.060401A5.00010000.00000000.00000000.000B0B00.228000F0

000000F8 = 3B078086.02100007.06010005.00800000.00000000.00000000.00000000.00000000

00000200 = 422C8086.00100006.02800035.00000010.F4100004.00000000.00000000.00000000

00000300 = E4761180.00100007.06070002.00820000.F2C40000.020000A0.00040403.F2CFE000

00000301 = E8221180.00100006.08050103.00800010.F2C30000.00000000.00000000.00000000

00000304 = E8321180.00100006.0C001003.00800010.F2C00000.00000000.00000000.00000000

00003F00 = 2C628086.00000006.06000002.00800000.00000000.00000000.00000000.00000000

00003F01 = 2D018086.00000006.06000002.00800000.00000000.00000000.00000000.00000000

00003F10 = 2D108086.00000006.06000002.00800000.00000000.00000000.00000000.00000000

00003F11 = 2D118086.00000006.06000002.00800000.00000000.00000000.00000000.00000000

00003F12 = 2D128086.00000006.06000002.00800000.00000000.00000000.00000000.00000000

00003F13 = 2D138086.00000006.06000002.00800000.00000000.00000000.00000000.00000000

--------

 

---------------------------

 

Monitor #1 [Real-time 0x0100]

Manufacturer............. LGD

Plug and Play ID......... LGD029E

Data string.............. P727R€156WD1

Serial number............ n/a

Manufacture date......... 2009, ISO week 0

-------------------------

EDID revision............ 1.4

Input signal type........ Digital (DisplayPort)

Color bit depth.......... 6 bits per primary color

Color encoding formats... RGB 4:4:4

Screen size.............. 340 x 190 mm (15,3 in)

Power management......... Not supported

Extension blocs.......... None

-------------------------

DDC/CI................... Not supported

 

Color characteristics

Default color space...... Non-sRGB

Display gamma............ 2,20

Red chromaticity......... Rx 0,617 - Ry 0,349

Green chromaticity....... Gx 0,314 - Gy 0,597

Blue chromaticity........ Bx 0,151 - By 0,057

White point (default).... Wx 0,313 - Wy 0,329

Additional descriptors... None

 

Timing characteristics

Range limits............. Not available

GTF standard............. Not supported

Additional descriptors... None

Preferred timing......... Yes

Native/preferred timing.. 1600x900p at 60Hz

Modeline............... "1600x900" 96,000 1600 1648 1680 1728 900 903 908 926 -hsync -vsync

Detailed timing #1....... 1600x900p at 40Hz

Modeline............... "1600x900" 64,200 1600 1648 1680 1740 900 903 908 922 -hsync -vsync

 

Standard timings supported

 

Report information

Date generated........... 17.10.2010

Software revision........ 2.52.0.857

Data source.............. Real-time 0x0100

Operating system......... 5.1.2600.2.Service Pack 3

 

Raw data

00,FF,FF,FF,FF,FF,FF,00,30,E4,9E,02,00,00,00,00,00,13,01,04,95,22,13,78,02,1B,E5,9E,59,50,98,26,

0E,50,54,00,00,00,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,80,25,40,80,60,84,1A,30,30,20,

35,00,58,C2,10,00,00,18,14,19,40,8C,60,84,16,30,30,20,35,00,58,C2,10,00,00,18,00,00,00,FE,00,50,

37,32,37,52,80,31,35,36,57,44,31,0A,00,00,00,00,00,00,41,31,19,00,00,00,00,09,01,0A,20,20,00,DA

 

 

Thanks

Link to comment
Share on other sites

I also have life battery trouble under OSX about 5 hours, Seven or Linux is 9 hours. ( Battery 9 cells )

Try check your SMBUS (SBUS) & LPC device in DSDT. SBUS communicate with thermal sensors, fan control, etc. LPC also does the same thing. If Mac OS X read sensors correctly, it will improve power management & this will increase the battery life/usage to almost similar what you get in windows. LPC can make the processor run much cooler. So basically, make sure AppleSMBUS* & AppleLPC kexts is loaded. I believe you already know this.

 

Raw data

00,FF,FF,FF,FF,FF,FF,00,30,E4,9E,02,00,00,00,00,00,13,01,04,95,22,13,78,02,1B,E5,9E,59,50,98,26,

0E,50,54,00,00,00,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,80,25,40,80,60,84,1A,30,30,20,

35,00,58,C2,10,00,00,18,14,19,40,8C,60,84,16,30,30,20,35,00,58,C2,10,00,00,18,00,00,00,FE,00,50,

37,32,37,52,80,31,35,36,57,44,31,0A,00,00,00,00,00,00,41,31,19,00,00,00,00,09,01,0A,20,20,00,DA

Thanks. I'll start working on it as soon as possible.

Link to comment
Share on other sites

...

 

Thanks. I'll start working on it as soon as possible.

I wonder what you are going to change :unsure:

 

p.s. People with NVIDIA graphics might want to try:

30 49 01 01 01 00 08 00 00 00 00 00 00 00 00 00 FF FF FF FF

To see if this selects the other GPU (found in AppleIntelHDGraphicsFB.kext).

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...