Jump to content

Editing custom personalities for ATI Radeon HD[45]xx


bcc9
 Share

775 posts in this topic

Recommended Posts

The nvcap was derived from graphic card's ROM file. The same method works for other notebook model but not on sony. The internal LCD doesn't detected at all (in IORegistry).
Hmm, a lot of unknown/guess fields described in those posts. Not as far along as we are here with the ATI driver :P

PS: I'd love to know what field to set in NVCAP or NVMT or display-cfg to get the connector-type to come out as HDMI (0x00000800).

Link to comment
Share on other sites

I have a little trouble, my DP doesn't work.

This is my edited ATIFramebuffer:

 

Mac-Pro-di-fabry:tmp fabry$ od -Ax -tx1 /tmp/uakari3
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  03
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  01
0000020	04  00  00  00  14  00  00  00  00  01  00  00  00  00  06  05
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  04
0000040

 

and this is my ioreg of the bad connector:

 

ioreg.png

 

my radeondump:

 

Mac-Pro-di-fabry:Desktop fabry$ ./radeondump < 1002_6898.rom
ATOM BIOS Rom: 
SubsystemVendorID: 0x1043 SubsystemID: 0x0346
IOBaseAddress: 0x0000
Filename: SV36460.107 
BIOS Bootup Message: 
6898.12.20.0.5.AS02 U126							  

Connector at index 0 type: DisplayPort (10)
Connector's i2cid: 92
Connector at index 1 type: HDMI-A (11)
Connector's i2cid: 93
Connector at index 2 type: DVI-I (2)
Connector's i2cid: 94
Connector at index 3 type: DVI-I (2)
Connector's i2cid: 94

 

and the stock Uakari ATIFramefuffer:

 

Mac-Pro-di-fabry:tmp fabry$ od -Ax -tx1 /tmp/uakari2
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  01
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  03
0000020	00  02  00  00  14  00  00  00  00  01  00  00  00  00  06  05
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  04
0000040

 

I have only change the senseid of firsth row from 01 to 03 and the connector of DVI at row 3 from 200 to 4 (DVI) but the DP still not work and the active flags don't match.

 

What I missing?

 

many regards

Link to comment
Share on other sites

Hi, bcc9

After using a true DP-->DP cable or DP-->HDMI active Eyefinity convertor I can activate DP audio, HDMI audio and DVI 3 ports at the same time now with Uakari or Vervet FB in Asus EAH 5850 or MSI Hawk 5770 card.

Also I can Sleep/Wake by USB mouse/keyboard at the main dispaly either DVI or HDMI.

Thanks again without your and mucha's guides I can not do it so well.

 

I have a little trouble, my DP doesn't work.

This is my edited ATIFramebuffer:

 

Mac-Pro-di-fabry:tmp fabry$ od -Ax -tx1 /tmp/uakari3
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  03
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  01
0000020	04  00  00  00  14  00  00  00  00  01  00  00  00  00  06  05
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  04
0000040

 

and this is my ioreg of the bad connector:

 

ioreg.png

 

my radeondump:

 

Mac-Pro-di-fabry:Desktop fabry$ ./radeondump < 1002_6898.rom
ATOM BIOS Rom: 
SubsystemVendorID: 0x1043 SubsystemID: 0x0346
IOBaseAddress: 0x0000
Filename: SV36460.107 
BIOS Bootup Message: 
6898.12.20.0.5.AS02 U126							  

Connector at index 0 type: DisplayPort (10)
Connector's i2cid: 92
Connector at index 1 type: HDMI-A (11)
Connector's i2cid: 93
Connector at index 2 type: DVI-I (2)
Connector's i2cid: 94
Connector at index 3 type: DVI-I (2)
Connector's i2cid: 94

 

and the stock Uakari ATIFramefuffer:

 

Mac-Pro-di-fabry:tmp fabry$ od -Ax -tx1 /tmp/uakari2
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  01
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  03
0000020	00  02  00  00  14  00  00  00  00  01  00  00  00  00  06  05
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  04
0000040

 

I have only change the senseid of firsth row from 01 to 03 and the connector of DVI at row 3 from 200 to 4 (DVI) but the DP still not work and the active flags don't match.

 

What I missing?

 

many regards

Change to :

0000000 00 04 00 00 04 06 00 00 00 01 00 00 12 04 04 03

and using a true DP-->DP cable for DP monitor or DP-->HDMI active Eyefinity convertor for HDMI monitor.

Please read my posts for Asus EAH 5850 and MSI Hawk 5770.

Link to comment
Share on other sites

Change to :

0000000 00 04 00 00 04 06 00 00 00 01 00 00 12 04 04 03

and using a true DP-->DP cable for DP monitor or DP-->HDMI active Eyefinity convertor for HDMI monitor.

Please read my posts for Asus EAH 5850 and MSI Hawk 5770.

 

I use a true DP-->DP cable (I have a DELL U2711P) but the display port still not work after your configuration...

Link to comment
Share on other sites

I use a true DP-->DP cable (I have a DELL U2711P) but the display port still not work after your configuration...

Please try :

0000000 00 04 00 00 00 05 00 00 00 01 00 00 12 04 04 03

That means 0x400 0x500 instead of 0x400 0x604 for Connector-type and ATY-ControlFlag

I found this because in 10.6.4 which used these different values for DP display port.

Link to comment
Share on other sites

Hmm, a lot of unknown/guess fields described in those posts. Not as far along as we are here with the ATI driver :)

PS: I'd love to know what field to set in NVCAP or NVMT or display-cfg to get the connector-type to come out as HDMI (0x00000800).

Off the topic

 

add these lines in dsdt for getting HDMI audio. Credit to toleda.

								"@1,connector-type", 
							Buffer (0x04)
							{
								0x00, 0x08, 0x00, 0x00
							},

Link to comment
Share on other sites

Hi tmongkol,

 

Finally I got HDMI audio working. :) So, ATI HDMI audio on notebook works. The legacy kext which responsible in injecting my HD4570's device ID is causing the problem. Removed the legacy kext & add HD4570's device ID in ATI4600Controller.kext fixed the problem.

hd4570hdmiaudio.jpg

hd4570hdmiaudioioreg.jpg

Link to comment
Share on other sites

add these lines in dsdt for getting HDMI audio.

Thanks, I had tried that and it isn't sufficient to get working audio in my 9400m case. It's good to hear that setting connector-type is sufficient for some other nvidia cases (fermi cards).

 

A few weeks ago when I digged further into NVDAResman, I saw that in the nvidia case, av-signal-type must also be set correctly, where 0x8 is the working hdmi value, but it turns up as 0x2 for the 9400m. Unfortunately av-signal-type is set by NVDAResman and injecting the working value has no effect. I was able to patch NVDAResman to cause av-signal-type to come out with the expected value, at which point the HDMI audio option finally did automatically hotplug on my 9400m. However audio doesn't actually pass thru :)

 

If I could figure out the logic NVDAResman is using to set av-signal-type (based upon NVMT? NVCAP? display-cfg?) then I think I might have a working solution.

 

av-signal-type is coming up as 0x8 automatically in the fermi case?

Link to comment
Share on other sites

Hi tmongkol,

 

Finally I got HDMI audio working. :) So, ATI HDMI audio on notebook works. The legacy kext which responsible in injecting my HD4570's device ID is causing the problem. Removed the legacy kext & add HD4570's device ID in ATI4600Controller.kext fixed the problem.

 

@ kizwan

 

That's great. So, most of HD 4xxx that have HDMI port should be able to get HDMI audio. (edited)

 

 

 

@ bcc9

 

I asked toledo to answer your fermi question since I didn't have it.

 

update: got av-signal-type <08 00 00 00>

post-93383-1301061162_thumb.jpg

post-93383-1301061179_thumb.jpg

Link to comment
Share on other sites

Please try :

0000000 00 04 00 00 00 05 00 00 00 01 00 00 12 04 04 03

That means 0x400 0x500 instead of 0x400 0x604 for Connector-type and ATY-ControlFlag

I found this because in 10.6.4 which used these different values for DP display port.

 

Thank you jls but does't work...

I have switched to MBPro 10.6.7 ATI kext and all three connector are full recognized (i see in the ioreg).

The ATY_ActiveFlags match the DP but the monitor still black.

I connect DVI and DP both and set the "clone mode", i can see in System Preference panel the DP monitor and I can configure it (changing resolution ecc.) but every thing I change it's still black...

I'm very frustrating...

Have you a idea?

 

many regards

Link to comment
Share on other sites

Thank you jls but does't work...

I have switched to MBPro 10.6.7 ATI kext and all three connector are full recognized (i see in the ioreg).

The ATY_ActiveFlags match the DP but the monitor still black.

I connect DVI and DP both and set the "clone mode", i can see in System Preference panel the DP monitor and I can configure it (changing resolution ecc.) but every thing I change it's still black...

I'm very frustrating...

Have you a idea?

 

many regards

Probably transmitter is wrong. Try get RadeonHD's log in linux.

Link to comment
Share on other sites

How can I get this detailed log?

I have search in dmesg and /var/log/Xorg.0.log but seems not very detailed.

 

many regards

The log should look like this or similar:-

[ 7.528400] [drm] Loading RV710 Microcode
[ 7.583699] [drm] ring test succeeded in 1 usecs
[ 7.583941] [drm] radeon: ib pool ready.
[ 7.584065] [drm] ib test succeeded in 0 usecs
[ 7.584069] [drm] Enabling audio support
[ 7.667456] [drm] Unknown TV standard; defaulting to NTSC
[ 7.667603] [drm] Radeon Display Connectors
[ 7.667606] [drm] Connector 0:
[ 7.667609] [drm] LVDS
[ 7.667613] [drm] DDC: 0x7f68 0x7f68 0x7f6c 0x7f6c 0x7f70 0x7f70 0x7f74 0x7f74
[ 7.667616] [drm] Encoders:
[ 7.667619] [drm] LCD1: INTERNAL_UNIPHY2
[ 7.667622] [drm] Connector 1:
[ 7.667624] [drm] VGA
[ 7.667628] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
[ 7.667630] [drm] Encoders:
[ 7.667633] [drm] CRT1: INTERNAL_KLDSCP_DAC1
[ 7.667636] [drm] Connector 2:
[ 7.667638] [drm] HDMI-A
[ 7.667641] [drm] HPD1
[ 7.667644] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
[ 7.667647] [drm] Encoders:
[ 7.667649] [drm] DFP1: INTERNAL_UNIPHY

Please post the log here. Thank you.

Link to comment
Share on other sites

It doesn't contain the required information. You'll need to install RadeonHD driver but I don't think your GPU is supported though because RadeonHD is an old driver.

 

Try install radeon driver & obtain the log.

 

[   10.139051] [drm] ring test succeeded in 1 usecs
[   10.139122] [drm] radeon: ib pool ready.
[   10.139229] [drm] ib test succeeded in 0 usecs
[   10.139238] failed to evaluate ATIF got AE_BAD_PARAMETER
[   10.139241] radeon 0000:01:00.0: Error during ACPI methods call
[   10.140737] [drm] Radeon Display Connectors
[   10.140738] [drm] Connector 0:
[   10.140740] [drm]   DisplayPort
[   10.140741] [drm]   HPD5
[   10.140743] [drm]   DDC: 0x6450 0x6450 0x6454 0x6454 0x6458 0x6458 0x645c 0x645c
[   10.140745] [drm]   Encoders:
[   10.140746] [drm]	 DFP1: INTERNAL_UNIPHY2
[   10.140748] [drm] Connector 1:
[   10.140749] [drm]   HDMI-A
[   10.140750] [drm]   HPD4
[   10.140752] [drm]   DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c
[   10.140753] [drm]   Encoders:
[   10.140754] [drm]	 DFP2: INTERNAL_UNIPHY2
[   10.140755] [drm] Connector 2:
[   10.140756] [drm]   DVI-I
[   10.140757] [drm]   HPD6
[   10.140758] [drm]   DDC: 0x6470 0x6470 0x6474 0x6474 0x6478 0x6478 0x647c 0x647c
[   10.140759] [drm]   Encoders:
[   10.140760] [drm]	 DFP3: INTERNAL_UNIPHY
[   10.140761] [drm]	 CRT1: INTERNAL_KLDSCP_DAC1
[   10.285979] type=1400 audit(1301163220.775:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=664 comm="apparmor_parser"
[   10.286026] type=1400 audit(1301163220.775:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=613 comm="apparmor_parser"
[   10.286309] type=1400 audit(1301163220.775:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=664 comm="apparmor_parser"
[   10.286346] type=1400 audit(1301163220.775:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=613 comm="apparmor_parser"
[   10.286492] type=1400 audit(1301163220.775:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=664 comm="apparmor_parser"
[   10.286520] type=1400 audit(1301163220.775:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=613 comm="apparmor_parser"
[   10.286719] 2:1:1: cannot get freq at ep 0x1
[   10.305456] usbcore: registered new interface driver snd-usb-audio
[   10.386849] [drm] Internal thermal controller with fan control
[   10.386860] [drm] radeon: power management initialized
[   10.510876] [drm] fb mappable at 0xE0140000
[   10.510878] [drm] vram apper at 0xE0000000
[   10.510879] [drm] size 14745600
[   10.510880] [drm] fb depth is 24
[   10.510880] [drm]	pitch is 10240
[   10.943162] Console: switching to colour frame buffer device 320x90
[   10.949130] fb0: radeondrmfb frame buffer device
[   10.949131] drm: registered panic notifier
[   10.949135] Slow work thread pool: Starting up

Link to comment
Share on other sites

Probably transmitter is wrong. Try get RadeonHD's log in linux.

That's what I suggested 3 days ago :o

 

As to uukk's encoder value, his log shows:

 

[ 10.140745] [drm] Encoders:

[ 10.140746] [drm] DFP1: INTERNAL_UNIPHY2

 

for the displayport connector. Per mucha's thread, post #1:

"DIG5 drives UNIPHY2 link A, A+B"

and

" #define DIG5 0x04 // = DIGE Only for Radeon HD 5XXX Series and above"

so you want 0x04 for the encoder byte for your displayport, if I'm understanding mucha correctly.

 

Looks like you already have 0x4 for this byte so the encoder value checks out...

 

For transmitter,

" #define UNIPHYE 0x12 // = UNIPHY2:LINKA"

and you have it set to 0x12 (single link), which I guess is right. Does your HDMI port work right (maybe LINKA&LINKB are swapped)?

Link to comment
Share on other sites

That's what I suggested 3 days ago :o

 

As to uukk's encoder value, his log shows:

 

[ 10.140745] [drm] Encoders:

[ 10.140746] [drm] DFP1: INTERNAL_UNIPHY2

 

for the displayport connector. Per mucha's thread, post #1:

"DIG5 drives UNIPHY2 link A, A+B"

and

" #define DIG5 0x04 // = DIGE Only for Radeon HD 5XXX Series and above"

so you want 0x04 for the encoder byte for your displayport, if I'm understanding mucha correctly.

 

Looks like you already have 0x4 for this byte so the encoder value checks out...

 

Yes I have already this:

 

Mac-Pro-di-fabry:tmp fabry$ od -Ax -tx1 /tmp/uakari3
0000000	00  04  00  00  00  04  00  00  00  01  00  00  12  04  04  03
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  01
0000020	04  00  00  00  14  00  00  00  00  01  00  00  00  00  06  05
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  04
0000040

 

but I try to change the transmitter to 0x02:

 

0000000	00  04  00  00  00  04  00  00  00  01  00  00  02  04  04  03
0000010	04  00  00  00  14  00  00  00  00  01  00  00  01  12  01  01
0000020	04  00  00  00  14  00  00  00  00  01  00  00  00  00  06  05
0000030	00  08  00  00  00  02  00  00  00  01  00  00  22  05  05  04
0000040

Link to comment
Share on other sites

I would get the Linux information using F6 to get boot options, then enter without quotes "radeon.modeset=0"

The full log is in /var/logs/Xorg.0.log

You get much more information.

 

And I would definitely try other encoders. In my case, both RadeonHD and Linux say DIG1(Radeon)=DIG0(Linux) but my system gives a black screen with encoder 00 but connects with encoder 01.

Link to comment
Share on other sites

The Display Port....

:D

My point was that if you know that the HDMI port is working with transmitter byte 0x22 then the HDMI port is for sure linkb and that would make the displayport for sure linka, as both your hdmi&displayport are apparently sharing phy2.

Link to comment
Share on other sites

I've made a new version of radeondump, now called radeon_bios_decode to avoid confusion with dong's tool. Attached to post #1 in a sec...

This version computes the OSX senseid value for you, and also prints out the encoder ID information.

The encoder information is obtained from the ATOM BIOS just like the other values. No need to run a kext or boot linux to obtain these values.

What else do I need to add?

 

Example:

./radeon_bios_decode < rom
ATOM BIOS Rom: 
	SubsystemVendorID: 0x174b SubsystemID: 0xe151
	IOBaseAddress: 0x0000
	Filename: 3E151DAF.HY1
	BIOS Bootup Message: 
REDWOOD XT C02002 GDDR5 64Mx16 1G UCODEv:126							   

Connector at index 0
	Type: DisplayPort (10)
	Encoder: id: 21 name: INTERNAL_UNIPHY2
	i2cid: 0x91, OSX senseid: 0x2
Connector at index 1
	Type: HDMI-A (11)
	Encoder: id: 21 name: INTERNAL_UNIPHY2
	i2cid: 0x94, OSX senseid: 0x5
Connector at index 2
	Type: DVI-I (2)
	Encoder: id: 20 name: INTERNAL_UNIPHY1
	i2cid: 0x92, OSX senseid: 0x3
Connector at index 3
	Type: DVI-I (2)
	Encoder: id: 15 name: INTERNAL_KLDSCP_DAC1
	i2cid: 0x92, OSX senseid: 0x3

Link to comment
Share on other sites

 Share

×
×
  • Create New...