Jump to content

Editing custom personalities for ATI Radeon HD[45]xx


  • Please log in to reply
765 replies to this topic

#301
atlee

atlee

    InsanelyMac Legend

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

Any progress on the LVDS? Is it still working on mirror mode with external monitor? What happen to LVDS when external monitor is not connected? :rolleyes:

new ati kexts show diff results, just going through now and testing but atleast Eulemur and Baboon produce both LVDS which is scrambled but in a diff way, VGA get's turned on as extended. Will see if i can find the personality and change it because LVDS loads as connector 10. will fiddle and will post results. I think the more newer version of kexts the more our card has a chance of working :D

LVDS does not change with or without VGA plugged in, i haven't been able to make anything turn on and off.

well my lvds popped on first, no vga now, haven't tested hdmi. well atleast im getting diff results now, going to play around abit you never know i still might hit dead end :D

Play with as you please :angel:

Attached File  ati5000dp2.zip   3.84MB   43 downloads

a least i know hdmi works now :D using it now. 1080p on 42" plasma :(
if i unplug hdmi, lvds switches on, can't have both so might have to find right numbers, vga works also. so i guess what is left is the right numbers for lvds.

lvds flags 40,100 do nothing, senseid doesnt matter, port doesnt matter, controlflag is the most important, more studying needed :) 1amish need sleep.

#302
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts
Hi bcc9,

I already created this collection's thread to collect tested configurations for mobility card. I'm thinking to open it to all ATI graphic card. This way if the person have the same graphic card (same brand & model), they just use the existing solution. What do you think?

#303
mojtabazarei

mojtabazarei

    InsanelyMac Protégé

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

new ati kexts show diff results, just going through now and testing but atleast Eulemur and Baboon produce both LVDS which is scrambled but in a diff way, VGA get's turned on as extended. Will see if i can find the personality and change it because LVDS loads as connector 10. will fiddle and will post results. I think the more newer version of kexts the more our card has a chance of working :D

LVDS does not change with or without VGA plugged in, i haven't been able to make anything turn on and off.

well my lvds popped on first, no vga now, haven't tested hdmi. well atleast im getting diff results now, going to play around abit you never know i still might hit dead end :D

Play with as you please ;)

Attached File  ati5000dp2.zip   3.84MB   43 downloads

a least i know hdmi works now :D using it now. 1080p on 42" plasma :)
if i unplug hdmi, lvds switches on, can't have both so might have to find right numbers, vga works also. so i guess what is left is the right numbers for lvds.

lvds flags 40,100 do nothing, senseid doesnt matter, port doesnt matter, controlflag is the most important, more studying needed :wacko: 1amish need sleep.


atlee may you put the patch and what FB you used?

thanks

#304
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

a least i know hdmi works now :D using it now. 1080p on 42" plasma :)
if i unplug hdmi, lvds switches on, can't have both so might have to find right numbers, vga works also. so i guess what is left is the right numbers for lvds.

That means LVDS & HDMI use same link. Check transmitter for both ports.

Example of LVDS & HDMI using the same link:-
LVDS: 02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 01 > DIG2>UNIPHY2>DUAL_LINK (A+B )>LVDS
HDMI: 00 08 00 00 00 02 00 00 00 01 00 00 22 00 02 02 > DIG1>UNIPHY2>LINK_B>HDMI

LVDS is using UNIPHY2>LINK_B & HDMI is using the same link. This causes interference you experienced right now.

#305
uukk

uukk

    InsanelyMac Protégé

  • Members
  • PipPip
  • 70 posts

Yes, I'd recommend trying the other values for the transmitter byte, 0x2, 0x22, unless you know that the HDMI port is working right with the 0x22 transmitter byte.


Can you watch my post number #596 here: http://www.insanelym...p...t&p=1664464

for an explanation of my Ioreg, please

#306
max22

max22

    InsanelyMac Protégé

  • Members
  • PipPip
  • 89 posts

thanks to @kizwan and @bcc9!

DVI and HDMI output (dual mode) is now working with my Sapphire Ultimate 4670 (passive cooling) with the Shrike framebuffer under 10.6.4
http://pastebin.com/WnznjGXK

0x36C18
0000000	02  00  00  00  40  00  00  00  09  00  00  00  00  01  00  03
0000010	00  08  00  00  00  02  00  00  00  01  00  00  20  01  02  05  (HDMI)
0000020	00  04  00  00  04  07  00  00  00  01  00  00  10  00  01  01  (DVI-Dual)
0000030	00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00


Could somebody please help me with HDMI audio?
DVI+HDMI output is working after patching, but audio not

http://pastebin.com/ZhejbdsS

http://pastebin.com/B6MRicWd

#307
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

Could somebody please help me with HDMI audio?
DVI+HDMI output is working after patching, but audio not

http://pastebin.com/ZhejbdsS

http://pastebin.com/B6MRicWd

Did you inject "hda-gfx" in DSDT? (The name of the devices can be different in your DSDT)
Device (P0P2)		  // <--- This is parent device where your graphic card connected to
			{
				/* more codes, skipped */
				Device (GFX0)		 // <--- This is graphic card device
				{
					Name (_ADR, Zero)
					Method (_DSM, 4, NotSerialized)
					{
						Store (Package (0x02)
							{
								"hda-gfx", 
								Buffer (0x0A)
								{
									"onboard-1"
								}
							}, Local0)
						DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
						Return (Local0)
					}
					/* more codes, skipped */
				}
				Device (HDAU)			// <--- Add this for HDMI audio support
				{
					Name (_ADR, One)
					Method (_DSM, 4, NotSerialized)
					{
						Store (Package (0x02)
							{
								"hda-gfx", 
								Buffer (0x0A)
								{
									"onboard-1"
								}
							}, Local0)
						DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
						Return (Local0)
					}
				}
			}


#308
Fjtorsol

Fjtorsol

    InsanelyMac Protégé

  • Members
  • PipPip
  • 52 posts
  • Gender:Male
Anyone knows how to hexedit the VBIOS to change the I2CID for a connector index??

#309
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 724 posts
  • Gender:Male
  • Location:South NSW, Australia
@Kizwan yeah i can notice sometimes i get interfrence when lvds loads fuzzy can still see desktop but looks like a wind storm ;)

@mojtabazarei - i'm not posting an unperfect patch no point, i want to get things right

Eulemur & Baboon get 2 outputs but i have noticed i can get 3 outputs using Hoolock, so this means Hoolock and Langur give more outputs then Eulemur and Baboon.

using new kext's without patching i get all outputs on HDMI,VGA,LVDS

LVDS still shows as CRT even with their deault settings,HDMI produces a screen but it's using default settings which is 214 which gives me a good hint.

CRT as always for VGA works.

Going to play around more but these 2 framebuffers just might be our winner for 5650's in the end.

If i load auto FB RadeonFramebuffer it only produces VGA so that auto {censored} still don't work.

My guess is why mobilty 68c1 dont load is because atiframebuffer looks for both 68c1 and vendor id, mine is hp but if we can somehow change vendor id from hp to apple then maybe the cards might auto load the ATIFramebuffer i saw some error message in console said something like Framebuffer cannot start due to vendor blah blah.

#310
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

Hi bcc9,

I already created this collection's thread to collect tested configurations for mobility card. I'm thinking to open it to all ATI graphic card. This way if the person have the same graphic card (same brand & model), they just use the existing solution. What do you think?

I'm all for collecting working results, even better if collected in such a way that the information could be automated. Seems to me if you'd make a table of:

pci vendor&device code,
pci subsystem vendor&device code,
personality name
OSX version
working modified personality

then you'd have something that could be auto-patched for newbies.

Also I notice that in that other thread you're recommending my obsolete radeondump + don'g radeonhd instead of just my newer radeon_bios_decode...

With a little more understanding, it seems likely that a program could auto-patch the personality simply by taking as input a bios dump and a personality name target. At least for the desktop case. This could be supplemented with some sort of quirks table for the special cases.

Can you watch my post number #596 here: http://www.insanelym...p...t&p=1664464

for an explanation of my Ioreg, please

I wasn't able to get my DP connector to work with the 10.6.7 2011 MBP kexts either, yet it does work for me just fine with standard 10.6.6/10.6.7 kexts and a modified personality. Perhaps those MBP kexts can't be mixed&matched completely successfully without replacing some other dependent kexts as well.


Anyone knows how to hexedit the VBIOS to change the I2CID for a connector index??

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.

#311
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 724 posts
  • Gender:Male
  • Location:South NSW, Australia
also IMac11,2 uses the 5670 card which uses Framebuffer Galago by default. This only has 2 outputs though, wonder why they are using this way?

New Control Flag for 02 connector, 256 which i'm going to try now. DP_INT

av sig type 16.

I decided to check my oireg using RadeonFramebuffer
Port 0
Connector 0x02, ControlFlags 64, dec 64 is 40 hex
Port 1
Connector 0x16 ControlFlags 16, dec 16 is 10 hex, control is 10
Port 2
Connector 2048 ControlFlags 516, dec 2048 is 800 hex and control is 204.

so figures are right. should be anyway.

21,03 is definetly HDMI
00,00,00,10 ffoorr VGA not working will keep trying.
LVDS well thats another story :)

HDMI fully works on mbp2011 drivers, just tested using above info. control flag 204 on 21,03. must be using a interfered T/E FOR LVDS because it switches on when hdmi is in but switches back off when it is not in.

#312
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

My guess is why mobilty 68c1 dont load is because atiframebuffer looks for both 68c1 and vendor id, mine is hp but if we can somehow change vendor id from hp to apple then maybe the cards might auto load the ATIFramebuffer i saw some error message in console said something like Framebuffer cannot start due to vendor blah blah.

Can you post the ATIFramebuffer error message?

You won't be able to change the vendor ID since the VID (Vendor Identification) register is read-only (checked in Intel 5 Series datasheet). I think you want to change the sub-vendor ID. Sub-vendor ID register (SVID) is R/WO. You can set it in DSDT:-
// start - Subsystem & Device Vendor ID hack
	Method (PINI, 0, NotSerialized) // For PCI0/Wake INI				 // <--- Add this control method
	{
		Store (0x0107106B, \_SB.PCI0.PEGP.GFX0.ASDI)				 // <--- Check for the correct path to your graphic card device
	}
	// end
The 0x0107 is sub-device ID. You should maintain the original value (yours will be different than this example). The one you want to change is the sub-vendor ID to 0x106b (Apple).

Method (_WAK, 1, NotSerialized)
	{
		// start - Subsystem & Device Vendor ID hack
		PINI ()
		// end
		/* more codes, skipped */
	}
Then put it in _WAK control method. This to prevent the sub-vendor ID reset back to default after waking up from sleep.

Scope (\_SB)
	{
		Method (_INI, 0, NotSerialized)
		{
			/* more codes, skipped */
			// start - Subsystem & Device Vendor ID hack
			PINI ()
			// end
		}
The PINI() control method will be initialized/executed during boot.

Device (PEGP)	// <--- This is parent device where the graphic card is connected to. Yours might have different name & address.
			{
				Name (_ADR, 0x00010000)
				Device (GFX0)									 // <--- This is graphic card device. Yours might have different name.
				{
					Name (_ADR, Zero)
					// start - Subsystem & Device Vendor ID hack
					OperationRegion (SVID, PCI_Config, Zero, 0xF0)		   // <--- Add this OperationRegion
					Field (SVID, DWordAcc, NoLock, Preserve)
					{
								Offset (0x40),
						ASDI,   32
					}
					// end
Lastly, add the above OperationRegion in the graphic card device codes. I used this trick on my old notebook (purely cosmetic in my case). I think it can be use with Intel 5 Series chipset too.

#313
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

Also I notice that in that other thread you're recommending my obsolete radeondump + don'g radeonhd instead of just my newer radeon_bios_decode...

I forgot to update. :)

With a little more understanding, it seems likely that a program could auto-patch the personality simply by taking as input a bios dump and a personality name target. At least for the desktop case. This could be supplemented with some sort of quirks table for the special cases.

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

The only problem with mobility card is the LVDS + resolution higher than 1366x768 configuration. In some hardware datasheet (e.g. Toshiba) did mentioned single-link LVDS transmitter support up to a WXGA panel resolution (1366x768, 24-bit/pixel). While dual-link LVDS transmitter can support up to WUXGA panel resolution (1920x1200, 18-bit/pixel). The highest WXGA resolution is 1440x900 but I haven't heard from anyone with 1440x900 LCD panel yet (probably missed it). I have schematic for my notebook. In it I found the LVDS interface has two channels labeled with LVDSA & LVDSB. I can get my LVDS working without extensive trial & error, probably because I have 1366x768 LCD panel. There is other person who have identical notebook, Dell Studio 1557 but have Full HD LCD panel but can't get it working. Still testing though. I hope I can get correct result from him/her later because right now he/she unable to get the ATI4600Controller.kext loaded.

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.

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

#314
atlee

atlee

    InsanelyMac Legend

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

Can you post the ATIFramebuffer error message?

Sub-vendor i think it is. will see if i can apply this DSDT, that's one reason i think RadeonFramebuffer does not autoload. even if i force it to load the settings it loads does not load my LVDS screen.


HDMI i can get to show as LCD

VGA as CRT

LVDS i can get it to load but i think it's loading the same values as VGA not sure why the behaviour.

i won't give up but i need to try another method. 5670 uses Galago not sure why because 3 connections but personality has 2 outputs maybe thats when RadeonFramebuffer kicks in to load the missing 3rd connection. now would like to look at an ioreg using a ATI 5630 :)

wondering if any method of dumping somehow the T & E currently used by loading RadeonFramebuffer? would like to see what is trying to be used.

#315
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

LVDS i can get it to load but i think it's loading the same values as VGA not sure why the behaviour.

Probably driver falsely identified LVDS as CRT (VGA). Did you tried patched the connection table in the new kext? Probably change the connector-type or ControlFlags & see if it help driver identified LVDS correctly. Try compare the LVDS's EDID in IORegistry with LVDS's EDID obtain in windows. Both should be identical which explained the LVDS is working but falsely recognized as CRT (VGA).

wondering if any method of dumping somehow the T & E currently used by loading RadeonFramebuffer? would like to see what is trying to be used.

It is possible if you can read it from RAM. In windows you can use HEX editor to "read" loaded application in memory. I wonder if there is a HEX editor for mac which can do the same thing.

#316
atlee

atlee

    InsanelyMac Legend

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

Probably driver falsely identified LVDS as CRT (VGA). Did you tried patched the connection table in the new kext? Probably change the connector-type or ControlFlags & see if it help driver identified LVDS correctly. Try compare the LVDS's EDID in IORegistry with LVDS's EDID obtain in windows. Both should be identical which explained the LVDS is working but falsely recognized as CRT (VGA).


It is possible if you can read it from RAM. In windows you can use HEX editor to "read" loaded application in memory. I wonder if there is a HEX editor for mac which can do the same thing.


you gave me good idea :) how to get edid in macosx? i know how in windows and linux?

#317
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

you gave me good idea :) how to get edid in macosx? i know how in windows and linux?

You can obtain EDID in IORegistry, under display node (IODisplayEDID).

#318
mojtabazarei

mojtabazarei

    InsanelyMac Protégé

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

@Kizwan yeah i can notice sometimes i get interfrence when lvds loads fuzzy can still see desktop but looks like a wind storm :)

@mojtabazarei - i'm not posting an unperfect patch no point, i want to get things right

Eulemur & Baboon get 2 outputs but i have noticed i can get 3 outputs using Hoolock, so this means Hoolock and Langur give more outputs then Eulemur and Baboon.

using new kext's without patching i get all outputs on HDMI,VGA,LVDS

LVDS still shows as CRT even with their deault settings,HDMI produces a screen but it's using default settings which is 214 which gives me a good hint.

CRT as always for VGA works.

Going to play around more but these 2 framebuffers just might be our winner for 5650's in the end.

If i load auto FB RadeonFramebuffer it only produces VGA so that auto {censored} still don't work.

My guess is why mobilty 68c1 dont load is because atiframebuffer looks for both 68c1 and vendor id, mine is hp but if we can somehow change vendor id from hp to apple then maybe the cards might auto load the ATIFramebuffer i saw some error message in console said something like Framebuffer cannot start due to vendor blah blah.



atlee see what they mean?

by using ATY,RadeonFramebuffer

see ioreg in 5000 node for my 5730

ATI5000Controller@1  <class ATI5000Controller, id 0x100000341, registered, matched, active, busy 0 (1 ms), retain 4>
	| |   |   | |   {
	| |   |   | |	 "IOClass" = "ATI5000Controller"
	| |   |   | |	 "CFBundleIdentifier" = "com.apple.kext.ATI5000Controller"
	| |   |   | |	 "IOProviderClass" = "IOPCIDevice"
	| |   |   | |	 "ATY,Zonalis" = {"aty_config"={"CFG_NO_PP"=Yes}}
	| |   |   | |	 "aty_properties" = {"PP_R600RaisingMediumPercentage"=25,"PP_UserMaxClockForMultiDisplays"=1,"PP_R600ActivityHysteresis"=5,"PP_HighSamplingInterval"=200000,"PP_R600LoweringHighPercentage"=25,"PP_R600LoweringMediumPercentage"=10,"PP_R600RaisingLowPercentage"=10,"PP_ActivitySamplingInterval"=1000}
	| |   |   | |	 "IOName" = "ATI5000Controller"
	| |   |   | |	 "PPLIB_VERSION" = "2.158"
	| |   |   | |	 "IOProbeScore" = 65000
	| |   |   | |	 "IOPCIMatch" = "0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C01002 0x68C11002 0x68D91002 0x68B81002 0x68B01002 0x68B11002 0x68A01002 0x68A11002 "
	| |   |   | |	 "ATY,Langur" = {"aty_config"={"CFG_FORCE_ICLK"=Yes}}
	| |   |   | |	 "ATY,Orangutan" = {"aty_config"={"CFG_GPIO_HIGH"=131104}}
	| |   |   | |	 "IOMatchCategory" = "IOFramebuffer"
	| |   |   | |	 "iofb_version" = "1.1.36"
	| |   |   | |	 "aty_config" = {"CFG_USE_SRRB"=Yes,"CFG_USE_USCN"=Yes,"CFG_NO_PP"=No}
	| |   |   | |	 "ATY,Hoolock" = {"aty_config"={"CFG_FORCE_ICLK"=Yes}}
	| |   |   | |   }

so maybe the reported frame buffer is compatible with our card now you say that langur and hoolock have 3 output they are in list

what do you think ?

#319
atlee

atlee

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 724 posts
  • Gender:Male
  • Location:South NSW, Australia
Here is my conclusion:

4 Framebuffers Langur/Hoolock/Baboon/Eulemur can be edited and used.

Hoolock give the best HDMI output results.

Baboon is the main focus though but you can also edit Eulemur as the layout is the same.

HDMI fully works on either 22,05 or 21,03 whatever you want. probably others too but anyway.

VGA works also.

Save people from editing just AtiConfig=RadeonFramebuffer this will give you perfect VGA and HDMI.

LVDS i can do a dodgy way, for some wierd reason it replicates VGA edid and also 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 LVDS isn't really working it's just running 2 sets of the VGA screen but they act as seperate screens wierd huh?

LVDS will not work as of yet! I have tried all combinations. Just use the dodgy way till another new kexts arrive.

There is no perfect way of doing this for this card.

Using the DP2 kexts you can boot using Baboon/Eulemur/Langur/Hoolock without editing.

VNC in, fix resolution up using SwitchResX and you will have VGA, a 2nd VGA acting as LVDS.

To get perfect HDMI you will need to patch.

Personality: Baboon

ConnectorInfo count in decimal: 3Disk offset in decimal 508152

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

00  08  00  00  00  02  00  00  00  71  00  00  22  05  02  01

10  00  00  00  10  00  00  00  00  01  00  00  00  10  00  02 

Patched Baboon

02  00  00  00  14  00  00  00  00  01  00  00  01  12  01  07

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

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

If you use HDMI, you will 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.

I'm off to install the new Lion. I have had enough of spending hours and hours on this :rolleyes:

Also with the Baboon layout i didn't have to change much, conector does not do anything, senseid does not do anything. 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 keep VGA on 00,00 or 00,10.

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

#320
k540kkk

k540kkk

    InsanelyMac Protégé

  • Members
  • Pip
  • 27 posts

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

Personality: Baboon

Patched Baboon

02  00  00  00  14  00  00  00  00  01  00  00  01  12  01  07

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

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


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.





1 user(s) are reading this topic

1 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