IPB

Welcome Guest!

Returning User? Login here.

Want membership privileges? Register here.

 
Start a new topic Add Reply
> [working] Gma X3100 On 64 Bit Snow Leopard With Dsdt Patch
slashack
post Nov 11 2009, 01:12 AM
Post #1
Ok, so I've managed to get my X3100 GMA working under Snow Leopard, in 64 bits mode.

Latest 10.6.2 update has 64 bits X3100 kext.

I've installed Snow on an inspiron 1420 using a preboot cd and a 10A432 retail DVD.

After reboot, only half screen showed up on my internal LCD. (The left one). After hours of searching, I was about to give up when I came across a post from flames in some well known forum (I don't remember posting politics in this forum, so I won't mention any other forum). He modified DSDT to make it work in a Toshiba L3xx series with device id 0x2A02 and revision id 0x0003. I've got device 0x2A02 revision 0x000C.

After 10.6 install, update to 10.6.2 following netkas instructions.

Then you'll need to patch DSDT with this:
CODE
Device (VID)
            {
                Name (_ADR, 0x00020000)
        /* patching starts here */    
                Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x30)
                                {
                                    "device_type",
                                    Buffer (0x08)
                                    {
                                        "display"
                                    },

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

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

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

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

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

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

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

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

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

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

                                    "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,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",
                                    Unicode (";"),
                                    "AAPL01,Stretched",
                                    Buffer (0x04)
                                    {
                                        0x00, 0x00, 0x00, 0x00
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                /* patching end here */


Maybe you'll have another video device (GFX, OVGA), just put it in the right place.

Then try and compile dsdt. If it says there's an error regarding DTGP, then it's because that method is not defined.

This is the DTGP method definition. Just insert it in the DSDT block definition. For example, just under _WAK method (i did that).
CODE
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)
    }


Then compile and place the dsdt.aml file in the right place. Reboot, and you'll have a working GMA X3100.


Credits go to flames and everyone who I've read and don't remember there user names.
------------
Please don't post "help me" or "thanks" posts. If you need help, please read the whole topic. If this topic helps you, post your device i, revision, Snow version, and notebook model (if someone else hasn't). It will help us to track which devices works, and wich doesnt.

---
Here's my DSDT. I strongly recommend not using it.
Attached File  dsdt.dsl.zip ( 17.2K ) Number of downloads: 301


This post has been edited by slashack: Nov 17 2009, 06:00 PM
Slice
post Nov 11 2009, 09:59 AM
Post #2
I know this patch http://www.projectosx.com/forum/index.php?...post&p=2934
but I still didn't publish it as ultimate result because the problem exists
CODE
Sep 26 21:16:49 HackBook kernel[0]: IG: Invalid firmware max backlight setting

And my backlight is not tuned by Control Panel.
Some values in the patch is wrong for my hardware.
For example
CODE
                                   "AAPL01,Height",
                                    Buffer (0x04)
                                    {
                                        0x20, 0x03, 0x00, 0x00    // value 0x0320 = 800
                                    },

but my screen is 1440x900
Other value is
CODE
                                   "AAPL01,InverterFrequency",
                                    Buffer (0x04)
                                    {
                                        0x08, 0x52, 0x00, 0x00
                                    },

Backlight intensity depends on the value. Other possible is 0x01aa - very far from here.
The related problem is SMC keys.
The driver AppleIntelGMAX3100FB asks for keys RPlt and EPCI.
If I set values "m71" and 3 I got AppleHWSensor attached to GPU. Key TG0P may return a temperature of GPU diode but there is no a glue between the sensor and kexts.
Пожалуйста, прочитайте ЧаВо!
My page
slashack
post Nov 11 2009, 05:29 PM
Post #3
I've got 1440x900 too, but back when I installed leopard to my notebook, many driver updates didn't worked for me. I always got half screen working, and stretched. If I attached an external monitor, then it worked just fine. But what's the point in getting a notebook if I have to carry an extra screen.
I thought there was no solution, but I find it. I'm sorry, but I don't understand russian, so that's why I didn't find it first.

Other issue I'm trying to fix, is that whenever I put my laptop to sleep, then I see nothing when it wakes up. But the screen backlight turns on. It also replyes ping commands. Some other guy reported that this happened whenever he tried to sleep in 64 bits mode only. 32 bits worked fine for him.

Are you aware of that issue?


Slice
post Nov 12 2009, 09:12 AM
Post #4
I got full sleep/wake in 10.6.1 with X3100 that 32-bits only. But with new kexts that 64-bit capable I never can wake. Black screen only.
So why I need to return to 10.6.1 and wait Apple to rewrite again this driver.
I hope that DSDT patch can help but I still had not find a solution.

To make internal screen working I delete CRT device from DSDT
http://www.projectosx.com/forum/index.php?showtopic=461
Пожалуйста, прочитайте ЧаВо!
My page
flames
post Nov 18 2009, 02:30 AM
Post #5
Slice: the problem "Invalid firmware max backlight setting" doesnt appear here. sorry, i didnt realised, that device pnlf was not present. with that devise in dsdt same error in log like slice said, and the backlight slider in systemprefs is always at maximum.

but you are right with the "AAPL01,Height", its unclean.
anyway the "AAPL01,Height" value doesnt affect the display in case it has correct edid information in ddc.
otherwise you need to correct it and maybe inject full edid information, like its done in macbook:

(here is the complete method taken from macbook 13inch, there the same method in DSDTSE from EvOSX86 Team)
CODE
                      Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x54)
                            {

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

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

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

                                "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
                                },

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

                                "AAPL,backlight-control",
                                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)
                    }
                    }


edit: since 10.6.2 in 64bit mode here the same issue, doesn't wake up from sleep (black screen), and in 32 bit it takes about 5-8 minutes till laptop wakes up.
imho this is another problem and doesn't depend to graphics drivers, because the whole laptop doesnt wake. correct me if i am wrong.

This post has been edited by flames: Dec 4 2009, 12:15 PM
18seven
post Nov 18 2009, 11:37 PM
Post #6
I can say EDID injection does appear to work on my GMA950. [edit] Results I was seeing was due to "AAPL,HasPanel" injection, allowing me to remove device-properties from boot.plist. You may want to patch PNLF, if you have not already, to load AppleBacklight. However, atm for me, this appears only to enable lid0.

This post has been edited by 18seven: Nov 19 2009, 03:48 PM
Slice
post Nov 30 2009, 02:08 PM
Post #7
QUOTE (flames @ Nov 18 2009, 05:30 AM) *
Slice: the problem "Invalid firmware max backlight setting" doesnt appear here.
but you are right with the "AAPL01,Height", its unclean.
anyway the "AAPL01,Height" value doesnt affect the display in case it has correct edid information in ddc.
otherwise you need to correct it and maybe inject full edid information, like its done in macbook:

(here is the complete method taken from macbook 13inch, there the same method in DSDTSE from EvOSX86 Team)

edit: since 10.6.2 in 64bit mode here the same issue, doesn't wake up from sleep (black screen), and in 32 bit it takes about 5-8 minutes till laptop wakes up.
imho this is another problem and doesn't depend to graphics drivers, because the whole laptop doesnt wake. correct me if i am wrong.

My screen is 15" so these values is not good for me. I need own values but I don't know how can I get its.

I have no any problem with sleep/wake if I use X3100FB v1.6.2. But with 1.6.6 I have no wake. It is pure graphic's problem.
Пожалуйста, прочитайте ЧаВо!
My page
flames
post Dec 4 2009, 12:39 PM
Post #8
i checked all parameters separately, the only needed parameter is "AAPL01,DualLink", Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 }
here is my method _dsm for video

CODE
Method (_DSM, 4, NotSerialized)
                {
                    Store (Package ()
                        {
                            "device_type",
                            Buffer (0x07) { "display" },

                            "model",
                            Buffer (0x0B) { "Intel X3100" },

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

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

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

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


parameters haspanel and backlight-control are not needed (in my case at least, i left them for cosmetic purpose)

slice, since with only those few parameters you dont inject any wrong info for display, it could be the way for your 15inch lcd.
and thanks for your work in other topics, that helped me a lot to get through that smile.gif

we need solution for the backlight problem, wake up from sleep in 64bit and "unknown display" in sysprof+syspref
how to inject display name like "internal lcd" in method _dsm? i dont like the idea to rework and reinject the complete EDID info wink.gif

for beginners: pay attention, that this is still not the holy grail. there are different verions of x3100, and they have different issues...
blackscreen, sleep issue, artifactaly messed up image output.
and there are different solutions. in some cases its enough to delete device crt (and other output heads except of lcd, those could be crt, dvi, tvo (names could be different))
in other cases you need to inject your video with the above method _dsm and give correct parameters for the display.
and again in other cases you need to do both!

This post has been edited by flames: Dec 4 2009, 01:25 PM
flames
post Dec 4 2009, 01:38 PM
Post #9
QUOTE (Slice @ Nov 30 2009, 03:08 PM) *
My screen is 15" so these values is not good for me. I need own values but I don't know how can I get its.

I have no any problem with sleep/wake if I use X3100FB v1.6.2. But with 1.6.6 I have no wake. It is pure graphic's problem.


x3100fb version 1.6.2 is 64bit capable? if yes, please attach yours.
Slice
post Dec 6 2009, 09:15 AM
Post #10
QUOTE (flames @ Dec 4 2009, 04:38 PM) *
x3100fb version 1.6.2 is 64bit capable? if yes, please attach yours.

No, 1.6.2 is 32bits only.
The sleep is more important for me then 64bits so my working configuration is 32bit.
Пожалуйста, прочитайте ЧаВо!
My page
limonada
post Feb 20 2010, 04:13 PM
Post #11
Is it posible to make a dsdt patch to work with a GMA4500 card? The card works with pathced GMAX3100.kext, but just to get native resolution, no QE/CI. Maybe adding a DSDT patch we could fool the system to get the card recognised as a GMAX3100 card, and make it work with full QE/CI.
Any ideas?
Flee
post Mar 25 2010, 12:10 PM
Post #12
My gmax3100 works, but it shows up with a bunch of coma's at the end.

I attached my DSDT, if someone has any idea about that would be awesome. also attached screenshot.

My computer is a 17" and debated putting a wuxga monitor in it. The x3100 should handle that fine as well right?

also if someone is feeling a little bored and wants to clean up my dsdt more feel free. tongue.gif

Attached File  Screen_shot_2010_03_25_at_8.07.22_AM.png ( 28.38K ) Number of downloads: 183

Attached File  dsdt.aml.zip ( 13.03K ) Number of downloads: 92


This post has been edited by Flee: Mar 25 2010, 12:11 PM

Add Reply Start a new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members: