wmarsh Posted March 30, 2011 Author Share Posted March 30, 2011 New version of bootloader posted. This one does initialize video system for me with QE using 10.7 kexts and Flicker. Still has distorted colors. Will test other framebuffers, etc tommorrow. [EDIT -- found another bug, back soon] Link to comment Share on other sites More sharing options...
kizwan Posted March 30, 2011 Share Posted March 30, 2011 This is "SPWG Notebook Panel Specification" document. It contain set of standard LCD panels specification. Link to comment Share on other sites More sharing options...
wmarsh Posted March 30, 2011 Author Share Posted March 30, 2011 This is "SPWG Notebook Panel Specification" document. It contain set of standard LCD panels specification. Thank you kizwan. Your document shows timings for higher resolutions on a single link. This confirms what I have suspected, which is that while Apple may have achieved higher resolutions with a dual link (someone can take apart their brand new MBP and confirm this) other manufacturers may have taken a different tack. Specifically, there is an LDI standard and an OpenLDI standard which can also achieve higher resolutions. http://en.wikipedia.org/wiki/Low-voltage_d...ntial_signaling My testing shows whenever I uncomment the dual link lines in ati.c, I get a black screen (with a functional system) so the video does not enable. You have been contacting more people than I have and perhaps also have feedback. Now I would also note the new property "LinkType" which the MBPs inject as 00 00 00 00 It is entirely possible changing this property will change the link type. And while unreleased prototypes may have utilized this, I am not aware of any real Macs that have -- will look at more ioregs. I have tested 01 00 00 00 and 02 00 00 00 with no effect. I note in my Xorg.0.log, I see "[ 133.343] (II) RADEON(0): Output: LVDS, Detected Monitor Type: 2" I am wondering if this varies with you and mucha and is perhaps a clue. v4 of Loader posted for testing, this is based on trunk. Link to comment Share on other sites More sharing options...
sydlix Posted March 30, 2011 Share Posted March 30, 2011 wmarsh check out the imac 10,1 ioreg I posted in the other thread since there are different interesting link format and stuff lines, you may find useful to try it. I also recommend to use less lines possible since with the first version of modified trunk ati.c you provided I actually got one totally working boot, as you already know. I had the dual link flag (the second one into the framebuffer, not the one into device), set to 0x01, and had just placed again the dsdt after having removed it. Unfortunately I cannot replicate, but if you are right maybe the framebuffer is using dual link and we need single, play with the link type and dual link flags, put them to 0x00 and try the ones of the imac ioreg. Let me know. Link to comment Share on other sites More sharing options...
wmarsh Posted March 30, 2011 Author Share Posted March 30, 2011 wmarsh check out the imac 10,1 ioreg I posted in the other thread since there are different interesting link format and stuff lines, you may find useful to try it. I also recommend to use less lines possible since with the first version of modified trunk ati.c you provided I actually got one totally working boot, as you already know. I had the dual link flag (the second one into the framebuffer, not the one into device), set to 0x01, and had just placed again the dsdt after having removed it. Unfortunately I cannot replicate, but if you are right maybe the framebuffer is using dual link and we need single, play with the link type and dual link flags, put them to 0x00 and try the ones of the imac ioreg. Let me know. I have started commenting out lines that prove unnecessary or unhelpful.And yes I did comment out the dual link -- Thats what gives me black screen when previously I had a fully functional but blurry screen The code is posted so others can change it and help figure this out. I happened to catch dong on IRC today marsh: hi dong, do you know anything about lvds resolution support in macs?dong: not really, I only know about linux source wmarsh:I know you have been following our thread. I am trying to mod Graphics Enabler to support higher resolutions. Mac seems to use dual link, but am wondering if you have seen anything about LDI standard dong:first time heard of this So you only have limited resolutions available? [wmarsh:ok, well we will keep working. Issue is we can get QE up to 1350x768. Higher than that we get function system with blurry screen wmarsh:new MBP use dual link and we can inject this property, but gives black screen wmarsh:There is a LinkType property undocumented dong:If the apple driver only support dual link, then no luck. wmarsh:Maybe, but why the property if no function? Unproduced prototypes? Who knows? I am searching ioregs to see if I can learn dong:someone may need look into the binary driver to find out wmarsh:Thats how we found the ConnectInfo strings to modify dong:linkType and dualLink seem to be two separate properties wmarsh:Exactly wmarsh:I just realized iMacs also use Radeons and LVDS, so have more ioregs to examine wmarsh:IMac 7 I just see uses LinkFormat (another undocumented setting) 01 00 00 00, different from new MBP wmarsh:Maybe thats it for LDI dong:lol, I have no idea at the moment wmarsh:I'm glad to talk to you -- have enjoyed your RadeonHD for years wmarsh:If you get any ideas, send me a PM dong:that's good. I just added two-head support to my X1400 mobility. wmarsh:Nice, did not see that you posted it yet but I saw you had it coming dong:Is thinking of port Radeon, but not sure how long will it take [wmarsh:Do you have QE with X1400? dong:QE for X1400 is simple, just add DevID to ATIRadeonX1000.kext wmarsh:Not so simple for HD4330. I have it -- my solution works for most but not for me as my resolution is 1400x900 wmarsh:I have QE with blurry screen, or clear screen with your kext dong:yeah. And you have to use ATIFramebuffer for QE dong:I did not figure out how to cooperate my driver with those accelartion drivers wmarsh:Right, patch is easy once you figure it out. Lion and new MBP kext have moved FB to the controller wmarsh:What we did it hexedit the table that tells FB where to connect dong:hm, not easy to figure all the variables there [wmarsh:IMac 8,1 uses LinkFormat 01 00 00 00 too. Might be on to something. wmarsh:Actually, we have it pretty well down. Only issue is higher resolutions wmarsh:Multiple 5xxx people have done it. I helped a 3xxx person yesterday dong:even 3xxxx works now? That's great. wmarsh:Patch was easier -- fewer encoders. bcc9 wrote a program to decode AtomBios. Some people like me have a locked bios and have to use your old tool to extract it as gpu-z will not. dong:linkType is coming from EDID dong:EDID offset 0x4F, 4 bits wmarsh:Well, one would think it should, but we can inject whatever we want, so maybe no code for that dong:linkFormat EDID offset 0x50, 4 bits dong:next 4 bits are pixelFormat wmarsh:Let me check mine -- have it in file -- but it is recognized as 00 00 00 00 even with EDID correct wmarsh:Must not be picked up, mine is all 01 in 0x4f, 0x50 dong:oh, these may only apply to apple's own display wmarsh:You may have solved our problem. Let me mod my ati.c to inject the correct and see if it works dong:cause these funciton are named as getAppleLinkType, getAppleLinkFormat as such wmarsh:Yes but could they be reading it from EFI not EDID, so thats why its not picked up? dong:and there is a function isAppleDisplay dong:Apple's display has EDID offset 8 = 6, offset 9 = 0x10 wmarsh:Its beyond my ability, but maybe Chameleon ati.c could read and inject correct value? dong:ati.c handle with EDID? wmarsh:No. No label in code containing edid dong:any label of link? wmarsh:Wasn't before -- we just added them. 2 days ago. Thats how I discovered dual link gives black screen. wmarsh:I got new MacBook ioreg, added 12 labels. Mucha found others on second go. Compiles clean and values inject. wmarsh:We figured dual link would fix the problem, but it gave black screen wmarsh:I just turned on irc while I was going to go through more ioregs. Brainstorming is helpful. dong:ok, u r right. The driver obtain those values from IOReg first. Only read it from EDID after that failed. wmarsh:May be an issue with reading edid. I have mine in /System/library/Displays/Overides dong:That only apply to IODisplay. The FB driver trys to read EDID from the monitor via I2C directly. wmarsh:I have ioreg from when screen failed was black; don't see it -- but its not ioreg -l; might need to get another dong:The driver will not read linkType from EDID if it has non-zero values at offset 0x48, 49, 4A, 4C, or if 0x4B != 1, or 0x4D != 6, or 0x4E != 0x10 dong:the last two should be checking if this is an Apple display [wmarsh:Thats it then, but if we inject correct value we should be ok dong:yes, I guess there should be a general one that applys to all dispalys, otherwise only Apple's display can be used on genuine Mac machines Unfortunately his idea of injecting LinkType and LinkFormat from EDID did not change things for me at all. Neither did trying to inject LinkFormat 01 00 00 00 as in iMac 7 and iMac 8 Link to comment Share on other sites More sharing options...
sydlix Posted March 30, 2011 Share Posted March 30, 2011 I have started commenting out lines that prove unnecessary or unhelpful.And yes I did comment out the dual link -- Thats what gives me black screen when previously I had a fully functional but blurry screen The code is posted so others can change it and help figure this out. I happened to catch dong on IRC today Unfortunately his idea of injecting LinkType and LinkFormat from EDID did not change things for me at all. Neither did trying to inject LinkFormat 01 00 00 00 as in iMac 7 and iMac 8 wmarsh I think you are understimating something: I actually booted once with the drivers fully loaded, perfect colors and 1920x1080 resolution on LVDS. I was using 10.6.7 normal kexts, Shrike framebuffer with LVDS set as [02 00 00 00 40 00 00 00 09 01 00 00 02 00 00 05]. Stupid me I rebooted to check again, I can't replicate. If I remember correctly I was testing your first modified trunk ati.c. First of all I compiled the boot file, booted into SL, placed kexts with modified FB and boot file, repaired, rebooted. As usual, vga started and LVDS not. When I went to display config and selected detect displays, I got the LVDS to initialized with a BACKLIGHTED black screen. Now, this usually happens all the time. The LVDS is recognized in IOREG, Sysprofiler, but it ain't working. At boot is not initialized and I need to do the detect displays thing. Then is detected. black with backlight on. IMPORTANT: WITH MY NOT WORKING I CAN SELECT RESOLUTION BUT NO REFRESH RATE IS DETECTED/SELECTABLE. This may lead to something. However, I decided to edit the dual link value to 0x01 instead 0x02. But before I wanted to try your stock version without DSDT. So I delete the dsdt and boot again. SAME. Ok then I put again the dsdt into place along with the new 0x01 boot file. I reboot and my LVDS turns on together with the vga... But why this actually happened only once? Dunno. Investigating. I need your first version ati.c, please, with also link format options an that stuff. Link to comment Share on other sites More sharing options...
wmarsh Posted March 30, 2011 Author Share Posted March 30, 2011 wmarsh I think you are understimating something: I actually booted once with the drivers fully loaded, perfect colors and 1920x1080 resolution on LVDS. I was using 10.6.7 normal kexts, Shrike framebuffer with LVDS set as [02 00 00 00 40 00 00 00 09 01 00 00 02 00 00 05]. Stupid me I rebooted to check again, I can't replicate. If I remember correctly I was testing your first modified trunk ati.c. First of all I compiled the boot file, booted into SL, placed kexts with modified FB and boot file, repaired, rebooted. As usual, vga started and LVDS not. When I went to display config and selected detect displays, I got the LVDS to initialized with a BACKLIGHTED black screen. Now, this usually happens all the time. The LVDS is recognized in IOREG, Sysprofiler, but it ain't working. At boot is not initialized and I need to do the detect displays thing. Then is detected. black with backlight on. IMPORTANT: WITH MY NOT WORKING I CAN SELECT RESOLUTION BUT NO REFRESH RATE IS DETECTED/SELECTABLE. This may lead to something. However, I decided to edit the dual link value to 0x01 instead 0x02. But before I wanted to try your stock version without DSDT. So I delete the dsdt and boot again. SAME. Ok then I put again the dsdt into place along with the new 0x01 boot file. I reboot and my LVDS turns on together with the vga... But why this actually happened only once? Dunno. Investigating. I need your first version ati.c, please, with also link format options an that stuff. Here's version 0.1. Nothing ever disappears from the internet. If it works, we will bag the others. v3 and 4 are based on v1 -- v2 was mucha's -- and you could start with those and comment out lines. You might try injecting your EDID per this post. http://www.insanelymac.com/forum/index.php?showtopic=208410 I set this up a while ago to eliminate one possible problem. Link to comment Share on other sites More sharing options...
wmarsh Posted March 31, 2011 Author Share Posted March 31, 2011 As usual, vga started and LVDS not. When I went to display config and selected detect displays, I got the LVDS to initialized with a BACKLIGHTED black screen. Now, this usually happens all the time. The LVDS is recognized in IOREG, Sysprofiler, but it ain't working. At boot is not initialized and I need to do the detect displays thing. Then is detected. black with backlight on. IMPORTANT: WITH MY NOT WORKING I CAN SELECT RESOLUTION BUT NO REFRESH RATE IS DETECTED/SELECTABLE. This may lead to something. However, I decided to edit the dual link value to 0x01 instead 0x02. But before I wanted to try your stock version without DSDT. So I delete the dsdt and boot again. SAME. Ok then I put again the dsdt into place along with the new 0x01 boot file. I reboot and my LVDS turns on together with the vga... But why this actually happened only once? Dunno. Investigating. I need your first version ati.c, please, with also link format options an that stuff. in v5 (not released -- with dong's suggestions included) IF I switch display's with bios prior to booting, I can repeat what you have. VGA works. LVDS recognized, doesn't work. If I detect displays everything goes black. Link to comment Share on other sites More sharing options...
wmarsh Posted March 31, 2011 Author Share Posted March 31, 2011 in v5 (not released -- with dong's suggestions included) IF I switch display's with bios prior to booting, I can repeat what you have. VGA works. LVDS recognized, doesn't work. If I detect displays everything goes black. Looking at above ioreg, I note a number of null values under VID@0 which ought to be read from EDID. I think LVDS fails to initialize because EDID is not being read during FB startup. This fits with dong's conversation above where he said: dong:ok, u r right. The driver obtain those values from IOReg first. Only read it from EDID after that failed.wmarsh:May be an issue with reading edid. I have mine in /System/library/Displays/Overides dong:That only apply to IODisplay. The FB driver trys to read EDID from the monitor via I2C directly. wmarsh:I have ioreg from when screen failed was black; don't see it -- but its not ioreg -l; might need to get another dong:The driver will not read linkType from EDID if it has non-zero values at offset 0x48, 49, 4A, 4C, or if 0x4B != 1, or 0x4D != 6, or 0x4E != 0x10 dong:the last two should be checking if this is an Apple display Now changing the code is impossible. But, we can change what the code reads. Chameleon can inject the EDID. I don't remember how, but I remember it can and can figure it out. I have always loaded the correct EDID. But we could load some other EDID. Why would we want to? The bytes dong referred to (0x48-0x4e) are 72-78. These are after the descriptor block so we should be able to change them without functional effect. And we can change the last byte (0x7f) 127 to make the checksum correct. http://en.wikipedia.org/wiki/Extended_disp...tification_data So dong said we need for 0x48-0x4E 00 00 00 01 00 06 10 total is 0x17 = 23 mine reads: 2F 26 40 A0 60 84 1A total is 0x233 = 563 the difference is 540 = 0x21c. Last 2 digits for checksum is 0x1c My last byte is 0xbc Adding these for new last bye 0x1c + 0xbc = 0xd8 So instead of my actual EDID 00FFFFFF FFFFFF00 30E40C02 00000000 00130103 90231378 0A1BE59E 59509826 0E505400 00000101 01010101 01010101 01010101 01012F26 40A06084 1A303020 350059C2 1000001B 2F2640A0 60841A30 30203500 59C21000 001B0000 00FE004D 54364B47 80313536 5744310A 00000000 00000000 00000000 0002010A 202000BC I could inject with Chameleon 00FFFFFF FFFFFF00 30E40C02 00000000 00130103 90231378 0A1BE59E 59509826 0E505400 00000101 01010101 01010101 01010101 01012F26 40A06084 1A303020 350059C2 1000001B 00000001 00061030 30203500 59C21000 001B0000 00FE004D 54364B47 80313536 5744310A 00000000 00000000 00000000 0002010A 202000d8 or in base64 (which I recall Chameleon wants) AP///////wAw5AwCAAAAAAATAQOQIxN4ChvlnllQmCYOUFQAAAABAQEBAQEBAQEBAQEBAQEBLyZA oGCEGjAwIDUAWcIQAAAbAAAAAQAGEDAwIDUAWcIQAAAbAAAA/gBNVDZLR4AxNTZXRDEKAAAAAAAA AAAAAAAAAAIBCiAgANg= Or maybe we can inject a modified EDID with DSDT? We are not the 1st to consider this. from the old ATIFramebuffer thread Yes, I see your monitor really have EDID EEPROM accessible by i2c bus. So RadeonDump is not perfect trying to get it.As well as ATI_Hypoprion. You can rewrite IOGraphics (yes, sources at my thread is compilable and working) to get EDID other way. Now it calls framebuffer->getEDID(). But you can write here other procedure. Simplest way is injecting EDID by info.plist. For a what? IOGraphics needs EDID for powermanagement purpose. Framebuffer needs EDID to switch resolution. But we can't influence on Hypoprion. Did you see posts by Lebidou? He successfully inject LVDS,EDID using key ATY,EFIDisplay = LVDS. and I've done more searching on my side, and as I thought, building a fake EDID with AtomBios informations gives enough information to the "official" framebuffer.I've modified ATILead to dump these infos (using AtomDis code), build an EDID string and inject it as "LVDS,EDID". However as there is no color information it brokes ColorSync. Can't be a workaround for non DDC internal panels ? I've seen something in the xf86 radeon hd driver about fake edid and the sLVDSInfos structure, so maybe it is what it uses to. I'll make the code nicer and post it if you want to. and here http://www.insanelymac.com/forum/index.php...91042&st=74 Any thoughts? Link to comment Share on other sites More sharing options...
sydlix Posted March 31, 2011 Share Posted March 31, 2011 I don't know if EDID is the problem but take this in account: Display settings like resolution and refresh rate for the working screens (vga, hdmi) are remembered by the system. LVDS starts off, it's resolution settings are remembered when I detect displays but it shows: 1) no refresh rate setting 2) brightness does not work, is not remembered. This must mean someting. Link to comment Share on other sites More sharing options...
wmarsh Posted March 31, 2011 Author Share Posted March 31, 2011 I don't know if EDID is the problem but take this in account: Display settings like resolution and refresh rate for the working screens (vga, hdmi) are remembered by the system. LVDS starts off, it's resolution settings are remembered when I detect displays but it shows: 1) no refresh rate setting 2) brightness does not work, is not remembered. This must mean someting. I think EDID is needed at 2 stages dong:ok, u r right. The driver obtain those values from IOReg first. Only read it from EDID after that failed.wmarsh:May be an issue with reading edid. I have mine in /System/library/Displays/Overides dong:That only apply to IODisplay. The FB driver trys to read EDID from the monitor via I2C directly. Could well be IODisplay is working for us and FB driver is not reading EDID. Tonight or tommorrow I will mod ati.c to inject above modified EDID as lebideau did. Will see what happens. A more generalized solution should be possible but is beyond my rudimentary c skills. Link to comment Share on other sites More sharing options...
kizwan Posted March 31, 2011 Share Posted March 31, 2011 I don't know if EDID is the problem but take this in account: Display settings like resolution and refresh rate for the working screens (vga, hdmi) are remembered by the system. LVDS starts off, it's resolution settings are remembered when I detect displays but it shows: 1) no refresh rate setting 2) brightness does not work, is not remembered. This must mean someting. 1) Refresh rate is declared in EDID (Feature Support). If there is no refresh rate setting, EDID is not properly detected. 2) This is common issue on non-Apple computer with OS X. I just add PNLF device in DSDT to get brightness support but it's not perfect. Brightness will reset to max after reboot. There are still a couple of solutions I haven't look into. As long as driver can detect the monitor, you can override EDID using CharredPC's display override method. However CharredPC use generic monitor vendor & device IDs in the guide (these IDs used by OS X when it failed to properly recognized the monitor connected to it). You can find out how to obtain your monitor vendor & device IDs by referring to "Vesa Enhanced Extended Display Identification Data Standard" document. I also has explained a little bit here. Link to comment Share on other sites More sharing options...
sydlix Posted March 31, 2011 Share Posted March 31, 2011 Can you provide the override file with this log from moninfo? Here you go, I am ready to test it: http://dl.dropbox.com/u/8433914/rbgled_moninfo.txt Link to comment Share on other sites More sharing options...
wmarsh Posted March 31, 2011 Author Share Posted March 31, 2011 As long as driver can detect the monitor, you can override EDID using CharredPC's display override method. However CharredPC use generic monitor vendor & device IDs in the guide (these IDs used by OS X when it failed to properly recognized the monitor connected to it). You can find out how to obtain your monitor vendor & device IDs by referring to "Vesa Enhanced Extended Display Identification Data Standard" document. I also has explained a little bit here. Kizwan, I know you know alot about EDID injection. And I do have EDID in /System/Library/Display/Overrides, both as default and correct values. dong:ok, u r right. The driver obtain those values from IOReg first. Only read it from EDID after that failed.wmarsh:May be an issue with reading edid. I have mine in /System/library/Displays/Overides dong:That only apply to IODisplay. The FB driver trys to read EDID from the monitor via I2C directly. What dong said is IODisplay may work even if FB driver did not get EDID as it needs. I think making an injector is worth the small time it takes to try this fix. Link to comment Share on other sites More sharing options...
sydlix Posted March 31, 2011 Share Posted March 31, 2011 I can confirm that the Override method does nothing more than the system was doing before. Indeed I got the EDID from IORegexplorer, because it was already loaded, adding the plist just loaded the same values, still screen OFF at boot and black with backlight after detection. Hope wmarsh can provide something better. Link to comment Share on other sites More sharing options...
kizwan Posted March 31, 2011 Share Posted March 31, 2011 And I do have EDID in /System/Library/Display/Overrides, both as default and correct values. What dong said is IODisplay may work even if FB driver did not get EDID as it needs. I think making an injector is worth the small time it takes to try this fix. I thought you're going to try to inject modified EDID? It's doesn't take a lot of time to prepare the display override file. Link to comment Share on other sites More sharing options...
wmarsh Posted April 1, 2011 Author Share Posted April 1, 2011 Method does not work. If you look at attached ioreg at VID@0, you will see LinkFormat, LinkType as 0 and PixelFormat null despite being injected as 30, 30, 20 and despite modified EDID injected at @0,LVDS,EDID Which means FB reads EDID from i2c, and fails to initialize these values. And we cannot trick it by inserting false EDID in EFI. Now back in the 8 bit days when I did assembly, we could just hexedit no-ops into the section dong referred to: "isAppleDisplay" dong:The driver will not read linkType from EDID if it has non-zero values at offset 0x48, 49, 4A, 4C, or if 0x4B != 1, or 0x4D != 6, or 0x4E != 0x10dong:the last two should be checking if this is an Apple display What could work? 1)modifying the EDID on the EPROM on the LCD 2)disabling the isAppleDisplay section by hex editing it with the modern equivalent of no-ops 3)Disassembling the Framebuffer, disabling this section, then reassembling it I thought you're going to try to inject modified EDID? It's doesn't take a lot of time to prepare the display override file. Its been there both in correct values and default ones for a very long time. If it was that simple I would have my system fully functional. You forget, kizwan, that I was the one who suggested to bcc9 that this method could be used to enable LVDS, and so I've had a head start on all of you. Link to comment Share on other sites More sharing options...
kizwan Posted April 1, 2011 Share Posted April 1, 2011 Its been there both in correct values and default ones for a very long time. If it was that simple I would have my system fully functional. You forget, kizwan, that I was the one who suggested to bcc9 that this method could be used to enable LVDS, and so I've had a head start on all of you. I didn't realize there's a race involved. I never did said fixing EDID will make your LVDS fully working. It seems you unable to read & understand my post carefully. Link to comment Share on other sites More sharing options...
Luke1995 Posted April 3, 2011 Share Posted April 3, 2011 WOORRKS!!!!!!!!!!!!!!!!! Finally QE/CI was enabled on my 4570m!!!!!!!!!!! I can't believe it yet - Translucent Toolbar - Wavy effect on Dashboard - DVD player loads - Front Row works But it's not perfect for the moment. - As you can see my apple at the up-left corner it's green. The same happens with HD 4350 (desktop version of this chipset). - Internal Display it's black, but HDMI port works, this might be improved editing the framebuffer. - The resolutions of my HDMI display and my LVDS display are switched, but I can fix it with the SwitchRes Tool , maybe when the LVDS is correctly working it'll be fixed. About how it worked: - You must be in Snow Leopard 10.6.6 - You must add your deviceID to ATI4600Controller.kext, mine is 0x95531002, it can variate in each case. - Edit ATIFramebuffer.kext with modified Vervet framebuffer, maybe others will work, but now is which I'm using now. - Bootloader with ATI injector configured with Vervet Fb. You can use Kabyl's boot if it works with your graphic card or modify other bootloader. I'll do a how-to after do more test to fix the issues. One screenshoot of my desktop, you can see my system profile with my card injected, DVD player working and translucent bar Sorry, the system is in Spanish but I think that you'll understand the important things hehe Hello Kizwan and hjs89 Loving the work you're putting in on this I have the same card as you, (Dev. ID 0x9553), and was wondering if you could send me the modified files that you used to enable QE and CI. I tried to patch the connection table, but it failed and I had to restore the original files. Many Thanks! Link to comment Share on other sites More sharing options...
crazybirdy Posted April 3, 2011 Share Posted April 3, 2011 New version of bootloader posted. This one does initialize video system for me with QE using 10.7 kexts and Flicker. Still has distorted colors. Will test other framebuffers, etc tommorrow. [EDIT -- found another bug, back soon] Today, I test on Lion 11A419, modify ATI4600Controller.kext with Shrike and use dsdt.aml. Get the same result. The dsdt is base on the ati.c from trunk boot and the follow items need to be modified. I get data after trunk boot and " iorg -l -w0 > iorg.txt". "model", Buffer (0x1C) { "ATI Mobility Radeon HD 4330" }, "VRAM,totalsize", Buffer (0x04) { 0x00, 0x00, 0x00, 0x20 /* 0x10=256MB, 0x20=512MB, 0x40=1024MB */ }, "assigned-addresses", Buffer (0x50) { /* 0000 */ 0x10, 0x00, 0x01, 0xC2, 0x00, 0x00, 0x00, 0x00, ...................................... }, "ATY,bin_image", Buffer (0xF800) { /* 0000 */ 0x55, 0xAA, 0x7C, 0xE9, 0x21, 0x02, 0x00, 0x00, ...................................... } Odd colors is the same as before, i don't know how to solve it. BTW, the dsdt works fine on 10.6.7 with QE/CI. after a normal start. after a wake from sleep. dsdt_4330m.zip Link to comment Share on other sites More sharing options...
wmarsh Posted April 3, 2011 Author Share Posted April 3, 2011 Odd colors is the same as before, i don't know how to solve it. BTW, the dsdt works fine on 10.6.7 with QE/CI. If you otool -vt ATISupport, you will see its in the code. Framebuffer won't load EDID properly unless its on MAC hardware -- or at least labeled as a MAC EDID. Theoretically, one could modify the code by inserting no-ops with hex editor. I tried modifying the EPROM on my LVDS screen, but unfortunately mine doesn't support writing to it. Link to comment Share on other sites More sharing options...
crazybirdy Posted April 3, 2011 Share Posted April 3, 2011 If you otool -vt ATI4600Controller, you will see its in the code. Framebuffer won't load EDID properly unless its on MAC hardware -- or at least labeled as a MAC EDID. Theoretically, one could modify the code by inserting no-ops with hex editor. I tried modifying the EPROM on my LVDS screen, but unfortunately mine doesn't support writing to it. So, I need to find Xcode for Lion first, and try to modify the code. But I don't know how to modify the code. Actually if i setup the display to no more sleep, the colors will always be normal with QE/CI. I think I can accept it. Link to comment Share on other sites More sharing options...
somorastik Posted April 4, 2011 Share Posted April 4, 2011 Anyone tried this sh** for Radeon Mobility 3470??? Link to comment Share on other sites More sharing options...
idoc Posted April 4, 2011 Share Posted April 4, 2011 Hi Guys, I have an MSI G660R with HD 5870. With default Nomascus hard-coded into boot file and 1002_68a0.rom file in /Extra I get full QE/CI (1920x1080) but I don't have refresh rates available in display preferences and display sleep or normal sleep result in a blank screen (with backlight) ie no reposting of the screen. This sounds similar to what you are getting with the series 4xxx cards except for the full screen on initial boot. I've looked at the patching of the framebuffer but mine seems to be OK for the LVDS (not for the HDMI but this still works detected as DP). I have to deep sleep to get the screen back again. Backlight is controlled through BIOS at this stage,OSX can't change it but it does change if on battery vs power. One boot in 20 results in a screen with interlacing artifacts. Certainly my laptop's EDID is detected (?correctly). My ioreg file is attached. Cheers Steve GX660RScreenWorking.zip Link to comment Share on other sites More sharing options...
c0ke Posted April 4, 2011 Share Posted April 4, 2011 Hi guys! Finally I've got it working, both my mobility radeon HD4330 displays (LVDS & VGA) are now working fine together! I edited the 10.6.7 ATIFramebuffer Peregrine personalities at offset 00037278 (32 bit LVDS), 00037288 (32 bit VGA), 00010F60 (64 bit LVDS) and 00010F70 (64 bit VGA) as suggested by kizwan, with these strings: 02000000400000000901000002010001 (LVDS) 10000000100000000001000002010102 (VGA) Just a note: working with mirroring off sometimes it seems that the internal LVDS has a smaller range of colors, for example I see a color scale instead of linear gradients... Link to comment Share on other sites More sharing options...
Recommended Posts