Jump to content

Editing custom personalities for ATI Radeon HD[45]xxx


  • Please log in to reply
757 replies to this topic

#321
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 719 posts
  • Gender:Male
  • Location:South NSW, Australia

Your personality looks very close to mine. May I have your System Profiler output and ioreg dump?
I'd like to see how OS X detect your card.

Thanks.


my ioreg looks very similar to yours, but you can get HDMI, VGA working, Also you can get your LVDS working as a second VGA.

But bottom line is i will be very surprised if someone gets LVDS to work and recognize correctly without new version-ed drivers. just does not work, the support must not be there, even RadeonFramebuffer cannot load it so doing it manually wont work either. i guess we wait till further drivers and stick with dodgy way of doing it like me :rolleyes:

#322
Fjtorsol

Fjtorsol

    InsanelyMac Protégé

  • Members
  • PipPip
  • 52 posts
  • Gender:Male

Well radeon_bios_decode could be made to give you the offsets in the bios of those fields. A program-based solution like that is probably easiest as the atom bios structures aren't simply at fixed offsets.
Then you'd have to follow along with the instructions to update the checksum(s); there's info on that over on netkas's forum.


Could you please code such app it would help in many cases avoiding the need of binary patching the drivers after each update and also would solve the cases where an i2CID is out of the 0x9X range and can not be associated with any personality.

#323
mojtabazarei

mojtabazarei

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 posts
  • Gender:Male
  • Location:IRAN

my ioreg looks very similar to yours, but you can get HDMI, VGA working, Also you can get your LVDS working as a second VGA.

But bottom line is i will be very surprised if someone gets LVDS to work and recognize correctly without new version-ed drivers. just does not work, the support must not be there, even RadeonFramebuffer cannot load it so doing it manually wont work either. i guess we wait till further drivers and stick with dodgy way of doing it like me ;)



no atlee i think the driver is full but doesnt have support for LVDS or we dont know how to mke it working ? i think with further driver the result is same as now

#324
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 719 posts
  • Gender:Male
  • Location:South NSW, Australia
Everyone wanted more details regarding how linux chooses certain encoders and transmitter, i debugged the video using an option which gives too much detail but anyway here it is, not sure if it will get us a step closer to getting LVDS working but anyway.

This is ATI 5650m debugged.

So info here is
LVDS works off UNIPHY
Connector 17, CRTC 10 uses Encoder 16.
VGA works off DAC
Connector 19, CRTC 11 uses Encoder 20.
did another dmesg using debug for HDMI, which is not in this text file but anyway.
HDMI works off UNIPHY1
Connector 21, CRTC 11 uses Encoder 18.

Attached File  DRM_DEBUG.zip   9.12KB   15 downloads

From my final understanding:
02 connector could only be 00,00, 20,01 or 10,00 using mucha's guide and removing the others that don't match. 12,04,21,03,01,02,01,12,02,04
800 connector could only be 01,11 or 21 so that would mean 21,03/01,02,01,12 or 11,02.***(21,03 the only working one without interference)***
10 connector could only be 00,10.

not sure where 22,05 sits though.

so that's my final understanding of all of it.

Also regarding DP2 kexts earlier i forgot to include GA,GL,VA driver which works with the new kexts posted earlier.

What is interesting is new personality in 6000 series kext where VGA and DP run off 00,00. Gave me an idea as it's a dual link i will use 00,00 for VGA and 00,00 for LVDS.

#325
k540kkk

k540kkk

    InsanelyMac Protégé

  • Members
  • Pip
  • 27 posts

Here is my conclusion: ... ... ...

LVDS i can do a dodgy way, for some wierd reason it replicates VGA edid and also (1) enables LVDS screen using same edid and same connector and everything. Very dodgy way of doing it is making LVDS controlflag 14, HDMI is 204, VGA is 10. By Flagging LVDS with 14 it will allow Mirroring and Extended desktop but (2) LVDS isn't really working it's just (3) running 2 sets of the VGA screen but they act as seperate screens wierd huh?

... ... ...

If you use HDMI, you will (4) get interference because LVDS is really the VGA connection. you can try and find something that don't interfere but there is no real solution. Use VGA or use HDMI.

... ... ...

Also with the Baboon layout i didn't have to change much, (5) conector does not do anything, (6) senseid does not do anything. (7) lot's of combinations of encoders/transmitters will work with the new kexts from Lion DP2 package. Pretty much all combos work :( just make sure you(8) keep VGA on 00,00 or 00,10.

The most important feature that makes any difference is (9) control flags everything else really does not matter.


I'm interested in a dodgy way you have discovered. I've tested your Baboon personality with my Ipomoea to see how dodgy way is but nothing different on my system. LVDS is never been detected, never seen any output on LVDS screen.

Here is personality tested in attempt to see what the dodgy way is.
Patched Ipomoea based on @atlee's Baboon
02 00 00 00 14 00 00 00 00 01 00 00 01 12 01 07 (LVDS) used as-is
00 08 00 00 04 02 00 00 00 01 00 00 21 03 02 02 (HDMI) change SenseId to 02, tested encoder 2205 = No output on screen
10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 08 (VGA) change encoder=00

By refer to your quote :
(1) What kind of "enables LVDS screen" do you get?
(2) This means there is no output on physical LVDS screen, right?
(3) How can you determine that LVDS is enabled and act as another VGA screen?
(4) No question, just want to see the interference(if possible).
(5) I agree with you, connector does nothing.
(6) SenseId is important for me, in my HDMI case, if SenseId is incorrect, screen is not detected.
(7) Just FYI, not sure about this, in my HDMI case, There will be output on screen only when transmitter/encoder=2103. Please notice that if SenseId is correct, OSX will detect HDMI as we can see in System Profiler but will be no output on screen if transmitter/encoder is not 2103.
00 08 00 00 04 02 00 00 00 01 00 00 21 03 02 01 (HDMI) not detected in System Profiler, no output on screen
00 08 00 00 04 02 00 00 00 01 00 00 22 05 02 02 (HDMI) senseid is correct=Detected in System Profiler, encoder incorrect=No output on screen
00 08 00 00 04 02 00 00 00 01 00 00 21 03 02 02 (HDMI) senseid is correct=Detected in System Profiler, encoder correct=output on screen

(8) My VGA is only worked with 0000.
(9) Only Control flag=14 can give corrupt output on LVDS (the only case that show something on screen).
02 00 00 00 40 00 00 00 00 01 00 00 01 12 0X 07 (LVDS) X=0,1,2,3,4 show blank/black screen, backlight on
02 00 00 00 14 00 00 00 00 01 00 00 01 12 01 07 (LVDS) show blank/black screen, backlight on

02 00 00 00 14 00 00 00 00 01 00 00 01 12 0X 07 (LVDS) X=0,2 give me corrput screen both LVDS and HDMI. VGA not detected, System Profiler show no screen detected.
Incorrect value in LVDS can make HDMI and VGA not working. This means only a single line of incorrect value can crack down the whole system.
Attached File  110328_034231.jpg   403.44KB   33 downloads

#326
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 719 posts
  • Gender:Male
  • Location:South NSW, Australia
@k540kk

Patched Ipomoea, Try this if nothing, Try changing flag 40 to 214.

Personality: Ipomoea

ConnectorInfo count in decimal: 3Disk offset in decimal 501244    

02  00  00  00  40 00  00  00  00  01  00  00  00 00 01  07 

00  08  00  00  04  02  00  00  00  01  00  00  11  02  04  02  (Try 01,12 or 01,02)

10  00  00  00  10  00  00  00  00  01  00  00  00  00  00  08

By refer to your quote :
(1) What kind of "enables LVDS screen" do you get?
Duplicated VGA output.
(2) This means there is no output on physical LVDS screen, right?
Yes and No, no real definetion in not working as screen is virtual on.
(3) How can you determine that LVDS is enabled and act as another VGA screen?
Each screen has there own EDID. Use SwitchResX and it will tell you how many monitors you have and also you can export EDID.
(4) No question, just want to see the interference(if possible).
As per below.
(5) I agree with you, connector does nothing.
True and not true depends how you look at it.
(6) SenseId is important for me, in my HDMI case, if SenseId is incorrect, screen is not detected.
Sense ID not sure why any values work :(
(7) Just FYI, not sure about this, in my HDMI case, There will be output on screen only when transmitter/encoder=2103. Please notice that if SenseId is correct, OSX will detect HDMI as we can see in System Profiler but will be no output on screen if transmitter/encoder is not 2103.
HDMI could be 01,02/21,03/11,02/01,12 according to how Apple use there certain combinations and referring also to mucha's guide and also results from Ubuntu.
(8) My VGA is only worked with 0000.
00,00 is dual connection so use 00,00 for LVDS as well.
(9) Only Control flag=14 can give corrupt output on LVDS (the only case that show something on screen).
Try 40, 100, 214 there are a few.

Try patching this personality which might work for your card.
Personality: Pithecia
ConnectorInfo count in decimal: 3
Disk offset in decimal 500508
00  04  00  00  04  03  00  00  00  01  00  00  21  03  02  04
04  00  00  00  14  02  00  00  00  01  00  00  00  00  04  03
10  00  00  00  10  00  00  00  00  01  00  00  00  00  00  01
Change to
Personality: Pithecia
ConnectorInfo count in decimal: 3
Disk offset in decimal 500508
00  08  00  00  04  02  00  00  00  01  00  00  21  03  02  04 (if 21,03 not work try the others i said)
02  00  00  00  14  02  00  00  00  01  00  00  00  00  04  03
10  00  00  00  10  00  00  00  00  01  00  00  00  00  00  01


#327
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

Attached File  110328_034231.jpg   403.44KB   33 downloads

Based on this picture, I know the controller or framebuffer kexts is not loaded (ATI6000Controller.kext ???). If possible, setup remote connection. Connect remotely via vnc & check whether controller & framebuffer kexts are loaded or not.

#328
k540kkk

k540kkk

    InsanelyMac Protégé

  • Members
  • Pip
  • 27 posts
@atlee, Have you got behavior like this on Windows?

Using Catalyst Control Center on Windows 7, It allows only 2 monitors activated at the same time. When I tried to activate 3rd monitor, It forced me to select one of active monitors to be disabled.

Just notice that this maybe limitation on this card. Only 2 monitors can be activated at the same time.
Right now,No matter what personality we have tried,we've got only HDMI and VGA working.
Perhaps the personality we used is correct, we may need a method to disable HDMI or VGA and then enable LVDS.



#329
doof

doof

    InsanelyMac Protégé

  • Members
  • PipPip
  • 50 posts

@atlee, Have you got behavior like this on Windows?


You get two displays from any combo of the DVI and HDMI ports >2 requires using the MDP. Manual page 13

#330
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,278 posts
  • Gender:Male

I forgot to update. ;)

If you have time to do it, that would be wonderful. It will be useful for mobility card too.

I wasn't exactly volunteering, but if it turns out to be simple enough I could.
However first information needs to be sorted out: what's working, what are the minimal changes required for the various platform cards. If the normal case for desktop cards is that only the senseid needs to be fixed, then that could be automated. If there is no normal case, then a big list of the cards and their patches needs to be created first.

This feature would be great too. ;) So the i2cid value is not hardware dependent?

I should think it is. I wouldn't want to flash the i2cid to some new value unless I was sure of what I was doing.

#331
Fjtorsol

Fjtorsol

    InsanelyMac Protégé

  • Members
  • PipPip
  • 52 posts
  • Gender:Male

I should think it is. I wouldn't want to flash the i2cid to some new value unless I was sure of what I was doing.



It is safe, I flashed the iMac 8,1 VBIOS to my Mobility Radeon HD 2600 XT and it booted perfectly the problem is that the changes compared to my VBIOS included different indexes for the connector types resulting in a working VGA without I2CID, as the matching connector I2CID was intended for ANALOG I2CID-less S-VIDEO, so it worked without EDID. Anyway this demonstrates that it at least can be tried as the I2C ID's seem to be only numerical indexes asociated to each connector with the only intention of enumerating. It would involve getting rid of the binnary patching in many cases after each OSX update, I think It does worth a try.

#332
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 719 posts
  • Gender:Male
  • Location:South NSW, Australia

@atlee, Have you got behavior like this on Windows?


If you read mobility graphics cannot do triple monitors unless it has the ports, if only VGA and HDMI, thats it 2 at a time. but LVDS and HDMI or LVDS and VGA should work.





Final conclusion based on 5650m card only.

21,03 is HDMI, 01,02 causes interference with laptop screen, 11,02 also fuzzy, 01,12 also.

MBP2011 drivers LVDS 00,00 create black, 10,00 create black, 20,01 create fuzzy. conclusion here is it's either 10,00 or 00,00. i doubt 20,01 but might be. using Lion DP2 kexts all 3 combos are black.

VGA is 00,10, or you can use 00,00 for VGA and 00,00 for LVDS because it's a dual connection.

Now 2 major concerns regarding Controlflags and Features.

Changing ControlFlags can activate or deactivate certain screens. Changing Features can also do the same behaviour. I think overtime after study more newer version kexts that the features and flags will make sense. Example LVDS features 09,01 makes the screen not work, just 09 still not work. Just 01 then it makes a huge difference.

Using Lion DP2 kexts I can use Langur/Hoolock/Baboon/Eulemur without patching and LVDS and VGA turn on. duplicate VGA but it show's and looks like it's working and also QE/CI works. You might need SwitchResX to change res.

I think if our cards would or could work fully then it would auto detect and load using DP2 kexts but it doesn't, forcing the RadeonFramebuffer only activates 2 connections and not LVDS so again i think if our cards could work then it would auto connect the interface.

#333
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,278 posts
  • Gender:Male
Ok, I've made a new version of radeon_bios_dump, version 0.2 in post #1. This new version reports the byte offsets in decimal for the type/encoder/i2cid fields that I'm decoding. The new version also prints the PCI vendor&device ID (not just the sub-ids) so I think there's now enough information being printed for someone to start a patch database...

#334
doof

doof

    InsanelyMac Protégé

  • Members
  • PipPip
  • 50 posts

Ok, I've made a new version of radeon_bios_dump, version 0.2 in post #1. This new version reports the byte offsets in decimal for the type/encoder/i2cid fields that I'm decoding. The new version also prints the PCI vendor&device ID (not just the sub-ids) so I think there's now enough information being printed for someone to start a patch database...


Thanks for making this. I'm game. Dumping the rom from xfx 6870 with your new version gives me:

ATOM BIOS Rom:
SubsystemVendorID: 0x1682 SubsystemID: 0x3100
IOBaseAddress: 0x0000
Filename: 687AZNF.BIN
BIOS Bootup Message:
BARTS XT HYNIX/SAMSUNG GDDR5 32Mx32 BIOS

PCI ID: 1002:6738
Connector at index 0
Type [@offset 44824]: DisplayPort (10)
Encoder [@offset 44828]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44952]: 0x90, OSX senseid: 0x1
Connector at index 1
Type [@offset 44834]: DisplayPort (10)
Encoder [@offset 44838]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44979]: 0x91, OSX senseid: 0x2
Connector at index 2
Type [@offset 44844]: HDMI-A (11)
Encoder [@offset 44848]: INTERNAL_UNIPHY1 (0x20)
i2cid [@offset 45006]: 0x93, OSX senseid: 0x4
Connector at index 3
Type [@offset 44854]: DVI-D (3)
Encoder [@offset 44858]: INTERNAL_UNIPHY1 (0x20)
i2cid [@offset 45033]: 0x95, OSX senseid: 0x6
Connector at index 4
Type [@offset 44864]: DVI-I (2)
Encoder [@offset 44868]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 45070]: 0x94, OSX senseid: 0x5
Connector at index 5
Type [@offset 44874]: DVI-I (2)
Encoder [@offset 44878]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 45070]: 0x94, OSX senseid: 0x5

There are two personalities that are close

Personality: Duckweed
ConnectorInfo count in decimal: 4
Disk offset in decimal 500828
0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02
0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04
0000030 00 02 00 00 04 02 00 00 00 01 00 00 00 00 06 05
0000040

which works but its missing the DVI-I connector info which results in no output from the lower connector. The other personality that looks similar is Gibba.

Personality: Gibba
ConnectorInfo count in decimal: 5
Disk offset in decimal 501084
0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 05 01
0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 04 02
0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 06 04
0000030 00 02 00 00 04 02 00 00 00 01 00 00 00 00 03 05
0000040 04 00 00 00 04 02 00 00 00 01 00 00 11 02 01 03
0000050

Gibba enables all the ports but the performance drops >50% and this part

0000030 00 02 00 00 04 02 00 00 00 01 00 00 00 00 03 05

looks wrong to me. I read Mucha's thread but wasn't clear on the port ids. Is 02 an lvds connector or a dvi connector. Also I'm not clear on why there are 6 outputs from the dump on 5 connecters. How do I deal with the analog vga >dac output on the same connector as the single link dvi?
Any idea whats killing the performance with Gibba?

#335
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 719 posts
  • Gender:Male
  • Location:South NSW, Australia
In regards to DP2 Lion Kexts, Also along with these kexts using ATIRadeonX3000 files from MBP2011 stock.
Hoolock Personality

02  00  00  00  40  00  00  00  00  01  00  00  00  00  05  07

10  00  00  00  10  00  00  00  00  01  00  00  00  00  04  08

00  08  00  00  00  02  00  00  00  01  00  00  21  03  01  01

This get's me 2x VGA, LVDS acting as VGA and VGA as CRT.

HDMI works.

QE/CI.

But I know it's not perfect, but it works as it should except LVDS not actually detecting as it should and LVDS screen activating because of VGA EDID. wierd but hey.

I can replicate to Baboon, Langur, Eulemur.
Also this setup doesn't allow mirroring or extended. Unless you play around with the Controlflags of course.

That's it from me, i will be waiting for 10.6.8 beta so i can get to the gfx drivers to see if anything new.

Quote from AMD site:
iMac Games on ATI Radeon HD graphics
ATI Radeon™ graphics solutions offer feature rich graphics performance enabling an immersive, life-like gaming experience while playing HD content with incredible visual fidelity.
ATI Radeon™ HD 5750 graphics are available in the new 27” iMac.
ATI Radeon™ HD 5650 graphics are available in the new 21.5” and 27” iMac.
ATI Radeon™ HD 4670 graphics are available in the new 21.5” iMac.

Would love to find out more information :huh: Apparently 5650's went in Core i3 models, maybe 5650's were short and they went with 5670's? hmmm looking more into it.

#336
Fjtorsol

Fjtorsol

    InsanelyMac Protégé

  • Members
  • PipPip
  • 52 posts
  • Gender:Male

Ok, I've made a new version of radeon_bios_dump, version 0.2 in post #1. This new version reports the byte offsets in decimal for the type/encoder/i2cid fields that I'm decoding. The new version also prints the PCI vendor&device ID (not just the sub-ids) so I think there's now enough information being printed for someone to start a patch database...


It works, it gives the ability to change I2CID's easily but still (as you said before) it requires a checksum update.

PD: I am currently searching netkas' forums for some info over it.

#337
Luke1995

Luke1995

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts
Hello (:

I need your help :censored2:

I have and ATI Mobility Radeon HD4570, and cannot get QE or CI to work.

I have tried using multiple Ati4600controller kexts, and also ATIFramebuffer kexts that were patched for the Dell Studio 1545 (same graphics card - 0x95531002)

Can you help me to get the right kexts to enable QE and CI on the internal display? (LVDS I believe)

I can get into SL through safe boot.

Thanks in advance

#338
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 719 posts
  • Gender:Male
  • Location:South NSW, Australia
weird behaviour in Lion DP2, well Eulemur i forced it to load it only gives 2 outputs lol and the output goes to my LVDS as CRT, no modified kexts at this stage, no qe/ci so i guess i have to rumble through the list of monkeys to find the right FB, what a batch ;) VGA not working because i haven't tried patching.

LVDS was scrambled to begin with had to VNC in. will do more testing, seems like i get diff results in Lion DP2 then i do using DP2 kexts inside of snow leopard.

Eulemur give me 1 screen.
Hoolock 1 screen.
Baboon 2 screens, 2 clones but can change.
Langur 2 screens but 1 screen cloned. not the same as baboon.
NO QE/CI, might dump mbp2011 kexts inside my DP2 setup to enable it :)
RadeonFramebuffer gives 2 working outputs, LVDS blank.

What is weird is if i force either 4 framebuffers it shows only 2 outputs, if i force RadeonFramebuffer it detects the 3 outputs inside IOReg. ***FIXED THIS ISSUE by editing and adding an output to evoenabler***

Still no QE/CI damn :P

If it don't work in Lion, there is no way for SL :P drivers are just not there yet i don't think. maybe they have deliberately made 5650 not work but 5670 work and 5630 work. not sure why they would but hey doesn't make sense. Like Checcco once said maybe the wiring is different comparing an Apple version of ATI to a Windows version of ATI, different card diff setup. Also another could be the manufacturer of the laptop wiring it differently.

#339
Fjtorsol

Fjtorsol

    InsanelyMac Protégé

  • Members
  • PipPip
  • 52 posts
  • Gender:Male
I managed to understand how ATOMBIOS connector tables work thanks to the i2C ID offsets. The attached document contains a simple description of the tables and items and what they mean all based in hex strings. Hope it helps for a better understanding of personalities...

Attached Files



#340
max22

max22

    InsanelyMac Protégé

  • Members
  • PipPip
  • 89 posts

Did you inject "hda-gfx" in DSDT? (The name of the devices can be different in your DSDT)

Hi! Thanks, but I don't have a GFX0 device, i normally use GraphicsEnabler+VoodooHDA, but VoodooHDA doesn't work here. I don't get sound output (even if it's shown in the sound devices) :(
It seems as if bcc9 also had this problem a while ago?

-> Can i use this DTST patch?





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy