Jump to content

Mobility Radeon HD 4650:Full Resolution with QE & CI working on Internal LVDS screen


mucha
 Share

696 posts in this topic

Recommended Posts

Mucha, I think your posted HOW TO for encoder is not exactly accurate. My RadeonHD dmesg and Linux dmesg both lead me to that I should use encoder 00, but I only get output with encoder 01. I just got the Xorg.0.log with radeon.modeset=0, which gives much more information. It unequivocally says DIG0, but I get no output using encoder 00.

 

I think you should add a statement to try other possibilities for encoder, because the RadeonHD and Linux info is not necessarily what OS X uses.

 

 

The TMDSA is an artifact inserted by Chameleon. If it bothers you, edit the ati.c file and recompile. I have tested this and found it of no functional significance.

Yeah I know that now but if you check the ati.c file you see that using the supposedly dual link 02 you use the first lines with TMDSB and not the // non 48xx listed below. However my opinion is that we are using the right encoder but there is something missing in the ati.c injection that leads to no video signal on the LVDS connector. Again we need someone that knows how to edit the bootloader and recognizes what can cause a fully recognized LVDS display to show black screen.

Link to comment
Share on other sites

Yeah I know that now but if you check the ati.c file you see that using the supposedly dual link 02 you use the first lines with TMDSB and not the // non 48xx listed below. However my opinion is that we are using the right encoder but there is something missing in the ati.c injection that leads to no video signal on the LVDS connector. Again we need someone that knows how to edit the bootloader and recognizes what can cause a fully recognized LVDS display to show black screen.

Can you get IORegistry from macbook pro 15' or 17'? Both have screen resolution higher than 1366x768. There is no Apple store near where I live.

Link to comment
Share on other sites

Can you get IORegistry from macbook pro 15' or 17'? Both have screen resolution higher than 1366x768. There is no Apple store near where I live.

No but I got the one of an imac 10,1 with 4670 mobility. It should be in the log zip I posted.

Link to comment
Share on other sites

No but I got the one of an imac 10,1 with 4670 mobility. It should be in the log zip I posted.

Yes but it is not complete. Let see a portion from it:-

+-o Root  <class IORegistryEntry, id 0x100000100, retain 12>
 | {
 |   "IOKitBuildVersion" = "Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 $
 |   "IOMaximumMappedIOByteCount" = 536870912
 |   "OS Build Version" = "10J567"
 |   "OSKernelCPUSubtype" = 3
 |   "OSKernelCPUType" = 7
 |   "IORegistryPlanes" = {"IOACPIPlane"="IOACPIPlane","IOPower"="IOPower","IO$
 |   "OSStartupMkextCRC" = <f2e6eba2>
 |   "IOConsoleUsers" = ({"kCGSSessionConsoleSetKey"=0,"kCGSSessionOnConsoleKe$
 |   "IOKitDiagnostics" = {"Container allocation"=2272471,"Instance allocation$
 | }
 | 
 +-o iMac10,1  <class IOPlatformExpertDevice, id 0x10000010f, registered, matc$
| {
|   "compatible" = <"iMac10,1">
|   "version" = <"1.0">
/* skipped */

This is why I don't like text-base dump.

 

I have iMac7,1's IORegistry dump. It have ATI GPU & I already compared mine with it. I think we need to compare ours with latest macbook pro. If there are any new property injected for the ATI GPU, we will see it in the latest macbook pro's IORegistry.

Link to comment
Share on other sites

Mucha, I think your posted HOW TO for encoder is not exactly accurate. My RadeonHD dmesg and Linux dmesg both lead me to that I should use encoder 00, but I only get output with encoder 01. I just got the Xorg.0.log with radeon.modeset=0, which gives much more information. It unequivocally says DIG0, but I get no output using encoder 00.

 

I think you should add a statement to try other possibilities for encoder, because the RadeonHD and Linux info is not necessarily what OS X uses.

Based on my ongoing testing and study of the newer FB ConnectInfo strings, I think this may be an artifact.

I think LVDS control flag 40 00 00 00 is for single link LVDS

and control flag 00 01 00 00 is for dual link LVDS

 

Using the other control flag, I now get output (still scrambled -- some of the feature bytes are different in new FB and I am testing) with the predicted encoder of 00

 

I am hoping the interference I saw before was AtomBIOS thinking dual link, but OS X thinking single link due to wrong control flag.

Link to comment
Share on other sites

Based on my ongoing testing and study of the newer FB ConnectInfo strings, I think this may be an artifact.

I think LVDS control flag 40 00 00 00 is for single link LVDS

and control flag 00 01 00 00 is for dual link LVDS

 

Using the other control flag, I now get output (still scrambled -- some of the feature bytes are different in new FB and I am testing) with the predicted encoder of 00

 

I am hoping the interference I saw before was AtomBIOS thinking dual link, but OS X thinking single link due to wrong control flag.

wmarsh, I don't think that your control flag statement can be correct, in particular, looking at shrike framebuffer:

 

0000000 02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 03

0000010 02 00 00 00 00 01 00 00 09 01 00 00 20 01 02 02

0000020 00 04 00 00 04 03 00 00 00 01 00 00 10 00 01 01

 

as you see you have 2 LVDS strings, plus 1 displayport (but it's really only for displayport?).

 

Now, I don't know how the imac 10,1 uses these strings, but it has in theory 2 connectors, one lvds and one mini-dvi. I am guessing that the third string is the mini-dvi.

 

Lately we have been linking the transmitter 0x values with dual link since they mean (still if is correct) link A+B

 

But as you can see there is a contraddiction, since the frist string using the 40 00 00 00 control flag is actually using A+B/2 and the second with control flag 00 01 00 00 is using B/1.

 

If our ati injection is working fine, I don't know what's wrong with the values we put in the framebuffer. However if you take a look at the imac ioreg I posted, you'll see the controlflag on the LVDS display to be 0x04 so I think it is using the first string of the framebuffer.

 

My opinion again is to involve in this someone who has the knowledge we are missing..any ideas?

Link to comment
Share on other sites

wmarsh, I don't think that your control flag statement can be correct, in particular, looking at shrike framebuffer:

You are correct, but I don't think anyone else will solve our problem.

 

This is from ioreg of the 2011 MBP

	| |   |   | +-o ATY,Cattail@0  <class AtiFbStub, id 0x100000388, registered, matched, active, busy 0 (882 ms), retain 7>
| |   |   | | | {
| |   |   | | |   "AAPL,boot-display" = <01000000>
| |   |   | | |   "AAPL,gray-value" = <c38c6400>
| |   |   | | |   "ATY,ActiveFlags" = 0x40
| |   |   | | |   "AAPL,vram-memory" = <0000009000000010>
| |   |   | | |   "port-number" = 0x0
| |   |   | | |   "av-signal-type" = 0x0
| |   |   | | |   "display-dither-support" = <00000000>
| |   |   | | |   "AAPL,gray-page" = <01000000>
| |   |   | | |   "connector-type" = 0x2
| |   |   | | |   "display-power-sequence" = <000000000000000001000000c80000002c01000001000000000000000000000000000000000000000000000000000000>
| |   |   | | |   "name" = "ATY,Cattail"
| |   |   | | |   "IOFBDependentID" = 0xffffff8013ff0600
| |   |   | | |   "ATY,ControlFlags" = 0x40
| |   |   | | |   "display-connect-flags" = <00000000>
| |   |   | | |   "display-pixel-component-bits" = <06000000>
| |   |   | | |   "compatible" = <4154592c4361747461696c>
| |   |   | | |   "display-dual-link" = <02000000>

So you are correct that ControlFlag 40 00 00 00 should work

But there is obviously (from the last line) a flag for dual link LVDS we are missing.

 

If you look at Cattail:

Personality: Cattail 
ConnectorInfo count in decimal: 4 
Effective address for ConnectorInfo table in dec: 159744 (0x27000) 
Location in dec: 500604 (0x7a37c) 
0000000: 0200 0000 4000 0000 2905 0000 0000 0005 ....@...)....... 
0000010: 0004 0000 0403 0000 0001 0000 1102 0101 ................ 
0000020: 0004 0000 0001 0000 0001 0000 2103 0202 ............!... 
0000030: 0004 0000 0001 0000 0001 0000 1204 0303 ................

I think what we need is the first digit of the features section.

 

I am going to change it from 09 to 29 and see what happens.

 

We might also need the second byte of features to be 05 also.

 

We might also need to use the Lion kexts, as this may be a feature not in the 10.6.7 version.

Remember the new MBPs had their own update.

Link to comment
Share on other sites

Can you get IORegistry from macbook pro 15' or 17'? Both have screen resolution higher than 1366x768. There is no Apple store near where I live.

Neither do I, but I have Google

 

Looking at this and Cattail, I think we need 29 05 00 00 for Features.

[EDIT -- did not work]

 

And it still is likely to be a problem with GraphicsEnabler. I have begun working on a fix here:

http://www.insanelymac.com/forum/index.php...00#entry1661742

Link to comment
Share on other sites

You are correct, but I don't think anyone else will solve our problem.

 

This is from ioreg of the 2011 MBP

	| |   |   | +-o ATY,Cattail@0  <class AtiFbStub, id 0x100000388, registered, matched, active, busy 0 (882 ms), retain 7>
| |   |   | | | {
| |   |   | | |   "AAPL,boot-display" = <01000000>
| |   |   | | |   "AAPL,gray-value" = <c38c6400>
| |   |   | | |   "ATY,ActiveFlags" = 0x40
| |   |   | | |   "AAPL,vram-memory" = <0000009000000010>
| |   |   | | |   "port-number" = 0x0
| |   |   | | |   "av-signal-type" = 0x0
| |   |   | | |   "display-dither-support" = <00000000>
| |   |   | | |   "AAPL,gray-page" = <01000000>
| |   |   | | |   "connector-type" = 0x2
| |   |   | | |   "display-power-sequence" = <000000000000000001000000c80000002c01000001000000000000000000000000000000000000000000000000000000>
| |   |   | | |   "name" = "ATY,Cattail"
| |   |   | | |   "IOFBDependentID" = 0xffffff8013ff0600
| |   |   | | |   "ATY,ControlFlags" = 0x40
| |   |   | | |   "display-connect-flags" = <00000000>
| |   |   | | |   "display-pixel-component-bits" = <06000000>
| |   |   | | |   "compatible" = <4154592c4361747461696c>
| |   |   | | |   "display-dual-link" = <02000000>

So you are correct that ControlFlag 40 00 00 00 should work

But there is obviously (from the last line) a flag for dual link LVDS we are missing.

 

If you look at Cattail:

Personality: Cattail 
ConnectorInfo count in decimal: 4 
Effective address for ConnectorInfo table in dec: 159744 (0x27000) 
Location in dec: 500604 (0x7a37c) 
0000000: 0200 0000 4000 0000 2905 0000 0000 0005 ....@...)....... 
0000010: 0004 0000 0403 0000 0001 0000 1102 0101 ................ 
0000020: 0004 0000 0001 0000 0001 0000 2103 0202 ............!... 
0000030: 0004 0000 0001 0000 0001 0000 1204 0303 ................

I think what we need is the first digit of the features section.

 

I am going to change it from 09 to 29 and see what happens.

 

We might also need the second byte of features to be 05 also.

 

We might also need to use the Lion kexts, as this may be a feature not in the 10.6.7 version.

Remember the new MBPs had their own update.

I think I already tried changing the features even to 29 05 without results. I do not know if our problem is dual link but I think that we should contact the RadeonHD framebuffer developers.

 

Check this:

 

http://code.google.com/p/osx86-driver-rade...ec=svn7&r=7

 

along with the output you get from radeondump with the RadeonHD kext loaded. But again we need someone that says like: HDMI is working at high res, vga too and your LVDS is black even with correct TE settings? I think the problem could be...etc.

 

 

I need a readeondump from RadeonHD loaded driver from a working LVDS configuration.

Link to comment
Share on other sites

Please give me your DSDT.aml. I want to add several basic fix in it. May I know:-

  1. List of kexts in Extra folder.
  2. Other than "DellBluetoothHCI.kext", is there any foreign/3rd party kexts in /System/Library/Extensions/ folder?
  3. The content of com.apple.Boot.plist file.

Strange because yours also missing gpu-control (AGPM). I don't see any evidence of either NullCPUPowerManagement.kext or Disabler.kext is installed.

 

I have another idea for next test, to figure out the interference on the LVDS. We will need to use Peregrine framebuffer for next test because it only have 2 connections. Perfect to eliminate any possible interference. But before we continue, I want to fix your DSDT a bit. You & I have almost similar notebook except graphic card & size.

 

I get this value when I'm using your smbios (Imac 11,1), not when I use MacPro's(3,1) or MacBookPro's(3,1).

Link to comment
Share on other sites

I think I already tried changing the features even to 29 05 without results. I do not know if our problem is dual link but I think that we should contact the RadeonHD framebuffer developers.

dong has been following our threads and has commented in bcc9's thread.

 

You get much more information from Linux than you get from RadeonHD dmesg

 

boot ubuntu, pushing F6 then ESC, and type boot option without quotes

"radeon.modeset=0"

 

You will find a very (overly) complete log in /var/logs/Xorg.0.log

Mine is posted earlier in this thread.

 

Nevertheless, the encoder that gives output for me does not match that predicted by any of these methods.

I had to try several

 

BTW 29 05 in Flicker did not add this flag to my IOREG. May be framebuffer dependent.

Link to comment
Share on other sites

I get this value when I'm using your smbios (Imac 11,1), not when I use MacPro's(3,1) or MacBookPro's(3,1).

That make sense a little bit. We're still on Snow Leopard, so iMac is proper machine identifier for notebook with ATI. If you installed 2011 MBP Update, theoretically you can use MacBookPro8,3 (latest macbookpro with ATI) as machine identifier. Please confirm, the processor on your notebook should have native speedtsep support now when using iMac11,1 as machine identifier.

 

Right now I'm patching sydlix & almuras's DSDT. I'm going to suggest them to use iMac11,1 as machine identifier.

Link to comment
Share on other sites

That make sense a little bit. We're still on Snow Leopard, so iMac is proper machine identifier for notebook with ATI. If you installed 2011 MBP Update, theoretically you can use MacBookPro8,3 (latest macbookpro with ATI) as machine identifier. Please confirm, the processor on your notebook should have native speedtsep support now when using iMac11,1 as machine identifier.

 

Right now I'm patching sydlix & almuras's DSDT. I'm going to suggest them to use iMac11,1 as machine identifier.

 

I can't confirm if speedstep was working properly with imac11,1. Usually I check it with looking the temps and Vcore in Istat, but it wasn't working with imac's smbios. To activate speedstep I use the options GeneratePStates and GenerateCStates in Chameleon RC5.

Link to comment
Share on other sites

I can't confirm if speedstep was working properly with imac11,1. Usually I check it with looking the temps and Vcore in Istat, but it wasn't working with imac's smbios. To activate speedstep I use the options GeneratePStates and GenerateCStates in Chameleon RC5.

You should be able to monitor it using an application called MSR Tools. It only works on 32bit, so make sure boot to 32bit. GeneratePStates and GenerateCStates only needed if DSDT & SSDT really buggy & didn't follow standard ACPI specification. Boot without GeneratePStates and GenerateCStates & monitor CPU frequency changes using MSR Tools. Run Geekbech & compare the result with the one you got in windows. There shouldn't be too huge difference between both if Speedstep works on OSX. For temperature you can try "Temperature Monitor".

Link to comment
Share on other sites

If our ati injection is working fine, I don't know what's wrong with the values we put in the framebuffer. However if you take a look at the imac ioreg I posted, you'll see the controlflag on the LVDS display to be 0x04 so I think it is using the first string of the framebuffer.

I've thought for sometime that GraphicsEnabler is part of the problem, and I know I've ticked kizwan off by saying so.

 

I've looked at the new MBP ioreg, which I posted above, and I think to get dual-link LVDS working, we need to modify the injector to add the dual link flags to ati.c

 

Its been years since I did programing -- back on Z80s before the 1st PC -- but I think we need to add this to ATI.C and recompile

struct ati_data_key ati_dual_link= { 0x04, "AAPL00,DualLink", {0x01, 0x00, 0x00, 0x00} };
struct ati_data_key ati_display_dual_link= { 0x04, "@0,display-dual-link", {0x02, 0x00, 0x00, 0x00} };

Attached find a boot file for Dual LVDS Flicker for testing. be sure to chmod 755 it after copying to boot or you will brick system.

 

I hope to have time tonight to test with 2011 10.6.7 MBP kexts.

The offsets for FB in ATI4600Controller are:

Flicker 20ee0 and 79298

Shrike 20f60 and 79338

Gliff 20f20 and 792d8

 

[EDIT -- more extensive modification to ATI.C required -- I found 12 flags to add so far. Post moved to my HD 4xxx thread]

Link to comment
Share on other sites

I deleted all those kexts (never knew they are not necessary) and modified boot file as you suggested.

 

Here is mine DSDT http://dl.dropbox.com/u/24426032/dsdt.dsl

 

Thanks!

This is your Studio 1747's DSDT. Already fixed with basic patch. Put it in /Extra/ folder. Please change the machine identifier to iMac11,1. You can use my smbios.plist. Installed it in /Extra/ folder too.

Dell_Studio_1747_DSDT_Fixed.zip

 

You has test this connection table with Shrike framebuffer before & the result, you only got output on the HDMI.

--> 00000000	 02  00  00  00  40  00  00  00  09  01  00  00  02  00  00  07  (LVDS)
--> 00000010	 10  00  00  00  10  00  00  00  00  01  00  00  00  10  01  01  (VGA)
--> 00000020	 00  08  00  00  00  02  00  00  00  01  00  00  10  01  02  02  (HDMI)

Since you got LVDS flickered white and then turned black. It only means interference is happening. To test this please try Peregrine framebuffer with only LVDS & VGA:-

--> 00000000	 02  00  00  00  40  00  00  00  09  01  00  00  02  00  00  07  (LVDS)
--> 00000010	 10  00  00  00  10  00  00  00  00  01  00  00  00  10  01  01  (VGA)

Offset of Peregrine connections table (2 connections):-

  • 32bit: 0x37278
  • 64bit: 0x10F60

 

As usual, please post IORegistry dump. Thank your for your time. :unsure:

Link to comment
Share on other sites

You should be able to monitor it using an application called MSR Tools. It only works on 32bit, so make sure boot to 32bit. GeneratePStates and GenerateCStates only needed if DSDT & SSDT really buggy & didn't follow standard ACPI specification. Boot without GeneratePStates and GenerateCStates & monitor CPU frequency changes using MSR Tools. Run Geekbech & compare the result with the one you got in windows. There shouldn't be too huge difference between both if Speedstep works on OSX. For temperature you can try "Temperature Monitor".

 

MSR Tools works fine ;)!

 

When I use imac's smbios speedstep doesn't works fine, the cpu is always at 90-100% so it warms a lot! I've tested with a moded DSDT with PS states but the same happens. With macpro's smbios it works fine (in both ways).

 

My laptops has a C2D processor and Imac I-series. Maybe is this the problem?

Link to comment
Share on other sites

This is your Studio 1747's DSDT. Already fixed with basic patch. Put it in /Extra/ folder. Please change the machine identifier to iMac11,1. You can use my smbios.plist. Installed it in /Extra/ folder too.

Dell_Studio_1747_DSDT_Fixed.zip

 

You has test this connection table with Shrike framebuffer before & the result, you only got output on the HDMI.

--> 00000000	 02  00  00  00  40  00  00  00  09  01  00  00  02  00  00  07  (LVDS)
--> 00000010	 10  00  00  00  10  00  00  00  00  01  00  00  00  10  01  01  (VGA)
--> 00000020	 00  08  00  00  00  02  00  00  00  01  00  00  10  01  02  02  (HDMI)

Since you got LVDS flickered white and then turned black. It only means interference is happening. To test this please try Peregrine framebuffer with only LVDS & VGA:-

--> 00000000	 02  00  00  00  40  00  00  00  09  01  00  00  02  00  00  07  (LVDS)
--> 00000010	 10  00  00  00  10  00  00  00  00  01  00  00  00  10  01  01  (VGA)

Offset of Peregrine connections table (2 connections):-

  • 32bit: 0x37278
  • 64bit: 0x10F60

 

As usual, please post IORegistry dump. Thank your for your time. ;)

 

Kizwan, thank you so much for the DSDT!! Will boot file find it automatically?

I found out that LVDS flickers white only when HDMI cable is attached. The other strange thing is that the colors on the secondary screen looks like only 256 colors. To fix the colors I just need to unplug HDMI and plug it back, and then all colors are right. Weird!

Link to comment
Share on other sites

MSR Tools works fine ;)!

 

When I use imac's smbios speedstep doesn't works fine, the cpu is always at 90-100% so it warms a lot! I've tested with a moded DSDT with PS states but the same happens. With macpro's smbios it works fine (in both ways).

 

My laptops has a C2D processor and Imac I-series. Maybe is this the problem?

Sorry about that. I'm getting confused. :P Yeah, iMac11,1 has an Intel Core i7. So, it is not suitable for your notebook.

 

Maybe iMac7,1 is more suitable. It have C2D.

 

Kizwan, thank you so much for the DSDT!! Will boot file find it automatically?

I found out that LVDS flickers white only when HDMI cable is attached. The other strange thing is that the colors on the secondary screen looks like only 256 colors. To fix the colors I just need to unplug HDMI and plug it back, and then all colors are right. Weird!

Just make sure rename it to dsdt.aml & installed it in /Extra/ folder. Boot file should detect & load it automatically.

 

That means it interference with HDMI. Anyway, test the LVDS & VGA with Peregrine framebuffer.

Link to comment
Share on other sites

Kizwan here is my DSDT.dsl file. See if you can apply some modifications yourself since I am not confident on how to do it. Also, I let me know where should i put it ( / or /Extra) and if I need some boot.plist file with the trunk bootloader.

 

Also, I tried the 10.7 kexts. They need for injection too. I used a trunk bootloader with shrike framebuffer selected, and I left the ATY, Gliff in the ATI4600Controller.kext. In the controller executable, I modified both Shrike and Gliff lines with the correct ones for my configurations. At boot I got the same result as the 10.6.6 and 10.6.7, with working vga and black lvds.

I then modified the 4600controller boot.plist from ATY,Gliff to ATY,Shrike and I got signal on both LVDS and VGA but totally corrupted so I don't know what was going on.

 

Let me know.

 

http://dl.dropbox.com/u/8433914/xps_1640.dsl

This is your Dell Studio XPS 1640's DSDT. Already fixed with basic patch. Just rename the .AML file to dsdt.aml & put it in /Extra/ folder.

Dell_Studio_XPS_1640_DSDT_Fixed.zip

Please change the machine identifier to iMac11,1 because based on the specification, it is closest I can find (based on the CPU & GPU). To set machine identifier, you can use my smbios.plist. Installed it in /Extra/ folder too.

 

Then, please check/confirm in IORegistry whether gpu-control (AGPM) now appear or not.

Link to comment
Share on other sites

Sorry about that. I'm getting confused. ;) Yeah, iMac11,1 has an Intel Core i7. So, it is not suitable for your notebook.

 

Maybe iMac7,1 is more suitable. It have C2D.

 

 

Just make sure rename it to dsdt.aml & installed it in /Extra/ folder. Boot file should detect & load it automatically.

 

That means it interference with HDMI. Anyway, test the LVDS & VGA with Peregrine framebuffer.

 

I installed dsdt.aml and your smbios.plist in /Extra/ folder. Two things happened, first I lost my usb network adapter and usb mouse, second i lost hdmi too. The external screen is just blue, it flickers from time to time, like it is trying to resize. I did not have chance to check peregrine yet.

 

What should I do? Should I use flag Drop DSDT? Thanks for your help.

Link to comment
Share on other sites

I installed dsdt.aml and your smbios.plist in /Extra/ folder. Two things happened, first I lost my usb network adapter and usb mouse, second i lost hdmi too. The external screen is just blue, it flickers from time to time, like it is trying to resize. I did not have chance to check peregrine yet.

 

What should I do? Should I use flag Drop DSDT? Thanks for your help.

I didn't expect that. I didn't touch the USB device though. How did you extract the DSDT from your notebook?

Link to comment
Share on other sites

I used EvO DSDTse.

To skip the dsdt.aml, you'll need to removed or renamed it. You can do this by booting to single mode (-s) or safe mode (-x -v). After you have delete/rename the dsdt.aml, please proceed with Peregrine test.

 

May I know what is the BIOS version? I can download the Studio 1747's BIOS from Dell website & extract DSDT from it.

Link to comment
Share on other sites

 Share

×
×
  • Create New...