Jump to content

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


696 posts in this topic

Recommended Posts

Okay, I've played around with that a bit. I tried putting the Dual-Link code under DVGA and even under LCD. None worked, or maybe I made an mistake.

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..

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)
				    }
			    }
		    }
	    }

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

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

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

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

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

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)

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 ?

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.

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

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.

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?

I tried with ATY_Init again. Now Snow Leopard refuses to successfully boot up at all, no matter what boot parameters I use. So I went in single user and deleted ATY_Init and the kext cache. No change

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

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 ...

×
×
  • Create New...