Jump to content

Mobility Radeon HD 4650:Full Resolution with QE & CI working on Internal LVDS screen


mucha
 Share

696 posts in this topic

Recommended Posts

Hi currently I'm using chameleon with lion osx .. currently I'm using shrike which already predefined by other people. they included the all the kext including the ati46000 controller and frame buffer too.. problem that i having now is if i use GE=yes my lvds(internal screen) unable to show any display unless i plug in hdmi .. and strange yet the external screen doesn't have display . ..... and i don't know how to edit the hex code .. my laptop is dell xps 1640 with 4670 ati mobility 9488.. Please help me thanks..

Link to comment
Share on other sites

For reference, here is the respective part of my dsdt:

 

Device (PB2)
	    {
		    Name (_ADR, 0x00020000)

		    Method (_PRT, 0, NotSerialized)
		    {
			    If (GPIC)
			    {
				    Return (Package (0x04)
				    {
					    Package (0x04)
					    {
						    0xFFFF,
						    Zero,
						    Zero,
						    0x12
					    },
					    Package (0x04)
					    {
						    0xFFFF,
						    One,
						    Zero,
						    0x13
					    },
					    Package (0x04)
					    {
						    0xFFFF,
						    0x02,
						    Zero,
						    0x10
					    },
					    Package (0x04)
					    {
						    0xFFFF,
						    0x03,
						    Zero,
						    0x11
					    }
				    })
			    }
			    Else
			    {
				    Return (Package (0x04)
				    {
					    Package (0x04)
					    {
						    0xFFFF,
						    Zero,
						    LNKC,
						    Zero
					    },
					    Package (0x04)
					    {
						    0xFFFF,
						    One,
						    LNKD,
						    Zero
					    },
					    Package (0x04)
					    {
						    0xFFFF,
						    0x02,
						    LNKA,
						    Zero
					    },
					    Package (0x04)
					    {
						    0xFFFF,
						    0x03,
						    LNKB,
						    Zero
					    }
				    })
			    }
		    }
		    Device (DVGA)
		    {
			    Name (_ADR, Zero)
			    Name (SWIT, One)
			    Name (CRTA, One)
			    Name (LCDA, One)
			    Name (TV0A, One)
			    Name (HDTV, One)
			    Name (CV0A, One)
			    Method (_DSM, 4, NotSerialized)
			  {
				  Store (Package (0x02)
					 {
						 "AAPL,DualLink",
						 Buffer (0x04)
						 {
							 0x01, 0x00, 0x00, 0x00
						 }
					 }, Local0)
				  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				  Return (Local0)
			  }					
			 Method (_STA, 0, NotSerialized)
			    {
				    Return (0x0F)
			    }
			    Name (_PSC, Zero)
			    Method (_PS0, 0, NotSerialized)
			    {
				    Store (Zero, _PSC)
			    }
			    Method (_PS3, 0, NotSerialized)
			    {
				    Store (0x03, _PSC)
			    }
			    Method (_DOS, 1, NotSerialized)
			    {
				    Store (And (Arg0, 0x03), SWIT)
			    }
			    Method (_DOD, 0, NotSerialized)
			    {
				    Return (Package (0x05)
				    {
					    0x00010100,
					    0x00010110,
					    0x00010200,
					    0x00010210,
					    0x000101F0
				    })
			    }
			    Device (CRT)
			    {
				    Name (_ADR, 0x0100)
				    Method (_DCS, 0, NotSerialized)
				    {
					    Store ("CRT -- _DCS", Debug)
					    If (CRTA)
					    {
						    Return (0x1F)
					    }
					    Else
					    {
						    Return (0x1D)
					    }
				    }
				    Method (_DGS, 0, NotSerialized)
				    {
					    Store ("CRT -- _DGS", Debug)
					    If (CRTA)
					    {
						    Return (One)
					    }
					    Else
					    {
						    Return (Zero)
					    }
				    }
				    Method (_DSS, 1, NotSerialized)
				    {
					    Store ("CRT -- _DSS", Debug)
				    }
			    }
			    Device (TV0)
			    {
				    Name (_ADR, 0x0200)
				    Method (_DCS, 0, NotSerialized)
				    {
					    Store ("TV -- _DCS", Debug)
					    If (TV0A)
					    {
						    Return (0x1F)
					    }
					    Else
					    {
						    Return (0x1D)
					    }
				    }
				    Method (_DGS, 0, NotSerialized)
				    {
					    Store ("TV -- _DCS", Debug)
					    If (TV0A)
					    {
						    Return (One)
					    }
					    Else
					    {
						    Return (Zero)
					    }
				    }
				    Method (_DSS, 1, NotSerialized)
				    {
					    Store ("TV -- _DSS", Debug)
				    }
			    }
			    Device (LCD)
			    {
				    Name (_ADR, 0x0110)

			  Method (_DCS, 0, NotSerialized)
				    {
					    Store ("LCD -- _DCS", Debug)
					    If (LCDA)
					    {
						    Return (0x1F)
					    }
					    Else
					    {
						    Return (0x1D)
					    }
				    }
				    Method (_DGS, 0, NotSerialized)
				    {
					    Store ("LCD -- _DCS", Debug)
					    If (LCDA)
					    {
						    Return (One)
					    }
					    Else
					    {
						    Return (Zero)
					    }
				    }
				    Method (_DSS, 1, NotSerialized)
				    {
					    Store ("LCD -- _DSS", Debug)
				    }
				    Method (_BCL, 0, NotSerialized)
				    {
					    If (LEqual (TPOS, 0x40))
					    {
						    Return (BCLT)
					    }
					    Return (Package (0x02)
					    {
						    Zero,
						    Zero
					    })
				    }
				    Method (_BCM, 1, NotSerialized)
				    {
					    If (LEqual (TPOS, 0x40))
					    {
						    SBCM (Arg0)
					    }
				    }
				    Method (_BQC, 0, NotSerialized)
				    {
					    If (LEqual (TPOS, 0x40))
					    {
						    Return (GBQC ())
					    }
					    Return (Zero)
				    }
			    }
			    Device (HDMI)
			    {
				    Name (_ADR, 0x0210)
				    Method (_DCS, 0, NotSerialized)
				    {
					    Store ("HDMI TV -- _DCS", Debug)
					    If (HDTV)
					    {
						    Return (0x1F)
					    }
					    Else
					    {
						    Return (0x1D)
					    }
				    }
				    Method (_DGS, 0, NotSerialized)
				    {
					    Store ("HDMI TV -- _DCS", Debug)
					    If (HDTV)
					    {
						    Return (One)
					    }
					    Else
					    {
						    Return (Zero)
					    }
				    }
				    Method (_DSS, 1, NotSerialized)
				    {
					    Store ("HDMI TV -- _DSS", Debug)
				    }
			    }
			    Device (CVTV)
			    {
				    Name (_ADR, 0x01F0)
				    Method (_DCS, 0, NotSerialized)
				    {
					    Store ("Composite Video -- _DCS", Debug)
					    If (CV0A)
					    {
						    Return (0x1F)
					    }
					    Else
					    {
						    Return (0x1D)
					    }
				    }
				    Method (_DGS, 0, NotSerialized)
				    {
					    Store ("Composite Video -- _DCS", Debug)
					    If (CV0A)
					    {
						    Return (One)
					    }
					    Else
					    {
						    Return (Zero)
					    }
				    }
				    Method (_DSS, 1, NotSerialized)
				    {
					    Store ("Composite Video -- _DSS", Debug)
				    }
			    }
		    }
	    }

Link to comment
Share on other sites

I've modified it now, so it looks like this:

 

 

Device (DVGA)
					    {
							    Name (_ADR, Zero)
							    Name (SWIT, One)
							    Method (_DSM, 4, NotSerialized)
							    {
									  Store (Package (0x02)
											 {
                                                        "@0,AAPL,DualLink",
													 Buffer (0x04)
													 {
															 0x01, 0x00, 0x00, 0x00
													 }
											 }, Local0)
									  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
									  Return (Local0)
							    }
							    Name (CRTA, One)
							    Name (LCDA, One)
							    Name (TV0A, One)
							    Name (HDTV, One)
							    Name (CV0A, One)

The screen is still blacklit, although when I vnc into the system and open up IORegExplorer I can see under port 0 (LVDS) the Line: AAPL,DualLink 0x01, 0x00, 0x00, 0x00

Link to comment
Share on other sites

I've changed my LVDS code to 02 00 00 00 40 00 00 00 09 01 00 00 12 01 00 07. Now I get an image on internal screen but the colors are wrong and I got flickering horizontal lines

 

The problem is certainly with the hex. These people who had a similar problem get a solution: http://www.insanelymac.com/forum/index.php?showtopic=269163&hl=%2B4670+%2Bmobility&fromsearch=1

Link to comment
Share on other sites

I tried to change the hex further. I switched control flag from 40 00 to 00 01: Blackscreen. I changed Transmitter from UNIPHY2 to UNIPHY1 and UNIPHY: Blackscreen. I changed Encoder from 01 to others: Blackscreen. I tried installing ATY_Init.kext as posted in the Thread you linked but it seems it doesn't do anything

Link to comment
Share on other sites

I tried to change the hex further. I switched control flag from 40 00 to 00 01: Blackscreen. I changed Transmitter from UNIPHY2 to UNIPHY1 and UNIPHY: Blackscreen. I changed Encoder from 01 to others: Blackscreen. I tried installing ATY_Init.kext as posted in the Thread you linked but it seems it doesn't do anything

 

Welcome to the club! I pretty much ran out of all possible combinations and permutations (along with wall space to run my head into...) myself, with the same result as yours: either a blank screen, or a greenish looking screen (with QE/CI) with lots of "noise". I have worked on a different solution for the past couple of weeks, one which involves only DSDT patching. I am helping a fellow member here with an ATI Personality Generator (http://www.insanelymac.com/forum/index.php?showtopic=270527&view=findpost&p=1782048). I believe there are quite a few combinations of connectors, encoders, and transmitters that we don't even know about yet. I've been trying to find official documentation (from Apple or one of the major vendors of supported video cards) on the structure of a framebuffer personality, but alas I have yet to find anything useful. Let me know if you come across something interesting. Let's work together, I am determined to make this darn thing work...it's become "personal" now...

  • Like 1
Link to comment
Share on other sites

What I find interesting is: If I use the chameleon bootloader file that crazybirdy provides in Post #20 of this thread (which forces Peregrine and therefore RadeonFramebuffer) I still have lots of "noise" on the screen but the colors are correct. If I use any other Bootloader file with RadeonFramebuffer it's the same as it is now (wrong colors + noise)

Link to comment
Share on other sites

Sure, just patch the right Framebuffer

is there any way to use this method for 6650m (6xxx) ??

 

 

i couldnt find any right framebuffer ,, i have 3 ati kexts laoding , only framebuffer doesnt load/work,,,, any idea how to make it work with 6650m ?

Link to comment
Share on other sites

What I find interesting is: If I use the chameleon bootloader file that crazybirdy provides in Post #20 of this thread (which forces Peregrine and therefore RadeonFramebuffer) I still have lots of "noise" on the screen but the colors are correct. If I use any other Bootloader file with RadeonFramebuffer it's the same as it is now (wrong colors + noise)

That´s a puzzle. I have found that if you plug only the vga it remains black, but if you plug the hdmi it works. Maybe the problem is around the relation betwen the LVDs port and the DVI port (my card has 4 output). I´m inclined to think that we need a personality that support 4 outputs.

Link to comment
Share on other sites

And none of the 46xx framebuffers do have 4 outputs. Maybe there is a way to force OS X to use a framebuffer from a different kext.

 

Also, I rechecked the thread you linked me and found two things:

1. The corrupted screen problem wasn't actually solved.

2. Hydrasworld uses 10.7.2. I have 10.6.8

 

I can't use Lion on my laptop as it has AMD cpu

Link to comment
Share on other sites

And none of the 46xx framebuffers do have 4 outputs. Maybe there is a way to force OS X to use a framebuffer from a different kext.

 

Also, I rechecked the thread you linked me and found two things:

1. The corrupted screen problem wasn't actually solved.

2. Hydrasworld uses 10.7.2. I have 10.6.8

 

I can't use Lion on my laptop as it has AMD cpu

I think that the solution is identical in both cases. I get corrupted screen when I use Chameleon; I get black screen with ATY. I too found that when the hex sequence is altered, the lcd image is altered.

Link to comment
Share on other sites

I have installed ATY_Init.kext

It doesn't load

 

verbose mode shows a message like "Coulsn't alloc class ATY_Init"

 

Silly question: You are using the dual-architectured (i386 + x86_64) ATY_Init right?

Link to comment
Share on other sites

Yes, the title is misleading in this matter. The same method can afaik be applied to all mobile Radeon cards which OS X has drivers for. I think that the thread title should be changed and also that a list which displays possible framebuffer - graphics chip combinations

 

:) Thanks ...

Link to comment
Share on other sites

 Share

×
×
  • Create New...