Jump to content

Mobility Radeon - 10.6.6/7 guide for QE/CI - testing 10.7


wmarsh
 Share

564 posts in this topic

Recommended Posts

10.6.7 has personalities moved to ATI5000 too? why don't we try to patch this?

 

10.6.7 the same as 10.6.6 kexts really.

 

 

10.7 has FB's moved to ATI5000Controller

 

Playing around with numbers, i'm pretty sure the flag has something to do with how it works, flag 40 shows as CRT, flag 100 produces a different screen but it also causes KP so i'm going to see if i can find the right encoder/transmitter.

 

tried all combos with 10.7 ATIFramebuffer LVDS turns on regardless what combo i use. But it's only cloning CRT onto the LVDS screen. my guess is 10.7 drivers probably will support our cards better but maybe we have to wait?

 

Checcco open ATI5000Controller

 

Find:

 

10.7 Eulemur

04 00 00 00 14 00 00 00 00 01 00 00 01 02 01 04

00 08 00 00 00 02 00 00 00 71 00 00 12 04 04 02

10 00 00 00 10 00 00 00 00 00 00 00 00 10 00 01

 

the top line 04 acts as CRT output, change to 02 still acts as CRT, change control flag 14 to 40, still CRT.

Link to comment
Share on other sites

Guys I was studying ati.c from trunk ( http://forge.voodooprojects.org/p/chameleo...6/libsaio/ati.c )and found

669	if((framebuffer[0] == 'M' && framebuffer[1] == 'o' && framebuffer[2] == 't') ||
670	  (framebuffer[0] == 'S' && framebuffer[1] == 'h' && framebuffer[2] == 'r') ||
671	  (framebuffer[0] == 'P' && framebuffer[1] == 'e' && framebuffer[2] == 'r'))
672		devprop_add_ati_template_4xxx(device);

 

This means "If Framebuffer is MotMot or Shrike or Peregrine then use method devprop_add_ati_template_4xxx to inject videocard". The else condition points to a generic ati injection method.

 

Look at this specific method for 4xxx cards at line 446, i'm no guru but it seems to me that it injects only 2 connectors... Maybe this is the reason you always get 2 out of 3 ports working (I remember hjs89 having this problem).

 

I've tried adding Eulemur to the if condition and compiled and I can confirm my theory, in ioreg never got @2, but only @0 and @1.

 

EDIT: Using shrike resulted in three ports working for kizwan, so this theory seems to be wrong...

Link to comment
Share on other sites

Guys I was studying ati.c from trunk ( http://forge.voodooprojects.org/p/chameleo...6/libsaio/ati.c )and found

669	if((framebuffer[0] == 'M' && framebuffer[1] == 'o' && framebuffer[2] == 't') ||
670	  (framebuffer[0] == 'S' && framebuffer[1] == 'h' && framebuffer[2] == 'r') ||
671	  (framebuffer[0] == 'P' && framebuffer[1] == 'e' && framebuffer[2] == 'r'))
672		devprop_add_ati_template_4xxx(device);

 

This means "If Framebuffer is MotMot or Shrike or Peregrine then use method devprop_add_ati_template_4xxx to inject videocard". The else condition points to a generic ati injection method.

 

Look at this specific method for 4xxx cards at line 446, i'm no guru but it seems to me that it injects only 2 connectors... Maybe this is the reason you always get 2 out of 3 ports working (I remember hjs89 having this problem).

 

I've tried adding Eulemur to the if condition and compiled and I can confirm my theory, in ioreg never got @2, but only @0 and @1.

checco,

netkas says Lion does not need injection. My tests modifying Lion support that.

 

Let me suggest you --

Take the Lion kext posted elsewhere

Load the executable in the controller for your card (mine was ATI4600controller, yours would be different) into a hex editor with hex search function.

Search for the hex string that matches unmodified FB for your card -- probably its Eulemur.

Apply patch there and test it. Please post results.

Link to comment
Share on other sites

checco,

netkas says Lion does not need injection. My tests modifying Lion support that.

 

Let me suggest you --

Take the Lion kext posted elsewhere

Load the executable in the controller for your card (mine was ATI4600controller, yours would be different) into a hex editor with hex search function.

Search for the hex string that matches unmodified FB for your card -- probably its Eulemur.

Apply patch there and test it. Please post results.

wmarsh i have patched 10.7 kext and CRT cloning is all i can get, I never tested HDMI because it's not what i use, cannot get it to show as LVDS.

 

Also ATI 5650 will need an injector for Lion, Already tested, Does not auto detect. ATI5000Controller, ATIRadeonX3000,ATISupport loads in Lion but the FB file doesn't. Don't know why either.

Link to comment
Share on other sites

checco,

netkas says Lion does not need injection. My tests modifying Lion support that.

 

Let me suggest you --

Take the Lion kext posted elsewhere

Load the executable in the controller for your card (mine was ATI4600controller, yours would be different) into a hex editor with hex search function.

Search for the hex string that matches unmodified FB for your card -- probably its Eulemur.

Apply patch there and test it. Please post results.

 

EDIT: In my post above I wasn't talking about my card, that was a hint for people using trunk and 4xxx cards...

If you can't get 3 ports working in 10.6.6 that's beacuse if you're using motmot, shrike or peregrine the bootlader will inject only 2 connectors.

 

EDIT2: Using shrike resulted in three ports working for kizwan, so this theory seems to be wrong...

Link to comment
Share on other sites

Finally is your LVDS display working? Sorry, I didn't understand it well.

 

It's very strange, are you completely sure that you are injecting the correct Fb? When I was using Lion's kext the framebuffer was recognized like ATY,RadeonFramebuffer, and looking in IORegestry I could see some stuff about the fb that I was injecting.

Well, I used Shrike not Peregrine, as I could not find a ConnectorInfo table for Peregrine, and mod Shrike works as well for me as mod Peregrine in 10.6.6

 

I did get LVDS output, quite readable, not distorted, and the white lines are gone.

And the modShrike encoder/decoder must have been used as I previously had no output with Lion.

 

However the colors are all wrong.

I have thought about trying some of the aty config settings in the controller info.plist to see what happens.

Link to comment
Share on other sites

Well, I used Shrike not Peregrine, as I could not find a ConnectorInfo table for Peregrine, and mod Shrike works as well for me as mod Peregrine in 10.6.6

 

I did get LVDS output, quite readable, not distorted, and the white lines are gone.

And the modShrike encoder/decoder must have been used as I previously had no output with Lion.

 

However the colors are all wrong.

I have thought about trying some of the aty config settings in the controller info.plist to see what happens.

 

 

Does your lvds monitor behave like this one posted by Ccc ??

Link to comment
Share on other sites

With Lion I presume you mean -- no, its actually usable and not so distorted. But the colors are all wrong.

 

Do you get the white lines with 10.6.6 patch?

Yes, I mean with lion's kext.

I've never got white lines with all combinations I tried.

I'm going to try now your lion patch! I'll report you the results ;)

Link to comment
Share on other sites

With Lion I presume you mean -- no, its actually usable and not so distorted. But the colors are all wrong.

 

Do you get the white lines with 10.6.6 patch?

 

Can you do a picture to see how are you seeing your display? Maybe your problem is in your display color profile. For example in my default the blues were like purple.

Link to comment
Share on other sites

tried wmarsh 10.7 kexts, nothing different from my 10.7 previous results: wrong colors flickering on internal lvds, like in the Ccc pic re-posted above, excellent output on external VGA.

I'll try to produce my own patch following mucha's guide tonite, to be able to get fine output from both.

Link to comment
Share on other sites

Hi guys, please take a look at what I'm experiencing...

I've got 5650m and these are my senseid: LVDS->07, HDMI-A->01, VGA->08

 

Using stock Vervet from 10.6.6 I've got output on my LVDS as long as the HDMI monitor is plugged.

Unplugging the HDMI results in losing LVDS too... System profiler and IOregistry report HDMI connected (fully recognized)

This is stock Vervet.

Personality: Vervet
ConnectorInfo count in decimal: 4
Effective address for ConnectorInfo table in hex: 11200 => 226616
dd if=ATIFramebuffer of=/tmp/fb bs=1 skip=226616 count=64
od -Ax -tx1 /tmp/fb
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  02
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  04
0000020	00  02  00  00  14  00  00  00  00  01  00  00  00  00  06  03
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  01

As you can see HDMI connector senseid is right for my HDMI port...so I guess the port is working but "images" are hijacked to LVDS through transm/enc 22 05... So I think 22 05 are the right values for my LVDS! But that's not what Linux is reporting (00 00).

 

I think we're still missing some pieces... Maybe hotplugID is more important than what we think....

Link to comment
Share on other sites

EDIT: In my post above I wasn't talking about my card, that was a hint for people using trunk and 4xxx cards...

If you can't get 3 ports working in 10.6.6 that's beacuse if you're using motmot, shrike or peregrine the bootlader will inject only 2 connectors.

What do you mean? My HD4570 have three ports (LVDS, VGA & HDMI) & all of them are working. It use Shrike fb & chameleon from trunk.

Link to comment
Share on other sites

Hi guys, please take a look at what I'm experiencing...

I've got 5650m and these are my senseid: LVDS->07, HDMI-A->01, VGA->08

 

Using stock Vervet from 10.6.6 I've got output on my LVDS as long as the HDMI monitor is plugged.

This is stock Vervet.

Personality: Vervet
ConnectorInfo count in decimal: 4
Effective address for ConnectorInfo table in hex: 11200 => 226616
dd if=ATIFramebuffer of=/tmp/fb bs=1 skip=226616 count=64
od -Ax -tx1 /tmp/fb
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  02
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  04
0000020	00  02  00  00  14  00  00  00  00  01  00  00  00  00  06  03
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  01

As you can see HDMI connector senseid is right for my HDMI port...so I guess the port is working but "images" are hijacked to LVDS through transm/enc 22 05... So I think 22 05 are the right values for my LVDS! But that's not what Linux is reporting (00 00).

 

I think we're still missing some pieces... Maybe hotplugID is more important than what we think....

Try transmitter 02 on LVDS without HDMI

 

I think 02 is dual channel; 12 and 22 are individual channels.

OS X does not reconfigure dynamically, so you might need different patch with or without HDMI monitor.

 

I had similiar problem; I was convinced mine was 12 but it only works 02

 

From Mucha:

/* Transmitter byte */

#define UNIPHY_A 0x10 // = UNIPHY:LINK_A

#define UNIPHY_B 0x20 // = UNIPHY:LINK_B

#define UNIPHY_AB 0x00 // = UNIPHY:DUAL_LINK

#define UNIPHY_C 0x11 // = UNIPHY_1:LINK_A

#define UNIPHY_D 0x21 // = UNIPHY_1:LINK_B

#define UNIPHY_CD 0x01 // = UNIPHY_1:DUAL_LINK

#define UNIPHY_E 0x12 // = UNIPHY_2:LINK_A

#define UNIPHY_F 0x22 // = UNIPHY_2:LINK_B

#define UNIPHY_EF 0x02 // = UNIPHY_2:DUAL_LINK

#define DACA 0x00

#define DACB 0x10

Link to comment
Share on other sites

What do you mean? My HD4570 have three ports (LVDS, VGA & HDMI) & all of them are working. It use Shrike fb & chameleon from trunk.

 

Are you using 10.6.6 kexts? If so then my theory is wrong ;)... But that's what's really happened to me... Adding Eulemur to the if condition resulted in only two connector injected. Please confirm you're using 10.6.6 kexts and GRaphicsEnabler and I will correct my posts to make things more clear.

Link to comment
Share on other sites

Are you using 10.6.6 kexts? If so than my theory is wrong ;)... But that's what's really happened to me... Adding Eulemur to the if condition resulted in only two connector injected. Please confirm you're using 10.6.6 kexts and GRaphicsEnabler and I will correct my posts to make things more clear.

Yes, I'm using 10.6.6 kexts, GraphicsEnabler=Yes, chameleon from trunk & Shrike as framebuffer.

Link to comment
Share on other sites

tried wmarsh 10.7 kexts, nothing different from my 10.7 previous results: wrong colors flickering on internal lvds, like in the Ccc pic re-posted above, excellent output on external VGA.

I'll try to produce my own patch following mucha's guide tonite, to be able to get fine output from both.

c0ke, I noticed the info.plist shows:

			<key>aty_config</key>
		<dict>
			<key>CFG_NO_PP</key>
			<false/>

I am going to try changing that to true to match settings for Peregrine

 

Also may try changing other 2 aty_config settings

Link to comment
Share on other sites

Please post the RadeonHD dump. Use 10.6 RadeonHD (10/20/2009 update). Yeah, installed the 10/20/2009 update.

 

When using RadeonHD, the monitor is not viewable. So you'll need to setup remote connection:-

  1. Boot with -x -v
  2. Setup remote connection (VNC) in System Preferences (in Sharing). Don't forget to set the VNC password.
  3. Test the remote connection.
  4. Reboot your computer (boot without any flags) (Correction - boot to 32bit mode: arch=i386).
  5. Connect remotely from other computer via VNC.
  6. In the "10.6 RadeonHD (10/20/2009 update)" package, there is a command line utility called RadeonDump:-

    1. Open terminal.
    2. Enter "sudo -s" & then enter password when asked.
    3. Change directory (cd) to where RadeonDump located.
    4. Enter "./RadeonDump > ~/Desktop/Encoder.txt"

[*]Post the Encoder.txt here.

 

.

i did the dmesg in ubuntu live cd. hopefuly it's the same output

Encoder.txt

Link to comment
Share on other sites

Please post the RadeonHD dump. Use 10.6 RadeonHD (10/20/2009 update). Yeah, installed the 10/20/2009 update.

 

When using RadeonHD, the monitor is not viewable. So you'll need to setup remote connection:-

  1. Boot with -x -v
  2. Setup remote connection (VNC) in System Preferences (in Sharing). Don't forget to set the VNC password.
  3. Test the remote connection.
  4. Reboot your computer (boot without any flags) (Correction - boot to 32bit mode: arch=i386).
  5. Connect remotely from other computer via VNC.
  6. In the "10.6 RadeonHD (10/20/2009 update)" package, there is a command line utility called RadeonDump:-

    1. Open terminal.
    2. Enter "sudo -s" & then enter password when asked.
    3. Change directory (cd) to where RadeonDump located.
    4. Enter "./RadeonDump > ~/Desktop/Encoder.txt"

[*]Post the Encoder.txt here.

 

.

i did the dmesg in ubuntu live cd. hopefuly it's the same output

Link to comment
Share on other sites

Hi guys, please take a look at what I'm experiencing...

I've got 5650m and these are my senseid: LVDS->07, HDMI-A->01, VGA->08

 

Using stock Vervet from 10.6.6 I've got output on my LVDS as long as the HDMI monitor is plugged.

Unplugging the HDMI results in losing LVDS too... System profiler and IOregistry report HDMI connected (fully recognized)

This is stock Vervet.

Personality: Vervet
ConnectorInfo count in decimal: 4
Effective address for ConnectorInfo table in hex: 11200 => 226616
dd if=ATIFramebuffer of=/tmp/fb bs=1 skip=226616 count=64
od -Ax -tx1 /tmp/fb
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  02
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  04
0000020	00  02  00  00  14  00  00  00  00  01  00  00  00  00  06  03
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  01

As you can see HDMI connector senseid is right for my HDMI port...so I guess the port is working but "images" are hijacked to LVDS through transm/enc 22 05... So I think 22 05 are the right values for my LVDS! But that's not what Linux is reporting (00 00).

 

I think we're still missing some pieces... Maybe hotplugID is more important than what we think....

 

Linux does say UNIPHY link which matches up with 00,00, I was also thinking of trying a new personality after this, maybe that is the next best thing to do?

Link to comment
Share on other sites

The dmesg is not complete. It missing encoder & LinkID. There are only TransmitterID in the log.

I tried installing the RadeonHd.kext in S/L/E but when i boot up it gives me an error where it can't load it because of library kext com.apple.iokit.IONDRVSupport not found.

 

if there something else i need to add to get this kext working in 10.6.6? i have also attached my /var/log/Xorg.0.log if this maybe would help.

Link to comment
Share on other sites

I tried installing the RadeonHd.kext in S/L/E but when i boot up it gives me an error where it can't load it because of library kext com.apple.iokit.IONDRVSupport not found.

 

if there something else i need to add to get this kext working in 10.6.6? i have also attached my /var/log/Xorg.0.log if this maybe would help.

You posted in your dmesg from Linux

[	5.236680] [drm] Radeon Display Connectors
[	5.236682] [drm] Connector 0:
[	5.236684] [drm]   VGA
[	5.236686] [drm]   DDC: 0x7fa0 0x7fa0 0x7fa4 0x7fa4 0x7fa8 0x7fa8 0x7fac 0x7fac
[	5.236688] [drm]   Encoders:
[	5.236690] [drm]	 CRT1: INTERNAL_KLDSCP_DAC1
[	5.236691] [drm] Connector 1:
[	5.236693] [drm]   HDMI-A
[	5.236694] [drm]   HPD1
[	5.236696] [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
[	5.236698] [drm]   Encoders:
[	5.236700] [drm]	 DFP1: INTERNAL_UNIPHY
[	5.236701] [drm] Connector 2:
[	5.236703] [drm]   LVDS
[	5.236705] [drm]   DDC: 0x7f10 0x7f10 0x7f14 0x7f14 0x7f18 0x7f18 0x7f1c 0x7f1c
[	5.236707] [drm]   Encoders:
[	5.236708] [drm]	 LCD1: INTERNAL_UNIPHY2
[	5.236710] [drm] Connector 3:
[	5.236711] [drm]   DisplayPort
[	5.236713] [drm]   HPD2
[	5.236715] [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
[	5.236717] [drm]   Encoders:
[	5.236718] [drm]	 DFP2: INTERNAL_UNIPHY

Mucha's documentation says

698 * DCE 4.0 (RV8XX, Radeon HD 5XXX Series)

699 * - 3 DIG transmitter blocks UNPHY0/1/2 (links A and ;).

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

So that makes your encoders which are hardcoded

VGA DAC1 is 00

HDMi-A DIG1 is 00

LVDS DIG5 is 04

DP DIG2 is 02

 

Try it

Link to comment
Share on other sites

You posted in your dmesg from Linux

[	5.236680] [drm] Radeon Display Connectors
[	5.236682] [drm] Connector 0:
[	5.236684] [drm]   VGA
[	5.236686] [drm]   DDC: 0x7fa0 0x7fa0 0x7fa4 0x7fa4 0x7fa8 0x7fa8 0x7fac 0x7fac
[	5.236688] [drm]   Encoders:
[	5.236690] [drm]	 CRT1: INTERNAL_KLDSCP_DAC1
[	5.236691] [drm] Connector 1:
[	5.236693] [drm]   HDMI-A
[	5.236694] [drm]   HPD1
[	5.236696] [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
[	5.236698] [drm]   Encoders:
[	5.236700] [drm]	 DFP1: INTERNAL_UNIPHY
[	5.236701] [drm] Connector 2:
[	5.236703] [drm]   LVDS
[	5.236705] [drm]   DDC: 0x7f10 0x7f10 0x7f14 0x7f14 0x7f18 0x7f18 0x7f1c 0x7f1c
[	5.236707] [drm]   Encoders:
[	5.236708] [drm]	 LCD1: INTERNAL_UNIPHY2
[	5.236710] [drm] Connector 3:
[	5.236711] [drm]   DisplayPort
[	5.236713] [drm]   HPD2
[	5.236715] [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
[	5.236717] [drm]   Encoders:
[	5.236718] [drm]	 DFP2: INTERNAL_UNIPHY

Mucha's documentation says

 

So that makes your encoders which are hardcoded

VGA DAC1 is 00

HDMi-A DIG1 is 00

LVDS DIG5 is 04

DP DIG2 is 02

 

Try it

 

 

i have no idea how to hexedit anything. like where do i find the offsets to modify?

Link to comment
Share on other sites

i have no idea how to hexedit anything. like where do i find the offsets to modify?

Which framebuffer do you intend to use? I figured them all out for 10.6.6

 

Much of bcc9's guide is how to figure out the offsets.

 

On another note, I started looking at 10.6.7

Peregrine is still at 37278 and 10f60

 

I did try the older 10.6.3 drivers once I made a test install. Even with a patched FB, ATIRadeonX2000.kext gives KP when loaded, just like it did before on my system. So no hope getting the older graphic system to work.

Link to comment
Share on other sites

 Share

×
×
  • Create New...