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

Many thanks to bcc9 :thumbsup_anim: for his genius discovery and for his method for finding and editing framebuffer personalities

I was planning to add this to bbc9 topics, but i couldn't add a replay only a new topic in new users lounge is allowed for me (I'm a member since 2006 ),so if a moderator can attach it it's welcome.

Most credit should go to bcc9 (radeondump & tutorial) & Dong (RadeonHD), this was not possible without his finding ,a previous knowledge of bbc9 method with some basic binary editing and terminal skills is a must have.

Sorry for my bad English and my Bad teaching skills, the most important is the idea.

Any additional useful information and feed-back is welcome

The bootlaoder is chameleon rev 747 with modded ati.c with corrected default framebuffer to Shrike and model name for my DeviceId: 0x9480 (Kabyl boot file is no go for me).

 

The Guide (HowTo.rtf outdated ) in the attachements with some usefull files for quick editing

 

I have received many PM from people asking for my patched kext, i have uploaded them with my boot file, remember those files are specific for Mobility Radeon 4650 on a HP Pavilion DV6 series & there is NO guaranty they will work on other models

 

http://www.megaupload.com/?d=4SN7VDMK

http://hotfile.com/dl/113477176/da80b51/ATI.zip.html

 

Updates:

 

1- the same method is tested in Mac OS X version 10.6.3 & the lastest update 10.6.7 and i report it's working perfectly for both

 

2- for the 10.6.3 system the personnality is 20 bytes (the SenseID byte is replaced by i2cid & SenseID is 4 bytes);

 

a-the original 10.6.3 Shrike ConnectorInfo:

 

02 00 00 00 40 00 00 00 09 00 00 00 02 01 00 00 03 00 00 00 
02 00 00 00 00 01 00 00 09 01 00 00 20 01 02 91 02 00 00 00 
00 04 00 00 04 03 00 00 00 01 00 00 10 00 01 90 01 00 00 00

 

b-My modded working 10.6.3 Shrike ConnectorInfo :

 

02 00 00 00 40 00 00 00 09 00 00 00 12 00 00 96 07 00 00 00 
10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 95 06 00 00 00 
00 08 00 00 00 02 00 00 00 01 00 00 20 01 02 90 01 00 00 00

 

3- About the 10.6.7 Update:

 

a-ConnectorInfo are located in ATIFramebuffer.kext for the general combo update (the same as 10.6.6 system)

b-ConnectorInfo have migrated to ATIControlerXXXX.kext for 2011 MBP update (the kernel & ATi Drivers structure are closer to Lion 10.7 than to 10.6.6),

ATIController4600.kext contain only Shrike, Flicker & Gliff ConnectorInfo (which theorically restrict the possible framebuffer to use with a specific controller.kext)

ATIController4800.kext contain only Cardinal,Motmot & Quail ConnectorInfo.

 

The Online guide:

 

A- The Structure of a personality:

 

I'll take Shrike as framebuffer for the demonstration, cause it's used as default by Radeon HD 4670 (M96XT, DevID 0x9488 ) on iMac 10,1 & iMac11,2

which is the closest to the Mobility Radeon HD 4650 (M96, DevID 0x9480) on my board.

 

for Shrike we have by default 3 personalities , one for each connector (3 connectors allowed): port0, port1, port2.

 

02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 03

02 00 00 00 00 01 00 00 09 01 00 00 20 01 02 02

00 04 00 00 04 03 00 00 00 01 00 00 10 00 01 01

 

let's take the first one which is for port 0 :

 

02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 03

 

divide it to 8 parts:

 

02 00 00 00 - 40 00 00 00 - 09 01 - 00 00 - 02 - 01 - 00 - 03

 

Then byte swapped

 

1- ConnectorType : 02 00 00 00 > 0x00000002 - - -

2- ATY,ControlFlags : 40 00 00 00 > 0x00000040 +++

3- Features : 09 01 > 0x0109 +++

4- Unkown : 00 00 > 0x0000 - - -

5- Transmitter : 02 > 0x02 - - -

6- Encoder : 01 > 0x01 - - -

7- HotplugID : 00 > 0x00 - - -

8- SenseID : 03 > 0x03 ++++++

 

- - - > Value not important, but need to be accurate for better result

+++ > Important value, incorrect value == not working personality

 

Detailed info about possible value for each field is list below ( some are confirmed, some only guessed by studying different personalities and need some feed-back

from working system (for me LVDS and VGA value are confirmed)

 

1- ConnectorType;

 

/* 4 byte  ,from bbc9 radeondump */
	 #define CONNECTORTYPE_LVDS   0x00000002	
	 #define CONNECTORTYPE_DVI	  0x00000004
	#define CONNECTORTYPE_VGA	  0x00000010
	#define CONNECTORTYPE_S-V	  0x00000080		
	#define CONNECTORTYPE_DP	  0x00000400	
	 #define CONNECTORTYPE_HDMI   0x00000800

 

2- ATY,ControlFlags;

 

/* 4 byte the same as found on ioreg key: ATY,ControlFlags. hardcoded for each connector type 
u can try one by one until u find the working one for u
0x0002 : LVDS		>	ControlFlag : 0x0040 / 0x0100
0x0004 : DVI-?		>	ControlFlag : 0x0016 - 0x0014 / 0x214
0x0010 : VGA		>	ControlFlag : 0x0010
0x0080 : S-Video   	>	ControlFlag : 0x0002	  
0x0200 : DVI-?		>	ControlFlag : 0x0014 / 0x0214 - 0x0204
0x0400 : DisplayPort	>	ControlFlag : 0x0100 - 0x0104 - 0x0304 / 0x0604 - 0x0400
0x0800 : HDMI		>	ControlFlag : 0x0200
0x1000 : DVI-?		>	ControlFlag : 0x0016
*/

 

3-Features;

 

/* Features byte 0 , for example for LVDS screen it's almost 0x09 = 0x01 + 0x08 > Internal + Backlight */
#define FEATURE_USE_INTERNAL	   		0x01
#define FEATURE_USE_RGB_ON_YUV		0x04
#define FEATURE_USE_BACKLIGHT		  0x08
#define FEATURE_BACKLIGHT_INVERTED 	0x10
#define FEATURE_USE_CLAMSHELL		  0x20

/* 1 byte, hardcoded for each connector type
0x0002 : LVDS		>	Features  :  0x09
0x0004 : DVI-?		>	Features  :  0x00
0x0010 : VGA		>	Features  :  0x00
0x0080 : S-Video   	>	Features  :  0x04	 
0x0200 : DVI-?		>	Features  :  0x00
0x0400 : DisplayPort	>	Features  :  0x00
0x0800 : HDMI		>	Features  :  0x00
0x1000 : DVI-?		>	Features  :  0x00
*/

/* Features byte 1 , no idea ???*/

 

4- Unkown ;

 

5- Transmitter;

 

/* u can get this from dmesg after installing  Dong's RadeonHD with debug info */ 
/* Transmitter Bits 0-3 (TransmitterID) */
#define UNIPHY	  0x00
#define UNIPHY1   0x01
#define UNIPHY2   0x02

/* Transmitter Bits 4-7 (LinkID) */
#define DUALLINK  0x00 // LINKA + LINKB
#define LINKA		  0x10
#define LINKB		  0x20

/* Transmitter byte  */
#define UNIPHYA	 0x10 // = UNIPHY:LINKA
#define UNIPHYB	 0x20 // = UNIPHY:LINKB
#define UNIPHYAB   0x00 // = UNIPHY:DUALLINK
#define UNIPHYC	 0x11 // = UNIPHY1:LINKA
#define UNIPHYD	 0x21 // = UNIPHY1:LINKB
#define UNIPHYCD   0x01 // = UNIPHY1:DUALLINK
#define UNIPHYE	 0x12 // = UNIPHY2:LINKA
#define UNIPHYF	  0x22 // = UNIPHY2:LINKB
#define UNIPHYEF	0x02 // = UNIPHY2:DUALLINK
#define DACA			  0x00
#define DACB		  0x10

 

 

6- Encoder;

 

/* u can get this from Dmesg as above  for R8XX architecture and above there is 06 Digital Encoder: DIG_1 > DIG_6*/ 
/* Encoder Bits 0-3 (DIG_ID : Digital) */
#define DIG1   0x00 // = DIGA
#define DIG2   0x01 // = DIGB
#define DIG3   0x02 // = DIGC  Only for Radeon HD 5XXX Series  and above
#define DIG4   0x03 // = DIGD  Only for Radeon HD 5XXX Series  and above
#define DIG5   0x04 // = DIGE  Only for Radeon HD 5XXX Series  and above
#define DIG6   0x05 // = DIGF  Only for Radeon HD 5XXX Series  and above

/* Encoder Bits 4-7 (DAC_ID : Analog) */
#define DAC	 0x10

 

7- HotplugID;

 

/* 4 bits it's a unique id for each port, i have tried with 0 for port0, 1 for port1 and 2 for port2 and it's just working */

 

8- SenseID;

 

 /* SenseLine = (i2cid & 0xf) +1 ,you get  i2cid from bbc9 radeondump */   
 Bits 0-3: Sense Line   
 Bit	4: Use hw i2c flag

 

Now to some practice

 

 

B- Getting the ConnectorType, ATY,ControlFlags,Features, HotplugId and SenseLineId Values:

 

 

You will need :

1- videocard bios dump ( i have used everest for that and renamed it 1002_9480.rom ) ,

2- radeondump tool from bbc9

launch Terminal & type ./radeondump < your_videobios.rom > connector.txt

you will get something like this :

 

	Desktop Mucha$ ./radeondump < 1002_9480.rom 
ATOM BIOS Rom: 
SubsystemVendorID: 0x103c SubsystemID: 0x3629
IOBaseAddress: 0x7000
Filename: br33507.001 
BIOS Bootup Message: 
HP_Quanta_Jones_Cujo_M96M_DDR3 M96 DDR3 128bit 550e/667m					

Connector at index 0 type: LVDS (7)
Connector's i2cid: 96
Connector at index 1 type: VGA (1)
Connector's i2cid: 95
Connector at index 2 type: HDMI-A (11)
Connector's i2cid: 90

 

 

which means:

 

port0 > LVDS=0x00000002 - ControlFlag=0x0040 - Features = 0x09-------------------------HotplugId=0x00 - i2cid=96 > SenseLine = 0x07

port1 > VGA =0x00000010 - ControlFlag=0x0010 - Features = 0x00 ------------------------ HotplugId=0x01 - i2cid=95 > SenseLine = 0x06

port2 > HDMI=0x00000800 - ControlFlag=0x0200 - Features = 0x00 -------------------------HotplugId=0x02 - i2cid=90 > SenseLine = 0x01

 

 

C- Getting the Encoder & Transmitter ID Values:

 

 

For some useful info you may visit : "http://www.botchco.com/agd5f/?p=51"

and some Encoder-Transmitter Routing rules taking from commentary of linux drivers

"http://lxr.free-electrons.com/source/drivers/gpu/drm/radeon/radeon_encoders.c"

 

682 /*
683  * DIG Encoder/Transmitter Setup
684  *
685  * DCE 3.0/3.1 (RV6XX, Radeon HD 3XXX Series and older)
686  * - 2 DIG transmitter blocks. UNIPHY (links A and B ) and LVTMA.
687  * Supports up to 3 digital outputs
688  * - 2 DIG encoder blocks.
689  * DIG1 can drive UNIPHY link A or link B
690  * DIG2 can drive UNIPHY link B or LVTMA
691  *
692  * DCE 3.2 (RV7XX, Radeon HD 4XXX Series)
693  * - 3 DIG transmitter blocks. UNIPHY0/1/2 (links A and B ).
694  * Supports up to 5 digital outputs
695  * - 2 DIG encoder blocks.
696  * DIG1/2 can drive UNIPHY0/1/2 link A or link B
697  *
698  * DCE 4.0 (RV8XX, Radeon HD 5XXX Series)
699  * - 3 DIG transmitter blocks UNPHY0/1/2 (links A and B ).
700  * Supports up to 6 digital outputs
701  * - 6 DIG encoder blocks.
702  * - DIG to PHY mapping is hardcoded
703  * DIG1 drives UNIPHY0 link A, A+B
704  * DIG2 drives UNIPHY0 link B
705  * DIG3 drives UNIPHY1 link A, A+B
706  * DIG4 drives UNIPHY1 link B
707  * DIG5 drives UNIPHY2 link A, A+B
708  * DIG6 drives UNIPHY2 link B
709  *
710  * Routing
711  * crtc -> dig encoder -> UNIPHY/LVTMA (1 or 2 links)
712  * Examples:
713  * crtc0 -> dig2 -> LVTMA   links A+B -> TMDS/HDMI
714  * crtc1 -> dig1 -> UNIPHY0 link  B   -> DP
715  * crtc0 -> dig1 -> UNIPHY2 link  A   -> LVDS
716  * crtc1 -> dig2 -> UNIPHY1 link  B+A -> TMDS/HDMI
717  */

 

 

You need Dong's RadeonHD.kext , i have used the 10/20/2009 update, edit the info.plist to set the debug to true and verbose level to 2

then delete ATI4600 & ATIFramebuffer from S/L/E (make a back-up first) and install radeonHD reboot (your external VGA,DVI or HDMI screen most be connected)

once on desktop go to Terminal : sudo -s , type your password then dmesg >Encoder.txt

In my case i get as output:

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

CailWriteATIRegister(1724,40002)

CAIL: CailReleaseMemory

ParseTable said: CD_SUCCESS

Call to AtomBIOS Exec succeeded

DAC_LoadDetection Successful

rhdAtomBIOSScratchDACSenseResults

BIOSScratch_0: 0x40002

rhdAtomBIOSScratchDACSenseResults sensed RHD_SENSED_VGA

AtomOutputvalueDACA: Sensed Output: VGA

atomTMDSPropertyControl

atomTMDSPropertyControl

Setting AtomOutputvalueDACA to incoherent

atomTMDSPropertyControl

RHDConnectorEnableHDMI

atomTMDSPropertyControl

RHDHPDCheck

RHDHPDCheck returned: 0 mask: 1

RHDMonitorInit

rhdMonitorPanel

RHDAtomBiosFunc

rhdAtomLvdsGetTimings

rhdAtomLvdsTimings

rhdAtomLvdsTimings: LVDS Modeline: 1366x768 72000 1366 (1366) 1414 1446 (1486) 1486 768 (768) 771 775 (806) 806

Call to AtomBIOS Get Panel Mode succeeded

RHDAtomBiosFunc

rhdAtomLvdsGetTimings

rhdAtomLvdsDDC

rhdAtomLvdsDDC: unknown record type: 24

Query for AtomBIOS Get Panel EDID: failed

RHDAtomOutputAllocFree

Mapping DIG1 encoder to KLDSKP_UNIPHYE

Crtc[0]: found native mode from Monitor[LVDS Panel]:

Modeline "1366x768" 72 1366 1414 1446 1486 768 771 775 806

Connector "PANEL" uses Monitor "LVDS Panel":

RHDMonitorInit

Connector "VGA 1": Failed to retrieve Monitor information.

RHDValidateScaledToMode

rhdModeValidateCrtc

DxModeValid: ATOM CRTC 1

rhdAtomOutputModeValid

Listing modesetting layout:

ATOM CRTC 1: tied to Atom PLL 1 and LUT A:

Outputs: AtomOutputduleDemandUniphyE (PANEL)

ATOM CRTC 2: tied to Atom PLL 2 and LUT B:

Outputs: AtomOutputvalueDACA (VGA 1)

Unused Outputs: AtomOutputUniphyB

RHDModesPoolCreate

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

 

Based upon the above information my SPECIFIC videocard routing is:

 

CRTC0>DIG1>UNIPHYE>LVDS Encoder= 0x00 Transmitter = 0x12

CRTC1>DAC > DACA >VGA Encoder=0x10 Transmitter = 0x00

CRTC1>DIG2>UNIPHYB>HDMI Encoder= 0x01 Transmitter = 0x20 (i don't have a hdmi display to test)

 

Now doing the compilation , my new modded Shrike personalities :

 

02 00 00 00 40 00 00 00 09 01 00 00 12 00 00 07 LVDS

10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 06 VGA

00 08 00 00 00 02 00 00 00 01 00 00 20 01 02 01 HDMI

 

This mod allowed me to get both LVDS an VGA display working with Resolution change, QE/CI Extended desktop and Mirroring

I have tested the same mod with Peregrine and i confirm it's also Working.

 

 

D- How to Easy Quick Patch your desired Framebuffer personality (without calculating the adresses and for both i386 and x86_64):

 

 

You should have a hexadecimal editor:

 

1- Download the attached : Sharks_FB.txt Birds_FB.txt and Monkeys_FB.txt,

2- Open the text file select and copy the desired personality hexadecimal code (the one you want to patch),

3- Open ATIFramebuffer.kext and Drag ATIFramebuffer binary to hexadecimal editor,

4- Select : edit>search , in the search fields paste the clipboard content and choose hex value & wrap option,

5- You should find 2 instances of the searched personality: the first one is for x86_64 and the second for i386 (make sure you have only 2),

6- Patch and save your binary, install reboot an ENJOY

 

For Radeon HD 3XXX and prior choose Sharks,

For Radeon HD 4XXX choose Birds,

For Radeon HD 5XXX choose Monkeys.

post-71398-1300132327_thumb.png

post-71398-1300132511_thumb.png

post-71398-1300132614_thumb.png

post-71398-1300132697_thumb.png

post-71398-1300132748_thumb.png

HowTo.rtf

Sharks_FB.rtf

Birds_FB.rtf

Monkeys_FB.rtf

ATI_10.6.3.zip

ATI_10.6.6.zip

ATI_10.6.7.zip

boot_Mobility4650_Shrike.zip

  • Like 3
Link to comment
Share on other sites

i'm on the process of writing a guide for tonight or may be tomorrow

the method is based on bcc9 guide of editing the framebuffer personnality, i just found a way of getting the lastest piece of the puzzle

the byte link_i2cid or Transmitter and dac_digidx or Encoder

Link to comment
Share on other sites

Many thanks to bbc9 :wacko: for his genius discovery and for his method for finding and editing framebuffer personalities

unfortunately i can't post in the ATI graphic section cause i don't have suffisant privilege :)

the proof in the attachements

Impressive.

 

I will be glad to verify this works on other systems as I have been working on this problem forever.

 

And if you would like to add to the HD 4330 thread -- your hardware is similiar -- please do so.

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

Link to comment
Share on other sites

This is interesting. Looking forward to your guide. This will definitely make many people happy. :(

 

Congratulations for your succes

but your HDMI personality is totaly messed and it use the same link as ur LVDS which is not allowed, each connector must have it's own link

and it use a wrong encoder

let me explain

 

1- ATY,ControlFlags for HDMI is 0x200 and not 0x204

2- You are using a non existant encoder for HDMI output and a shared Transmitter with LVDS ==> Interference

 

LVDS: 02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 01 > DIG2>UNIPHY2>DUAL_LINK (A+B )>LVDS

HDMI: 00 08 00 00 04 02 00 00 00 01 00 00 22 05 05 02 > DIG6>UNIPHY2>LINK_B>HDMI

 

on RADEON HD 4XXX there is only 02 Digital Encoder DIG1 & DIG2 ,only RADEON HD 5XXX has 06 DIG1>DIG6

your LVDS is using UNIPHY2>LINK_B and your HDMI is using the Same link Which cause the interference

 

i want to post my reply in the apropriet topics on ATI Subforum, but i keep getting this error : Sorry, you do not have permission to reply to that topic

 

This really frustrating :)

Link to comment
Share on other sites

Congratulations for your succes

but your HDMI personality is totaly messed and it use the same link as ur LVDS which is not allowed, each connector must have it's own link

and it use a wrong encoder

let me explain

 

1- ATY,ControlFlags for HDMI is 0x200 and not 0x204

2- You are using a non existant encoder for HDMI output and a shared Transmitter with LVDS ==> Interference

 

LVDS: 02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 01 > DIG2>UNIPHY2>DUAL_LINK (A+B )>LVDS

HDMI: 00 08 00 00 04 02 00 00 00 01 00 00 22 05 05 02 > DIG6>UNIPHY2>LINK_B>LVDS

 

on RADEON HD 4XXX there is only 02 Digital Encoder DIG1 & DIG2 ,only RADEON HD 5XXX has 06 DIG1>DIG6

your LVDS is using UNIPHY2>LINK_B and your HDMI is using the Same link Which cause the interference

Thank you. ;)

 

I was only able to figure out the ATY,ControlFlags but thanks to your excellent guide I now can know the rest. I make the assumption ATY,ControlFlags for HDMI is 0x204 based on the IORegistry when I'm using 10.7 kexts which the external monitor connected to HDMI was working. I guess I'm wrong. :P

 

I have downloaded your guide but do not have the opportunity to read it yet. I will read it to figure out how to make HDMI working without the interference with LVDS.

Link to comment
Share on other sites

Many thanks -- I've been so close just could not figure transmitter, encoder, hotplug

 

I anticipate duplicating your success tonight.

 

Hopefully the moderators will promote you -- the board did not in years past keep people from posting in relevant sections. Probably 1 reason we aren't seeing the successes we saw years ago.

Link to comment
Share on other sites

I really hope this will work with Dell Studio 1555 here, too. (M92, Ati 45xx).

 

And I've got a question: Is it possible to add some kind of code-generator that will generate the right code for a graphics card without user interaction? (Would be great if it gets into [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] and [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] ;) )

Link to comment
Share on other sites

To all people asking for helps: 2 log files are need

 

1- radeondump (from bcc9) output of your videobios ==> to identify connectortype & SenseID

2- dmesg log after booting with Dong's radeonHD.kext (10/20/2009 update) installed & Debug flag set on Info.plist

with all possible output connected ==> to identify EncoderID & TransmitterID mapping to output

Link to comment
Share on other sites

Are there other ways to get transmitter and encoder? I think RadeonHD.kext may not compatible with ATI 6xxx. I've set it to debugmode and verbose=2. It show just a few lines in dmsg not look like what you post at all. Can we get these values from windows or linux?

Link to comment
Share on other sites

Many thanks to bcc9 :) for his genius discovery and for his method for finding and editing framebuffer personalities

unfortunately i can't post in the ATI graphic section cause i don't have suffisant privilege :)

the proof in the attachements

 

Many thanks for your guide.

 

I change the framebuffer to Peregrine for 4330.

 

Finally, my mobility radeon HD 4330 (1002_9552) is working with QE & CI on internal LVDS screen now.

 

Show some pictures as below.

 

post-61100-1300230056_thumb.jpgpost-61100-1300230084_thumb.jpgpost-61100-1300230096_thumb.jpgpost-61100-1300230105_thumb.jpgpost-61100-1300233113_thumb.jpg

  • Like 2
Link to comment
Share on other sites

To all people asking for helps: 2 log files are need

 

1- radeondump (from bcc9) output of your videobios ==> to identify connectortype & SenseID

2- dmesg log after booting with Dong's radeonHD.kext (10/20/2009 update) installed & Debug flag set on Info.plist

with all possible output connected ==> to identify EncoderID & TransmitterID mapping to output

Mucha, I would suggest not setting debug mode in RadeonHD

 

You get adequate info without this setting (I just did it with debug = false and verbose = 1)

Sometimes debug causes KP

And sometimes it gives unreadable screen

Link to comment
Share on other sites

Many thanks for your guide.

 

I change the framebuffer to Peregrine for 4330.

 

Finally, my Mobility Radeon HD 4330 (1002_9552) is working with QE & CI on Internal LVDS screen now.

 

show some pictures as below.

Crazybirdy, I invite you to post in Mobility Radeon HD4xxx thread.

 

What bootloader are you using? Graphics Enabler? Or DSDT patch?

Link to comment
Share on other sites

Mucha, I would suggest not setting debug mode in RadeonHD

 

You get adequate info without this setting (I just did it with debug = false and verbose = 1)

Sometimes debug causes KP

And sometimes it gives unreadable screen

 

RadeonHD never worked for me, i dumped my dmesg using terminal on a grabled screen,i was thinking setting the debug flag would give us more informations,if you can confirm that default setting are giving the needed information i will update the guide (which version are you using, the latest version didn't give me the desired info)

 

and i think that it will be great if a skilled developper can provide us with a tool like radeondump capable if dumping the usefull info

 

 

Many thanks for your guide.

 

I change the framebuffer to Peregrine for 4330.

 

Finally, my Mobility Radeon HD 4330 (1002_9552) is working with QE & CI on Internal LVDS screen now.

 

show some pictures as below.

Congratulations

Happy to see my guide is helpfull for other people

Link to comment
Share on other sites

Crazybirdy, I invite you to post in Mobility Radeon HD4xxx thread.

 

What bootloader are you using? Graphics Enabler? Or DSDT patch?

 

I can't post in Mobility Radeon HD4xxx thread. You know as a new user here.......

 

New method, try old method...it's better.

10.7.x VGA works, DVD Player + MS Office ppt + Chess don't work.

10.6.8 VGA + Chess work, DVD Player + MS Office ppt don't work.

 

[EDIT] 2012.03.01

Update pkg for 10.8 ML.

[EDIT] 2011.10.28

Easy way to get QE/CI. Only for 10.6.6 2011 MBP, 10.6.7 2011 MBP, 10.6.8, and Lion

 

If the resolution is higher than 1366x768 as 1600x900 , you need to try to add Dual-link and EDID too.

http://www.insanelymac.com/forum/index.php...2061&st=256

 

Only for 1366x738 and lower resolution.

 

1-1.All kext used with Lion 10.7.x (nothing modified.)

    ATI4600Controller.kext (add ID)

    ATIFramebuffer.kext

    ATISupport.kext

    ATIRadeonX2000.kext

    ATIRadeonX2000GA.plugin

    ATIRadeonX2000GLDriver.bundle

    ATIRadeonX2000VADriver.bundle

    http://dl.dbank.com/c0f3hgjco8

 

1-2.All kext used with Snow Ledpard 10.6.8 (nothing modified.)

  kexts from 10.6.8 or Lion

    ATI4600Controller.kext (add ID)

    ATIFramebuffer.kext

    ATISupport.kext

  kexts from 10.6.7 updated from 10.6.3.retail

    ATIRadeonX2000.kext

    ATIRadeonX2000GA.plugin

    ATIRadeonX2000GLDriver.bundle

    ATIRadeonX2000VADriver.bundle

 

  All kexts used (ATI 10.6.7.update ATIRadeonX2000.kext + 10.6.8 and 10.7.0 )

    http://dl.dbank.com/c0dh6fjdit

 

2.Add ID of 4330m ( 0x95521002 ) to ATI4600Controller.kext as below.

  ATI4600Controller.kext/Contents/Info.plist

   <key>IOPCIMatch</key>

    <string>0x95521002 0x94881002</string>

  Make sure the ID of 4330m is included in ATIRadeonX2000.kext/Contents/Info.plist as below.

    <key>IOPCIMatch</key>

    <string>0x94001002 0x94011002 0x94021002 0x94031002 0x95811002 0x95831002 0x95881002 0x94c81002 0x94c91002 0x95001002 0x95011002 0x95051002 0x95071002 0x95041002 0x95061002 0x95981002 0x94881002 0x95991002 0x95911002 0x95931002 0x94401002 0x94421002 0x944A1002 0x945A1002 0x94901002 0x949E1002 0x94801002 0x95401002 0x95411002 0x954E1002 0x954F1002 0x95521002 0x95531002 0x94a01002</string>

 

  If the default values in ATIRadeonX2000.kext didn't include of your card's ID, then you may need to give up. Example, 0x95551002 never got QE/CI since I know so many people have tried this (both old method and new method).

 

  And you can modify the name of 4330m as attched.

  ATI4600Controller.kext/Contents/MacOS/ATI4600Controller

  post-61100-1319958953_thumb.png

 

3.Use Boot pkg or ATY_init.kext with Peregrine which is not supported by 10.6.6 MBP 2011~Lion, and the kext will use RadeonFramebuffer instead.

<key>GraphicsEnabler</key>

<string>Yes</string>

  Boot for ATI 4xxx Mobility Series only.

    Chameleon_2.1svn_r1820_10.8_Peregrine_NB_780_pkg+boot.zip

 

  The default IDs included in ati.c and ATIRadeonX2000.kext were as below.

    { 0x10029490, "Peregrine"} ,

    { 0x1002949E, "Peregrine"} ,

    { 0x10029480, "Peregrine"} ,

    { 0x10029488, "Peregrine"} ,

    { 0x10029540, "Peregrine"} ,

    { 0x10029541, "Peregrine"} ,

    { 0x1002954E, "Peregrine"} ,

    { 0x10029552, "Peregrine"} ,

    { 0x10029553, "Peregrine"} ,

    { 0x1002954F, "Peregrine"} ,

  The default IDs included in ati.c but not in ATIRadeonX2000.kext, and you may need to give up.

    { 0x10029498, "Peregrine"} ,

    { 0x100294B3, "Peregrine"} ,

    { 0x100294B5, "Peregrine"} ,

 

Or

<key>GraphicsEnabler</key>

<string>No</string>

 

  for 0x10029552

    ATY_Init.kext.for.ATI4330m.Peregrine.zip

  for 0x10029553

    ATY_Init.kext.for.ATI4530m.Peregrine.zip

    ATY_Init.kext.for.ATI4570m.Peregrine.zip

    ATY_Init.kext.for.ATI5145m.Peregrine.zip

    ATY_Init.kext.for.ATI545vm.Peregrine.zip

  for 0x10029480

    ATY_Init.kext.for.ATI4650m.Peregrine.zip

 

  You can modify the ATY_Init.kext.for.ATI4330m.Peregrine.zip to be yours with HexEdit. (two locations 32+64)

post-61100-1320199461_thumb.png

 

4. Use Kext Wizard to install the modified kext to S/L/E.

  Kext_Wizard.v3.7.10.zip

  post-61100-1320140259_thumb.png

 

Then, you get QE/CI with ATI 4330m now.

 

 

You don't need to do anything with the following any more.

 

 

 

Old method, better than New method

10.7.x VGA + DVD Player + MS Office ppt work, Chess doesn't work.

10.6.8 VGA + DVD Player + MS Office ppt + Chess work.

 

All kext used with Lion 10.7.x (nothing modified.)

    ATI4600Controller.kext (add ID)

    ATIFramebuffer.kext

    ATISupport.kext

    ATIRadeonX2000.kext

    ATIRadeonX2000GA.plugin

    ATIRadeonX2000GLDriver.bundle

    ATIRadeonX2000VADriver.bundle

    http://dl.dbank.com/c0f3hgjco8

 

All kext used with Snow Ledpard 10.6.8 (nothing modified.)

  kexts from 10.6.8 or Lion

    ATI4600Controller.kext (add ID)

    ATIFramebuffer.kext

    ATISupport.kext

  kexts from 10.6.7 updated from 10.6.3.retail

    ATIRadeonX2000.kext

    ATIRadeonX2000GA.plugin

    ATIRadeonX2000GLDriver.bundle

    ATIRadeonX2000VADriver.bundle

 

  All kexts used (ATI 10.6.7.update ATIRadeonX2000.kext + 10.6.8 and 10.7.0 )

    http://dl.dbank.com/c0dh6fjdit

 

If the resolution is higher than 1366x768 as 1600x900 , you need to try this too.

http://www.insanelymac.com/forum/index.php...2061&st=256

 

Only for 1366x738 and lower resolution.

 

radeon_bios_decode_VBIOS_RadeonHD_HexEdit_Framebuffer.zip

1. This is the output from bcc9's radeon_bios_decode .

" ./radeon_bios_decode < 1002_9552.rom > connector.txt "

 

  ATOM BIOS Rom:

  ...............

  PCI ID: 1002:9552

  Connector at index 0

   Type : LVDS (7)

   Encoder : INTERNAL_UNIPHY2 (0x21)

   i2cid: 0x96, OSX senseid: 0x7

  Connector at index 1

   Type : VGA (1)

   Encoder : INTERNAL_KLDSCP_DAC1 (0x15)

   i2cid: 0x90, OSX senseid: 0x1

  Connector at index 2

   Type : HDMI-A (11)

    Encoder : INTERNAL_UNIPHY (0x1e)

   i2cid: 0x91, OSX senseid: 0x2

 

Get the data like this, it works for me.

 

index 0=Connector[0]=Port0=00 =LVDS :HW_Line[6] i2cid: 96 SenseLine = (6 & 0xf)+1 = 07

index 1=Connector[1]=Port1=01 =VGA :HW_Line[0] i2cid: 90 SenseLine = (0 & 0xf)+1 = 01

index 2=Connector[2]=Port2=02 =HDMI-A:HW_Line[1] i2cid: 91 SenseLine = (1 & 0xf)+1 = 02

 

2. The output from "sudo dmesg > ~/Desktop/Encoder.txt" is as below by using Dong's RadeonHD.kext. Remove some data unuseful.

 

Object: ID: 310e name: LVDS type: 3 id: e

* SrcObject: ID: 2121 name: UNIPHY2 enum: 1

rhdAtomDDCFromI2CRecord: I2C Record: HW_Line[6] EngineID: 1 I2CAddr: 0

 

Object: ID: 3105 name: VGA type: 3 id: 5

* SrcObject: ID: 2115 name: INTERNAL_KLDSCP_DAC1 enum: 1

rhdAtomDDCFromI2CRecord: I2C Record: HW_Line[0] EngineID: 1 I2CAddr: 0

 

Object: ID: 310c name: HDMI_TYPE_A type: 3 id: c

* SrcObject: ID: 211e name: UNIPHY enum: 1

rhdAtomDDCFromI2CRecord: I2C Record: HW_Line[1] EngineID: 1 I2CAddr: 0

 

Connector[0] {..._PANEL, "LVDS LCD1", .... { RHD_OUTPUT_UNIPHYE, ... } }

Connector[1] {..._VGA, "VGA\^H CRT1", ....{ RHD_OUTPUT_DACA, ... } }

Connector[2] {..._DVI_SINGLE, "HDMI_TYPE_A DFP1", ....{ RHD_OUTPUT_UNIPHYA, ... } }

.........................................

RHDBIOSScratchDACSense

.........................................

Sensing DACA on Output AtomOutputDACA

AtomDACLoadDetection

Calling DAC_LoadDetection

.........................................

DAC_LoadDetection Successful

.........................................

Mapping DIG1 encoder to KLDSKP_UNIPHYE

.........................................

Crtc[0]: found native mode from Monitor[LVDS Panel]:

.........................................

Connector "PANEL" uses Monitor "LVDS Panel":

RHDValidateScaledToMode

rhdModeValidateCrtc

DxModeValid: ATOM CRTC 1

rhdAtomOutputModeValid

Listing modesetting layout:

.........................................

ATOM CRTC 1: tied to Atom PLL 1 and LUT A:

Outputs: AtomOutputUniphyE (PANEL)

ATOM CRTC 2: unused

Unused Outputs: AtomOutputDACA, AtomOutputUniphyA

 

Get the data like this, it works for me.

 

CRTC1>DIG1>UNIPHYE>LVDS  Encoder = 0x00  Transmitter = 0x12

CRTC2>DAC > DACA >VGA   Encoder = 0x10  Transmitter = 0x00

CRTC2>DIG2>UNIPHYA>HDMI  Encoder = 0x01  Transmitter = 0x10

 

 

 

 

3. And the patch is here.

You get Transmitter, Encoder, HotplugID, and SenseLine like this.

02 00 00 00 40 00 00 00 09 01 00 00 12 00 00 07 LVDS

10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 01 VGA

00 08 00 00 00 02 00 00 00 01 00 00 10 01 02 02 HDMI (If you don't have port 02, just copy it to be yours.)

 

All you need to do is just replace the Transmitter, Encoder, HotplugID, and SenseLine to be yours, and keep the order of LVDS, VGA, HDMI as the example as above.

 

If Dong's RadeonHD.kext didn't work, you can try some values for Transmitter, Encoder as below, and replace the HotplugID, and SenseLine to be yours.

 

02 00 00 00 40 00 00 00 09 01 00 00 aa 00 00 07 LVDS

10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 01 VGA

00 08 00 00 00 02 00 00 00 01 00 00 bb 01 02 02 HDMI (If you don't have port 02, just copy it to be yours.)

or

02 00 00 00 40 00 00 00 09 01 00 00 aa 01 00 07 LVDS

10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 01 VGA

00 08 00 00 00 02 00 00 00 01 00 00 bb 00 02 02 HDMI (If you don't have port 02, just copy it to be yours.)

 

According to bcc9's radeon_bios_decode .

The aa could be one of these three values.

#define UNIPHY_E 0x12 // = UNIPHY_2:LINK_A

#define UNIPHY_F 0x22 // = UNIPHY_2:LINK_B

#define UNIPHY_EF 0x02 // = UNIPHY_2:DUAL_LINK

The bb could be one of these three values.

#define UNIPHY_A 0x10 // = UNIPHY:LINK_A

#define UNIPHY_B 0x20 // = UNIPHY:LINK_B

#define UNIPHY_AB 0x00 // = UNIPHY:DUAL_LINK

 

The default of Shrike is as below.

02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 03

02 00 00 00 00 01 00 00 09 01 00 00 20 01 02 02

00 04 00 00 04 03 00 00 00 01 00 00 10 00 01 01

 

4. Modify ATI4600Controller.kext with Shrike for Lion 10.7.x, 10.6.6(MBP 2011), 10.6.7(MBP 2011), and 10.6.8 update.

Or modify ATIFramebuffer.kext with Shrike for Retail 10.6.3, update 10.6.6 (10.6.7).

 

Need to copy ATI4600Controller.kext or ATIFramebuffer.kext to ~/Desktop, and use HexEdit to edit ATI4600Controller.kext/Contents/MacOS/ATI4600Controller or ATIFramebuffer.kext/Contents/MacOS/ATIFramebuffer.

 

Use HexEdit to find Shrike

02 00 00 00 40 00 00 00 09 01 00 00 12 00 00 07 10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 01 00 08 00 00 00 02 00 00 00 01 00 00 10 01 02 02

and replace to be yours.

02 00 00 00 40 00 00 00 09 01 00 00 12 00 00 07 10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 01 00 08 00 00 00 02 00 00 00 01 00 00 10 01 02 02

Replace two locations for both 32bits & 64bits.

post-61100-1316492774_thumb.png

 

5. And add ID of 4330m ( 0x95521002 ) to ATI4600Controller.kext as below, then you can use Kext Wizard to install the modified kext to S/L/E as below.

ATI4600Controller.kext/Contents/Info.plist

<key>IOPCIMatch</key>

<string>0x95521002 0x94881002</string>

Kext_Wizard.v3.7.10.zip

post-61100-1319389194_thumb.png

 

Do not install the Chameleon pkg before the kext is modified and installed as above.

6. Also need to edit the file of /Extra/com.apple.boot.plist as below with attached boot files.

<key>GraphicsEnabler</key>

<string>Yes</string>

 

Then, you can get QE\CI now.

 

If you get trouble after reboot, you can remove ATI4600Controller.kext and setup GraphicsEnabler=No, and try it again.

 

pkg for 0x10029552 & 0x10029553 & 0x10029480 boot file.

Chameleon_2.1svn_r1820_10.8_Shrike_NB_780_pkg+boot.zip

 

If you want to update Chameleon boot file, you can use ATY_init.kext to replace the function of GraphicsEnabler.

<key>GraphicsEnabler</key>

<string>No</string>

Setup as above, and use Kext Wizard to install the ATY_init.kext to E/E or S/L/E, then you can update the boot file with any revision you want.

 

Use Shrike for ATIFramebuffer.

for 0x10029552.

ATY_Init.kext.for.ATI4330m.zip

for 0x10029553

ATY_Init.kext.for.ATI4530m.zip

ATY_Init.kext.for.ATI4570m.zip

ATY_Init.kext.for.ATI5145m.zip

ATY_Init.kext.for.ATI545vm.zip

for 0x10029480

ATY_Init.kext.for.ATI4650m.zip

  • Like 6
Link to comment
Share on other sites

mucha,

 

Thanks for your guide, inspiring most of ati people.

I have a Sony Vaio VPCEB17 with Mobility 5650 and 1920x1080 internal display.

I can have QE CI enabled with 10.7 kexts. However, my internal display was scrambled.

 

So the first thing I would think of is 10.6.6 framebuffer personalities.

After you uploaded your Howto file, I tried over night. Not working.

 

I would like to need your favor to help me as belows

 

1. SenseID

I got radeondump my VBIOS, as below. It is very unusual, the i2cid for LVDS is missing. No matter dump from radeondump in mac or everest in Win7, Both dumps are identical the same.

I tried SenseID, 02, 03, 04, or even 00. None of them seems work for me. Is there any other way to get the SenseID? Please kindly help.

 

ATOM BIOS Rom:

SubsystemVendorID: 0x104d SubsystemID: 0x9071

IOBaseAddress: 0xd000

Filename: BR36874.001

BIOS Bootup Message:

Sony M980 Madison LP DDR3 64Mx16 600E/790M LVDS/VGA/HDMI

 

Connector at index 0 type: LVDS (7)

Connector at index 1 type: HDMI-A (11)

Connector's i2cid: 94

Connector at index 2 type: VGA (1)

Connector's i2cid: 90

 

vga.zip

 

2. Encoder and Transmitter

RadeonHD.kext is not working for 5650m, So again, I really have problem to get correct information.

I can try and eoor this part.

 

Your kindly help is truely appreciated. Thanks!

Link to comment
Share on other sites

Guys I can't get in anyway RadeonHD to return the infos I need... The kext loads but dmesg only returns an EDID table...

 

I think that's beacuse I'm on 5650 and RadeonHD doesn't support 5XXX series... Any hint? Maybe some linux distro?

 

Help, please...

Link to comment
Share on other sites

hi everyone, I have Asus U80V (Mobility 4570 DDR2 512MB), could someone help me get CI/QE with a noob way? Thanks.

 

radeondump:

 

ATOM BIOS Rom:

 

SubsystemVendorID: 0x1043

SubsystemID: 0x1b32

 

IOBaseAddress: 0xc000

 

Filename: u800204.m92

 

BIOS Bootup Message:

M92S2 Asus U80 DDR2 500m/680e ASID:A27U80.003$

Connector at index 0 type: VGA (1)

 

Connector's i2cid: 90

 

Connector at index 1 type: LVDS (7)

 

Connector's i2cid: 16

 

Connector at index 2 type: HDMI-A (11)

 

Connector's i2cid: 91

 

Is there another way to get info from dmesg?

 

Sorry for my English,

nqt999

 

P/S: I am running iatkos 10.6.3 V2 (upgraded to 10.6.6), Chameleon RC5 747.

Link to comment
Share on other sites

 Share

×
×
  • Create New...