atlee Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
checcco Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
wmarsh Posted March 21, 2011 Author Share Posted March 21, 2011 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 More sharing options...
atlee Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
checcco Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
wmarsh Posted March 21, 2011 Author Share Posted March 21, 2011 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 More sharing options...
c0ke Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
wmarsh Posted March 21, 2011 Author Share Posted March 21, 2011 Does your lvds monitor behave like this one posted by Ccc ?? 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? Link to comment Share on other sites More sharing options...
c0ke Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
hjs89 Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
c0ke Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
checcco Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
kizwan Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
wmarsh Posted March 21, 2011 Author Share Posted March 21, 2011 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 More sharing options...
checcco Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
kizwan Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
wmarsh Posted March 21, 2011 Author Share Posted March 21, 2011 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 More sharing options...
jvilla Posted March 21, 2011 Share Posted March 21, 2011 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:- Boot with -x -v Setup remote connection (VNC) in System Preferences (in Sharing). Don't forget to set the VNC password. Test the remote connection. Reboot your computer (boot without any flags) (Correction - boot to 32bit mode: arch=i386). Connect remotely from other computer via VNC. In the "10.6 RadeonHD (10/20/2009 update)" package, there is a command line utility called RadeonDump:- Open terminal. Enter "sudo -s" & then enter password when asked. Change directory (cd) to where RadeonDump located. 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 More sharing options...
jvilla Posted March 21, 2011 Share Posted March 21, 2011 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:- Boot with -x -v Setup remote connection (VNC) in System Preferences (in Sharing). Don't forget to set the VNC password. Test the remote connection. Reboot your computer (boot without any flags) (Correction - boot to 32bit mode: arch=i386). Connect remotely from other computer via VNC. In the "10.6 RadeonHD (10/20/2009 update)" package, there is a command line utility called RadeonDump:- Open terminal. Enter "sudo -s" & then enter password when asked. Change directory (cd) to where RadeonDump located. 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 More sharing options...
kizwan Posted March 21, 2011 Share Posted March 21, 2011 .i did the dmesg in ubuntu live cd. hopefuly it's the same output The dmesg is not complete. It missing encoder & LinkID. There are only TransmitterID in the log. Link to comment Share on other sites More sharing options...
atlee Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
jvilla Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
wmarsh Posted March 22, 2011 Author Share Posted March 22, 2011 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 More sharing options...
jvilla Posted March 22, 2011 Share Posted March 22, 2011 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 More sharing options...
wmarsh Posted March 22, 2011 Author Share Posted March 22, 2011 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 More sharing options...
Recommended Posts