Mobility Radeon - 10.6.6/7 guide for QE/CI - testing 10.7
Started by wmarsh, Jan 26 2011 10:32 PM
563 replies to this topic
#401
Posted 30 March 2011 - 02:15 AM
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]
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]
#402
Posted 30 March 2011 - 04:17 AM
This is "SPWG Notebook Panel Specification" document. It contain set of standard LCD panels specification.
#403
Posted 30 March 2011 - 04:44 PM
kizwan, on Mar 30 2011, 12:17 AM, said:
This is "SPWG Notebook Panel Specification" document. It contain set of standard LCD panels specification.
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....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.
#404
Posted 30 March 2011 - 05:52 PM
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.
Let me know.
#405
Posted 30 March 2011 - 07:07 PM
sydlix, on Mar 30 2011, 01:52 PM, said:
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.
Let me know.
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
Quote
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
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
Neither did trying to inject LinkFormat 01 00 00 00 as in iMac 7 and iMac 8
#406
Posted 30 March 2011 - 08:42 PM
wmarsh, on Mar 30 2011, 08:07 PM, said:
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
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
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.
#407
Posted 30 March 2011 - 09:31 PM
sydlix, on Mar 30 2011, 04:42 PM, said:
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.
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.
You might try injecting your EDID per this post.
http://www.insanelym...howtopic=208410
I set this up a while ago to eliminate one possible problem.
#408
Posted 31 March 2011 - 12:24 AM
sydlix, on Mar 30 2011, 04:42 PM, said:
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.
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.
#409
Posted 31 March 2011 - 01:47 AM
wmarsh, on Mar 30 2011, 08:24 PM, said:
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.
Quote
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: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
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....tification_data
So dong said we need for 0x48-0x4E
00 00 00 01 00 06 10total is 0x17 = 23
mine reads:
2F 26 40 A0 60 84 1Atotal 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 202000BCI 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 202000d8or 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
Slice, on Dec 2 2008, 09:33 AM, said:
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.
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.
lebidou, on Mar 13 2009, 07:05 AM, said:
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.
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.
http://www.insanelym...p...91042&st=74
Any thoughts?
#410
Posted 31 March 2011 - 02:07 PM
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.
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.
#411
Posted 31 March 2011 - 02:56 PM
sydlix, on Mar 31 2011, 10:07 AM, said:
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.
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.
Quote
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: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.
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.
#412
Posted 31 March 2011 - 03:12 PM
sydlix, on Mar 31 2011, 10:07 PM, said:
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.
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.
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.
#413
Posted 31 March 2011 - 03:54 PM
Can you provide the override file with this log from moninfo?
Here you go, I am ready to test it:
http://dl.dropbox.co...led_moninfo.txt
Here you go, I am ready to test it:
http://dl.dropbox.co...led_moninfo.txt
#414
Posted 31 March 2011 - 04:24 PM
kizwan, on Mar 31 2011, 11:12 AM, said:
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.
And I do have EDID in /System/Library/Display/Overrides, both as default and correct values.
Quote
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: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.
I think making an injector is worth the small time it takes to try this fix.
#415
Posted 31 March 2011 - 05:13 PM
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.
Hope wmarsh can provide something better.
#416
Posted 31 March 2011 - 08:10 PM
wmarsh, on Apr 1 2011, 12:24 AM, said:
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.
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.
#417
Posted 01 April 2011 - 12:34 AM
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"
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
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.
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"
Quote
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
dong:the last two should be checking if this is an Apple display
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
kizwan, on Mar 31 2011, 04:10 PM, said:
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.
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.
#418
Posted 01 April 2011 - 07:00 AM
wmarsh, on Apr 1 2011, 08:34 AM, said:
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.
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.
#419
Posted 03 April 2011 - 07:41 PM
hjs89, on Mar 5 2011, 08:31 PM, said:
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
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
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!
#420
Posted 03 April 2011 - 11:04 PM
wmarsh, on Mar 30 2011, 10:15 AM, said:
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]
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.
10.7_4330_1.JPG 141.85K
44 downloads
10.7_4330_2.JPG 100.27K
39 downloads
10.7_4330_3.JPG 96.01K
38 downloadsafter a wake from sleep.
10.7_4330_4.JPG 133.39K
39 downloads
dsdt_4330m.zip 1.75K
24 downloads
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users



Sign In
Create Account








