Jump to content

DSDT/Bios Modder needed: force VGA display out


Dyckyj
 Share

12 posts in this topic

Recommended Posts

Thanks to member 0xdeadbeef I have almost been able to get my laptop (with mobile 2400xt) fully working. The only problem is that I need to be able to force vga output on boot so that when the os loads my internal display doesn't go to sleep. The option to select a display doesn't exist in my bios.

The bios is available here: http://support.acer-euro.com/drivers/notebook/tm_7720.html

I attached my dsdt

dsdt.aml.txt

Link to comment
Share on other sites

Thanks to member 0xdeadbeef I have almost been able to get my laptop (with mobile 2400xt) fully working. The only problem is that I need to be able to force vga output on boot so that when the os loads my internal display doesn't go to sleep. The option to select a display doesn't exist in my bios.

The bios is available here: http://support.acer-euro.com/drivers/notebook/tm_7720.html

I attached my dsdt

Anyone? As long as I get the display to somehow not go to sleep I should be good

Link to comment
Share on other sites

its the _DOD

            Device (PEGP)
           {
               Name (_ADR, 0x00010000)
               Method (_STA, 0, NotSerialized)
               {
                   If (IGDS)
                   {
                       Return (0x00)
                   }
                   Else
                   {
                       Return (0x0F)
                   }
               }

               Device (VGA)
               {
                   Name (_ADR, 0x00)
                   Method (_DOS, 1, NotSerialized)
                   {
                       Store (And (Arg0, 0x03), DSEN)
                   }

                   Method (_DOD, 0, NotSerialized)
                   {
                       If (LEqual (PEGT, 0x03))
                       {
                           Return (Package (0x04)
                           {
                               0x00010100, 
                               0x00010200, 
                               0x00010118, 
                               0x00010120
                           })
                       }
                       Else
                       {
                           Return (Package (0x04)
                           {
                               0x00010100, 
                               0x00010200, 
                               0x00010110, 
                               0x00010210
                           })
                       }
                   }

                   Device (CRT)
                   {
                       Name (_ADR, 0x0100)
                       Method (_DCS, 0, NotSerialized)
                       {
                           PHSR (0x25, 0x00)
                           If (And (CSTE, 0x0101))
                           {
                               Return (0x1F)
                           }

                           Return (0x1D)
                       }

                       Method (_DGS, 0, NotSerialized)
                       {
                           If (And (NSTE, 0x0101))
                           {
                               Return (0x01)
                           }

                           Return (0x00)
                       }

                       Method (_DSS, 1, NotSerialized)
                       {
                           If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                           {
                               Store (NSTE, CSTE)
                           }
                       }
                   }

                   Device (LCD)
                   {
                       Method (_ADR, 0, NotSerialized)
                       {
                           If (LEqual (PEGT, 0x03))
                           {
                               Return (0x0118)
                           }
                           Else
                           {
                               Return (0x0110)
                           }
                       }

                       Method (_DCS, 0, NotSerialized)
                       {
                           PHSR (0x25, 0x00)
                           If (And (CSTE, 0x0808))
                           {
                               Return (0x1F)
                           }

                           Return (0x1D)
                       }

                       Method (_DGS, 0, NotSerialized)
                       {
                           If (And (NSTE, 0x0808))
                           {
                               Return (0x01)
                           }

                           Return (0x00)
                       }

                       Method (_DSS, 1, NotSerialized)
                       {
                           If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                           {
                               Store (NSTE, CSTE)
                           }
                       }

                       Method (_DDC, 1, NotSerialized)
                       {
                           If (LEqual (Arg0, 0x01))
                           {
                               Return (\_SB.PCI0.PEGP.VGA.DDC4)
                           }

                           If (LEqual (Arg0, 0x02))
                           {
                               Concatenate (\_SB.PCI0.PEGP.VGA.DDC4, \_SB.PCI0.PEGP.VGA.DDC0, Local0)
                               Return (Local0)
                           }

                           Return (0x00)
                       }

if still no go IGDS line in PEGP must return 0x0f to turn on pegp

Link to comment
Share on other sites

its the _DOD

 

if still no go IGDS line in PEGP must return 0x0f to turn on pegp

Thanks for helping, unfortunately it isn't working for me... I might to a clean install of Leopard sometime this week and see if it helps

2 Questions:

Should I be trying this with external vga/dummy plugged in or out?

and when you say that the IGDS line in PEGP must return 0x0f to turn on pegp what exactly are you referring to

            Device (PEGP)
           {
               Name (_ADR, 0x00010000)
               Method (_STA, 0, NotSerialized)
               {
                   If (IGDS)
                   {
                       Return (0x00) ---> do I change it to: Return (0x0f)
                   }
                   Else
                   {
                       Return (0x0F)
                   }

EDIT: tried it and it didn't work

Another Question: I've taken out my no-hotplug-support, no-hotplug-interrupt, and @0,display-link-component-bits flags out of my efi string (for more info see the other thread) would any of those be needed?

Link to comment
Share on other sites

im not an ATi specialist. but i do recognize _DOD is your issue. the CRT 200 and the LCD have address 118 or 110

furthermore i dont know if enable IGDS integrated graphics or PEGP is the way to fix. ill see what enables IGDS or PEGP .and we try both.. 1 at a time.

 

0x0f means enabled

 

try removing the CRT entry and the addr corresponding in _DOD

 

 

was your dsdt changed in any way ? or original ? i see gfx0 with a very complex ndid . and in pegp i see VGA which has _DOD with CRT .

 

i had issues in my inspiron 1520 win nvidia and crt aka VGA blue port wanting to be primary display.

 

so i switched order of _DOD tobe LCD first.

but in your case i think PEGT is the way to enable PEGP :D so many acronyms.. its cause hdmi and ati multiple gpu congif. confusing ..

try this.. i removed (CRT)

and fixed PEGP

            Device (PEGP)
           {
               Name (_ADR, 0x00010000)
               Method (_STA, 0, NotSerialized)
                   {
                       Return (0x0F)
               }

Link to comment
Share on other sites

Once again thanks for helping, but its still no go. When your screen went black did your computer go to sleep (cpu fan die down)? I'm not sure that my problem is completely due to the internal screen...

EDIT: the dsdt was from Ubuntu

Link to comment
Share on other sites

sorry i know im near. but i think what enables PEGP isnt enabling it .. instead it enables GFX0 aka IGDS ? not sure but it does look somewhat familiar with my dsdt.. but more complex.

Link to comment
Share on other sites

sorry i know im near. but i think what enables PEGP isnt enabling it .. instead it enables GFX0 aka IGDS ? not sure but it does look somewhat familiar with my dsdt.. but more complex.

 

 

hi LatinMcGyver75,

 

I see you are very expert in dsdt and graphics card...could you kindly help us on this as I think the problem it's quite similar the one you had

 

http://www.insanelymac.com/forum/index.php?showtopic=223754

 

it's about i3/i5 integrated graphic card gma5700 id 0046 or 0042 for desktop

As you can see we got partial qe/ci but as soon as we load AppleIntelHDGraphicsFB.kext and AppleIntelHDGraphicsGA.plugin we just got a black screen...the lcd is working as I can see light from it and when macosx load it's just turn off then go white and suddely black in just few millisec and it remains black

 

vnc connection is working and with that we can get full graphic acceleration...but internal lcd won't show up anything but black

 

I tried _dod method and others but i'm not expert in dsdt patching so I think I didn't do the right steps

 

here attached my dsdt that maldon kindly made me...if you can find a solution I 'll be very gratefull...by the way I have intel hd 5700 and ati 5470M..I can load all kexts but screen just stays black

 

thank you very much

Marco

dsdt.aml.zip

Link to comment
Share on other sites

ill give it a shot .. but im not totaly sure of all aspects of fixing the issue.

 

to me it sounds like its not supported by the framebuffer.

anyways i changed

                    Method (_DOD, 0, NotSerialized)
                   {
                       Return (Package (0x03)
                       {
                           0x00010110, 
                           0x00010100, 
                           0x00010210
                       })
                   }

if problems then remove

                    Device (CRT)
                   {
                       Name (_ADR, 0x0100)
                       Method (_DCS, 0, NotSerialized)
                       {
                           If (CRTA)
                           {
                               Return (0x1F)
                           }
                           Else
                           {
                               Return (0x1D)
                           }
                       }

                       Method (_DGS, 0, NotSerialized)
                       {
                           If (CRTA)
                           {
                               Return (One)
                           }
                           Else
                           {
                               Return (Zero)
                           }
                       }

                       Method (_DSS, 1, NotSerialized)
                       {
                       }
                   }

and

							0x00010100,

which belongs to _ADR, 0x0100 of the CRT

 

further inspecting i find GFX0 _DOD had a external call to enable it

External (IDAB, MethodObj) // 0 Arguments

 

which is in an SSDT-

morkb.aml.zip

Link to comment
Share on other sites

hi LatinMcGyver75,

 

thank you very much..I will try this evening!

 

by teh way what about this I have to do something?

 

further inspecting i find GFX0 _DOD had a external call to enable it

External (IDAB, MethodObj) // 0 Arguments

 

which is in an SSDT-

 

 

thank you very much..really appreciate!

Link to comment
Share on other sites

means it has something controlling it not in dsdt but in ssdt . might be ok if we find the proper sequence of enabling or skipping checks for the devices.

i might need an ioregdump since u have access in vnc. or i can help in vnc.

Link to comment
Share on other sites

Hi LatinMcGyver75,

 

thank you very much for your help and sorry for reply so late but snow leoprad doesn't give black screen again..I should have changed some kexts...I have to take a back up from time machine...so I wasn't able to test your dsdt yet

 

Anyway...I will fix the issue and I will come back to you soon....No problem for me to let you connect through vnc but I think we have a time zone problem...you are from usa...I'm from Italy!

 

I think maybe a ioregdump is easier...what kind of dump do you need..if you have a special terminal command to use please let me know...otherwise I could also use the runme script that maldon sent me..it will give you full ioreg and other stuffs

 

what do you think?

 

thank you very much

Marco

 

...Fixed I had to load a gfx string in boot plist before..i forgot it

Link to comment
Share on other sites

 Share

×
×
  • Create New...