Jump to content

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


  • Please log in to reply
692 replies to this topic

#301
PsiX_o

PsiX_o

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts

Hey..

Try booting with -v cpus=1
If it boots, then yay! if not the -v will boot in verbose mode meaning the apple bootscreen will be replaced with text. So if it doesn't boot you can tell us where in the text it stops and we will better know how to help you!


Hey man it works. I boot it successfully with -v cpus=1. But I can't change the resolution I have only 1024x768 I think and I can't change it. And one more question can I write you a PM to ask you 2,3 questions more not to spam here :unsure: Thank you!

#302
fistofkhesahn

fistofkhesahn

    InsanelyMac Protégé

  • Members
  • Pip
  • 25 posts

Hey man it works. I boot it successfully with -v cpus=1. But I can't change the resolution I have only 1024x768 I think and I can't change it. And one more question can I write you a PM to ask you 2,3 questions more not to spam here :unsure: Thank you!


Good to hear it boots :]

Yeah alot of us have problems with this gfx card. If you're happy with just getting the full resolution, just install dongs RadeonHD.kext (google it) It will give you full resolution but not hardware acceleration :/

Yeah sure. Go ahead :]

#303
Mike85b

Mike85b

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts

As you on 10.6.3 you need to edit framebuffer in atiframebuffer.kext/contents/macos/
Try searching for the hex string in there and seeing if you get any results. If not use ati-personality.pl to tell you the offsets.

Thank you twisted89 for your reply. i finally found the framebuffers. Since i have installed 10.6.3 the framebuffers are 20 bytes long and not 16 so thats the reason i couldn't search and find it in hex editor. I do the modd to some fb and i believe im 1 step away to get my card working. I think the bootloader cannot start my card because i get a freeze apple logo screen and the laptop seems to be working ( i hear sound if i press buttons, the f12 button works as eject) . So i think i just need the correct bootloader. Also i dont know if i have to put my dev id to ATI4500controler.keTIxt or into ATI4600controller.kext. i try both without any succes.

Thanks again
Mike

#304
Martuzki

Martuzki

    Back 2 the Mac ;-)

  • Members
  • PipPipPipPip
  • 243 posts
  • Gender:Male
  • Location:Germany
Whith wich Programm can i make the BIOS Dump?
GPUZ says that the Card is not Supported and where can i get the programm called "EVEREST"?

#305
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts
I have a HD4650 1GB id 9498 and use OSX 10.6.7.
My card has 1 x HDMI and 1 x DVI (don't need duallink). Here is my BIOSDump:
ATOM BIOS Rom: 
SubsystemVendorID: 0x174b SubsystemID: 0xe109
IOBaseAddress: 0x0000
Filename: B110852.201 
BIOS Bootup Message: 
113-AB93400-100-PC RV730 DDR2 128bit 600e/500m 

PCI ID: 1002:9498
Connector at index 0
Type [@offset 44954]: VGA (1)
Encoder [@offset 44958]: INTERNAL_KLDSCP_DAC2 (0x16)
i2cid [@offset 45026]: 0x93, OSX senseid: 0x4
Connector at index 1
Type [@offset 44964]: HDMI-A (11)
Encoder [@offset 44968]: INTERNAL_UNIPHY1 (0x20)
i2cid [@offset 45049]: 0x94, OSX senseid: 0x5
Connector at index 2
Type [@offset 44974]: DVI-I (2)
Encoder [@offset 44978]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 45078]: 0x90, OSX senseid: 0x1
Connector at index 3
Type [@offset 44984]: DVI-I (2)
Encoder [@offset 44988]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 45078]: 0x90, OSX senseid: 0x1

The hdmi output works with this hacked ATI*.kext-set (it's from 10.6.6) in which I can see connectortype 0x200 and controlflags 0x204 in the ioreg. Only resolution change / wakeup doesnt work. Does this mean that the hdmi output of the card is actually a DVI port?

The hacked ati-kexts use this personality:
Personality: Peregrine
ConnectorInfo count in decimal: 2
Disk offset in decimal 69472
0000000	00  02  00  00  04  02  00  00  00  00  00  00  02  01  04  05
0000010	00  04  00  00  00  01  00  00  00  00  00  00  20  00  02  02

I came to these values based on mucha's post #1. Did I miss anything? What do you think:
00 08 00 00 00 02 00 00 00 00 00 00 11 00 00 05
04 00 00 00 14 00 00 00 00 00 00 00 10 01 01 01

HDMI output then looks like this:
Attached File  IMG_0319.jpg   82.42KB   19 downloads
I also tried transmitter 01 for hdmi and emitter 02. No changes.

My questions are now:

- Do I completly take the values that the bios uses? So for encoder 20 and 1e??
- Also with RadeonHD.kext by Dong the screen looks like this. If I disable graphicsenabler, the boot log will stop. So I cannot get any log from RadeonHD. How can I fix this?
- Should I use DACA or DACB for hdmi transmitter?
- Is the row order or the HotplugID order important ?
- If my bios shows 4 connections, but the card really has only 2, do I have to find a personality with 4 ports?
- If resolution change leads into black screen, what values are considered to be wrong?
- Do I have to compile a custom build of kabyl's bootloader with my gfx ids? But they seem to be injected ok. Does the bootloader also inject or overwrite the personalities?
- If the screen remains black after resolution change, is this the same problem as black screen after wakeup from sleep? After wakeup, all other devices seem to work.

EDIT: Solution for 9498 here.

#306
twisted89

twisted89

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts

I have a HD4650 1GB id 9498 and use OSX 10.6.7.
My card has 1 x HDMI and 1 x DVI (don't need duallink). Here is my BIOSDump:

ATOM BIOS Rom: 
 SubsystemVendorID: 0x174b SubsystemID: 0xe109
 IOBaseAddress: 0x0000
 Filename: B110852.201 
 BIOS Bootup Message: 
 113-AB93400-100-PC RV730 DDR2 128bit 600e/500m 
 
 PCI ID: 1002:9498
 Connector at index 0
 Type [@offset 44954]: VGA (1)
 Encoder [@offset 44958]: INTERNAL_KLDSCP_DAC2 (0x16)
 i2cid [@offset 45026]: 0x93, OSX senseid: 0x4
 Connector at index 1
 Type [@offset 44964]: HDMI-A (11)
 Encoder [@offset 44968]: INTERNAL_UNIPHY1 (0x20)
 i2cid [@offset 45049]: 0x94, OSX senseid: 0x5
 Connector at index 2
 Type [@offset 44974]: DVI-I (2)
 Encoder [@offset 44978]: INTERNAL_KLDSCP_DAC1 (0x15)
 i2cid [@offset 45078]: 0x90, OSX senseid: 0x1
 Connector at index 3
 Type [@offset 44984]: DVI-I (2)
 Encoder [@offset 44988]: INTERNAL_UNIPHY (0x1e)
 i2cid [@offset 45078]: 0x90, OSX senseid: 0x1

The hdmi output works with this hacked ATI*.kext-set (it's from 10.6.6) in which I can see connectortype 0x200 and controlflags 0x204 in the ioreg. Only resolution change / wakeup doesnt work. Does this mean that the hdmi output of the card is actually a DVI port?

The hacked ati-kexts use this personality:
Personality: Peregrine
 ConnectorInfo count in decimal: 2
 Disk offset in decimal 69472
 0000000	00  02  00  00  04  02  00  00  00  00  00  00  02  01  04  05
 0000010	00  04  00  00  00  01  00  00  00  00  00  00  20  00  02  02

I came to these values based on mucha's post #1. Did I miss anything? What do you think:
00 08 00 00 00 02 00 00 00 00 00 00 11 00 00 05
 04 00 00 00 14 00 00 00 00 00 00 00 10 01 01 01

HDMI output then looks like this:
Attached File  IMG_0319.jpg   82.42KB   19 downloads
I also tried transmitter 01 for hdmi and emitter 02. No changes.

My questions are now:

- Do I completly take the values that the bios uses? So for encoder 20 and 1e??
- Also with RadeonHD.kext by Dong the screen looks like this. If I disable graphicsenabler, the boot log will stop. So I cannot get any log from RadeonHD. How can I fix this?
- Should I use DACA or DACB for hdmi transmitter?
- Is the row order or the HotplugID order important ?
- If my bios shows 4 connections, but the card really has only 2, do I have to find a personality with 4 ports?
- If resolution change leads into black screen, what values are considered to be wrong?
- Do I have to compile a custom build of kabyl's bootloader with my gfx ids? But they seem to be injected ok. Does the bootloader also inject or overwrite the personalities?


Only had a quick look at what you've posted as I don't have much time right now but your card has 3 outputs so I would suggest using a personality that also has 3 outputs instead of 2.

#307
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts

Only had a quick look at what you've posted as I don't have much time right now but your card has 3 outputs so I would suggest using a personality that also has 3 outputs instead of 2.

Thanks, I will try it. But the question is, the hacked kexts use the 2-device-personality Peregrine and actually show a working, accelerated display at 1920x1080. So wouldn't it be more simple to enable this already working for resolution changes (and wakeup, same problem I believe?)?

EDIT: Solution for 9498 here.

#308
Nemorosus

Nemorosus

    InsanelyMac Protégé

  • Members
  • PipPip
  • 62 posts
  • Gender:Male
I can't get my bios extracted.

#309
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts

I can't get my bios extracted.

Google for "radeonpci.kext bios".

#310
Nemorosus

Nemorosus

    InsanelyMac Protégé

  • Members
  • PipPip
  • 62 posts
  • Gender:Male

Google for "radeonpci.kext bios".


Yeah, gives me some kind of error, did it from the terminal just like it says in that post.
But if i menage to get the bios uploaded, could you guys help me out? I tried every patched text and replaced all boot files, i get the video card recognized and installed as a PCI device, but the Shrike (also listed as pci device) doesn't have a driver installed. I'll would upload an image, but when i take a screenshot it's white ;)

P.S.
What files do i need to upload here, to get help, and can somebody make a image tutorial, that would help us annoying noobs stop from writing here? Please! After 3 nights with no sleep, i have lost almost all of my hope.

#311
Cionniasd

Cionniasd

    InsanelyMac Protégé

  • Members
  • Pip
  • 7 posts
You are a GENIUS.
Same card of you, so i installed all the necessary and full qe/qi thank you!!!!
i wann ask, i'm using ios 10.6.3, but i want to upgrade to 10.6.7, is this working the same method or another? can i use the same files?
pc efi 10.6 chameleon 747 radeonhd 20/10 and you boot and kexts?

#312
SliderSD

SliderSD

    InsanelyMac Protégé

  • Members
  • Pip
  • 12 posts
Hello,

what can I do if the video bios dump does not show an i2cid value for the LVDS connector?
I have a mobility radeon 4650 in my laptop.

Here is the dump:
[codebox]ATOM BIOS Rom:
SubsystemVendorID: 0x104d SubsystemID: 0x9035
IOBaseAddress: 0xd000
Filename: BR34169.001
BIOS Bootup Message:
Sony_M764_M96M2LP_gDDR3 M96 GDDR3 128bit 450e/600m

PCI ID: 1002:9480
Connector at index 0
Type [@offset 46098]: LVDS (7)
Encoder [@offset 46102]: INTERNAL_UNIPHY2 (0x21)
Connector at index 1
Type [@offset 46108]: VGA (1)
Encoder [@offset 46112]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 46179]: 0x90, OSX senseid: 0x1
Connector at index 2
Type [@offset 46118]: HDMI-A (11)
Encoder [@offset 46122]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 46202]: 0x94, OSX senseid: 0x5
[/codebox]

Any ideas?
Kind regards and thanks in advance

#313
rafirafi

rafirafi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 posts
Thanks,
I was stuck with VGA with my HD4770 Desktop cause of the reducted number of framebuffers in the 10.6.7 iMac update.
Just replacing the personnality of the ATI4800Controller FB (Motmot) with one from ATI4600Controller FB (Flicker) and DVI was back.
Good work, hope you will find a way to build something with all these info. :moil:

#314
Mike85b

Mike85b

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts
hello there

i finally manage to do all steps to this tutorial. but still cant get full qe/ci
My card: mobility radeon hd 530v , dev id 9555 (renamed mobility 4350 )
i had compile chameleon trunk 747 and modified ati.c with name for my card and default framebuffer to shrike ( also peregrine and flicker). so all necessary kexts are loaded ( ATIFramebuffer.kext, ATIRadeonx2000.kext, ATISupport.kext and ATI4600controller.kext). im running SL 10.6.7.

also at pci card drivers and framebuffer are loaded (ex. ATY,Shrike )

I dont know what im doing wrong and still dont have qe/ci after all necessary kext loaded

thanks for any help
Mike

#315
ytrox

ytrox

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 502 posts
  • Gender:Male
  • Location:Italy
HI Mucha! can you post to me a dump of atiframebuffer of 10.6.2 if you can(also the method to dump is appreciated obiviusly)?. I can't find a way to dump it (it said me 0 connectorInfo for all framebuffer :) ). I've seen you have dumped Fb from 10.6.3 and 10.6.2 is similar (20byte). thanks

#316
Lordadmiral Drake

Lordadmiral Drake

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 423 posts
  • Gender:Male
  • Location:Austria
Vote for stickify =)

#317
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts
Solution for 9498 here.

#318
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts
Ok,

these edited personalities work for hdmi out and dvi out, if the calble is plugged in from bootstart:
Personality: Kakapo
ConnectorInfo count in decimal: 3
Disk offset in decimal 69344
0000000	10  00  00  00  10  00  00  00  00  00  00  00  00  10  00  04
0000010	00  08  00  00  00  02  00  00  00  00  00  00  01  01  01  05
0000020	00  02  00  00  14  02  00  00  00  00  00  00  10  01  02  01



EDIT: Edited Kakapo, now works with wakeup/screenres-change on DVI port (HDMI and VGA untested)!!
It seems to me that the order of the ports has to be match the order of the bios dump's ports.

#319
Lordadmiral Drake

Lordadmiral Drake

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 423 posts
  • Gender:Male
  • Location:Austria
Okay mucha. I did everything as told in your howto, except for senseid which I just took from your config because radeondump doesnt output it for me. But still no QE/CI / res-change

Sysprofiler says:

[codebox]Monitor:



Typ: GPU

Bus: PCIe

PCIe-Lane-Breite: x16

VRAM (gesamt): 256 MB

Hersteller: ATI (0x1002)

Geräte-ID: 0x9480

Versions-ID: 0x0000

Monitore:

Monitor:

Auflösung: 1024 x 768

Pixeltiefe: 32-Bit Farbe (ARGB8888)

Hauptmonitor: Ja

Synchronisierung: Aus

Eingeschaltet: Ja

[/codebox]




Encoder.txt from RadeonHD.kext - dmesg

[codebox]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS 24Bit: 0x0

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS FPDI: 0x1

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Temporal Dither : 0x1

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Spatial Dither : 0x0

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Grey Level: 0x3

[RadeonHD]: AtomBIOS returned 3 Grey Levels

[RadeonHD]: RHDAtomBIOSScratchBlLevel

[RadeonHD]: Get BL level: 0x0

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS SEQ Dig onto DE: 30

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS SEQ DE to BL: 360

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Off Delay: 500

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Duallink: 0x1

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS 24Bit: 0x0

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS FPDI: 0x1

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Temporal Dither : 0x1

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Spatial Dither : 0x0

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsInfoQuery

[RadeonHD]: LVDS Grey Level: 0x3

[RadeonHD]: AtomBIOS returned 3 Grey Levels

[RadeonHD]: RHDAtomBIOSScratchBlLevel

[RadeonHD]: Get BL level: 0x0

[RadeonHD]: rhdAtomSelectCrtcSourceVersion returned version 2 for index 0x2a

[RadeonHD]: RHDOutputAdd

[RadeonHD]: Attaching Output AtomOutput UniphyE to Connector PANEL

[RadeonHD]: RHDConnectorsInit: 1 (VGA\^G CRT1) type 1, ddc 255, hpd 0

[RadeonHD]: Using AtomBIOS for Outputs

[RadeonHD]: RHDAtomOutputInit

[RadeonHD]: rhdAtomSelectCrtcSourceVersion returned version 2 for index 0x2a

[RadeonHD]: RHDOutputAdd

[RadeonHD]: Attaching Output AtomOutput DACA to Connector VGA 1

[RadeonHD]: RHDConnectorsInit: 2 (HDMI_TYPE_A DFP1) type 3, ddc 0, hpd 1

[RadeonHD]: RHDI2CFunc

[RadeonHD]: Using AtomBIOS for Outputs

[RadeonHD]: RHDAtomOutputInit

[RadeonHD]: RHDHdmiInit

[RadeonHD]: RHDHdmiInit: unknown HDMI output type

[RadeonHD]: rhdAtomSelectCrtcSourceVersion returned version 2 for index 0x2a

[RadeonHD]: RHDOutputAdd

[RadeonHD]: Attaching Output AtomOutput UniphyB to Connector DVI-D 1

[RadeonHD]: RHDHPDRestore

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomOutputDeviceList

[RadeonHD]: rhdAtomOutputDeviceListFromObjectHeader

[RadeonHD]: ObjectTable - size: 193, BIOS - size: 65536 TableOffset: 50 object_header_end: 243

[RadeonHD]: DisplayPathObjectTable: entries: 3 version: 1

[RadeonHD]: DisplaPathTable[0]: size: 10 DeviceTag: 0x2 ConnObjId: 0x310e NAME: LVDS GPUObjId: 0x1100

[RadeonHD]: GraphicsObj[0] ID: 0x2121 Type: 0x2 ObjID: 0x21 ENUM: 0x1 NAME: UNIPHY2

[RadeonHD]: rhdAtomGetConnectorID

[RadeonHD]: DeviceIndex: 0x1

[RadeonHD]: DisplaPathTable[1]: size: 10 DeviceTag: 0x1 ConnObjId: 0x3105 NAME: VGA GPUObjId: 0x1100

[RadeonHD]: GraphicsObj[0] ID: 0x2115 Type: 0x2 ObjID: 0x15 ENUM: 0x1 NAME: INTERNAL_KLDSCP_DAC1

[RadeonHD]: rhdAtomGetConnectorID

[RadeonHD]: DeviceIndex: 0x0

[RadeonHD]: DisplaPathTable[2]: size: 10 DeviceTag: 0x8 ConnObjId: 0x310c NAME: HDMI_TYPE_A GPUObjId: 0x1100

[RadeonHD]: GraphicsObj[0] ID: 0x221e Type: 0x2 ObjID: 0x1e ENUM: 0x2 NAME: UNIPHY

[RadeonHD]: rhdAtomGetConnectorID

[RadeonHD]: DeviceIndex: 0x3

[RadeonHD]: Call to AtomBIOS Get Output Info succeeded

[RadeonHD]: RHDAtomSetupOutputDriverPrivate

[RadeonHD]: Output: AtomOutput UniphyE[0x b] - adding devices:

[RadeonHD]: Looking at DeviceID: 0x 2 OutputType: 0x b ConnectorType: 0x 4

[RadeonHD]: >> 0x 2

[RadeonHD]: Looking at DeviceID: 0x 1 OutputType: 0x 1 ConnectorType: 0x 1

[RadeonHD]: Looking at DeviceID: 0x 4 OutputType: 0x 8 ConnectorType: 0x 3

[RadeonHD]: RHDAtomSetupOutputDriverPrivate

[RadeonHD]: Output: AtomOutput DACA[0x 1] - adding devices:

[RadeonHD]: Looking at DeviceID: 0x 2 OutputType: 0x b ConnectorType: 0x 4

[RadeonHD]: Looking at DeviceID: 0x 1 OutputType: 0x 1 ConnectorType: 0x 1

[RadeonHD]: >> 0x 1

[RadeonHD]: Looking at DeviceID: 0x 4 OutputType: 0x 8 ConnectorType: 0x 3

[RadeonHD]: RHDAtomSetupOutputDriverPrivate

[RadeonHD]: Output: AtomOutput UniphyB[0x 8] - adding devices:

[RadeonHD]: Looking at DeviceID: 0x 2 OutputType: 0x b ConnectorType: 0x 4

[RadeonHD]: Looking at DeviceID: 0x 1 OutputType: 0x 1 ConnectorType: 0x 1

[RadeonHD]: Looking at DeviceID: 0x 4 OutputType: 0x 8 ConnectorType: 0x 3

[RadeonHD]: >> 0x 4

[RadeonHD]: rhdModeLayoutSelect

[RadeonHD]: atomLVDSPropertyControl

[RadeonHD]: atomLVDSPropertyControl

[RadeonHD]: RHDBIOSScratchDACSense

[RadeonHD]: Sensing DACA on Output AtomOutput DACA

[RadeonHD]: AtomDACLoadDetection

[RadeonHD]: Calling DAC_LoadDetection

[RadeonHD]: Pspace[1]: 0x 1

[RadeonHD]: Pspace[2]: 0x 0

[RadeonHD]: Pspace[3]: 0x5558b854

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomExec

[RadeonHD]: CAIL: CailAllocateMemory

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7ef4) = 222000

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7058) = 0

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7000) = 0

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7050) = 1010101

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(705c) = 0

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7000) = 0

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7004) = 0

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7004,0)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7000) = 0

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7000,1)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7028) = 70000

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7028,70000)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7058) = 0

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7058,0)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7040) = 0

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7040,0)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7058) = 0

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7058,1)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(705c) = 0

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(705c,70000)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7ef4) = 222000

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7ef4,221f02)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7050) = 1010101

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7050,1010100)

[RadeonHD]: CAIL: CailDelayMicroSeconds

[RadeonHD]: Delay 5000 usec

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7050) = 1010100

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7050,0)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7040) = 0

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7040,1e6)

[RadeonHD]: CAIL: CailDelayMicroSeconds

[RadeonHD]: Delay 200 usec

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(705c) = 70000

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(705c,70100)

[RadeonHD]: CAIL: CailDelayMicroSeconds

[RadeonHD]: Delay 100 usec

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7060) = 0

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7ef4) = 221f02

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7ef4,222000)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7058) = 1

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7058,0)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(7000) = 1

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7000,0)

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(7050,1010101)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(705c) = 70100

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(705c,0)

[RadeonHD]: CAIL: CailReadATIRegister

[RadeonHD]: CailReadATIRegister(1724) = 40000

[RadeonHD]: CAIL: CailWriteATIRegister

[RadeonHD]: atomSaveRegisters

[RadeonHD]: CailWriteATIRegister(1724,40000)

[RadeonHD]: CAIL: CailReleaseMemory

[RadeonHD]: ParseTable said: CD_SUCCESS

[RadeonHD]: Call to AtomBIOS Exec succeeded

[RadeonHD]: DAC_LoadDetection Successful

[RadeonHD]: rhdAtomBIOSScratchDACSenseResults

[RadeonHD]: BIOSScratch_0: 0x40000

[RadeonHD]: rhdAtomBIOSScratchDACSenseResults: RHD_SENSED_NONE

[RadeonHD]: RHDHPDCheck

[RadeonHD]: RHDHPDCheck returned: 0 mask: 1

[RadeonHD]: RHDMonitorInit

[RadeonHD]: rhdMonitorPanel

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsGetTimings

[RadeonHD]: rhdAtomLvdsTimings

[RadeonHD]: rhdAtomLvdsTimings: LVDS Modeline: 1600x900 97750 1600 (1600) 1648 1696 (1784) 1784 900 (900) 902 905 (912) 912

[RadeonHD]: Call to AtomBIOS Get Panel Mode succeeded

[RadeonHD]: RHDAtomBiosFunc

[RadeonHD]: rhdAtomLvdsGetTimings

[RadeonHD]: rhdAtomLvdsDDC

[RadeonHD]: rhdAtomLvdsDDC: unknown record type: ca

[RadeonHD]: Query for AtomBIOS Get Panel EDID: failed

[RadeonHD]: RHDSynthModes

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "640x480Scaled" 23 640 688 720 800 480 483 487 494[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "720x480Scaled" 26 720 768 800 880 480 483 493 499[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "854x480Scaled" 30 854 902 934 1014 480 483 493 499[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "768x576Scaled" 32 768 816 848 928 576 579 583 593[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "800x600Scaled" 35 800 848 880 960 600 603 607 618[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1024x768Scaled" 56 1024 1072 1104 1184 768 771 775 790[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1152x768Scaled" 62 1152 1200 1232 1312 768 771 781 790[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1280x720Scaled" 63 1280 1328 1360 1440 720 723 728 741[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1280x960Scaled" 85 1280 1328 1360 1440 960 963 967 988[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1280x854Scaled" 75 1280 1328 1360 1440 854 857 867 879[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1280x960Scaled" 85 1280 1328 1360 1440 960 963 967 988[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1280x1024Scaled" 90 1280 1328 1360 1440 1024 1027 1034 1054[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1440x960Scaled" 94 1440 1488 1520 1600 960 963 973 988[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDSynthModes: Adding Modeline [RadeonHD]: Modeline "1400x1050Scaled" 101 1400 1448 1480 1560 1050 1053 1057 1080[RadeonHD]: +hsync[RadeonHD]: -vsync[RadeonHD]:

[RadeonHD]: RHDAtomOutputAllocFree

[RadeonHD]: Mapping DIG1 encoder to KLDSKP_UNIPHYE

[RadeonHD]: Crtc[0]: found native mode from Monitor[LVDS Panel]:

[RadeonHD]: Modeline "1600x900" 97 1600 1648 1696 1784 900 902 905 912[RadeonHD]:

[RadeonHD]: Connector "PANEL" uses Monitor "LVDS Panel":

[RadeonHD]: RHDValidateScaledToMode

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: DxModeValid: ATOM CRTC 1

[RadeonHD]: rhdAtomOutputModeValid

[RadeonHD]: Listing modesetting layout:

[RadeonHD]: ATOM CRTC 1: tied to Atom PLL 1 and LUT A:

[RadeonHD]: Outputs: AtomOutput UniphyE (PANEL)[RadeonHD]:

[RadeonHD]: ATOM CRTC 2: unused

[RadeonHD]: Unused Outputs: AtomOutput DACA[RadeonHD]: , AtomOutput UniphyB[RadeonHD]:

[RadeonHD]: RHDModesPoolCreate

[RadeonHD]: rhdCreateModesListAndValidate

[RadeonHD]: Validating Modes from Monitor "LVDS Panel" on "PANEL"

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: rhdModeValidateCrtc

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: RHDGetVirtualFromModesAndFilter

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 2

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 1

[RadeonHD]: FUNCTION: DxFBValid: ATOM CRTC 2

[RadeonHD]: Using 96x96 DPI.

[RadeonHD]: Using 1600x1050 Framebuffer with 1600 pitch

[RadeonHD]: Free FB offset 0x00000000 (size = 0x10000000)

[RadeonHD]: Display resolutions detected:

[RadeonHD]: 1600 X 900 @ 60Hz

[RadeonHD]: 1400 X 1050 @ 59Hz

[RadeonHD]: 1440 X 960 @ 59Hz

[RadeonHD]: 1280 X 1024 @ 59Hz

[RadeonHD]: 1280 X 960 @ 59Hz

[RadeonHD]: 1280 X 854 @ 59Hz

[RadeonHD]: 1280 X 720 @ 59Hz

[RadeonHD]: 1152 X 768 @ 59Hz

[RadeonHD]: 1024 X 768 @ 59Hz

[RadeonHD]: 800 X 600 @ 59Hz

[RadeonHD]: 768 X 576 @ 59Hz

[RadeonHD]: 854 X 480 @ 59Hz

[RadeonHD]: 720 X 480 @ 59Hz

[RadeonHD]: 640 X 480 @ 59Hz

[RadeonHD]: cscGetScalerInfo

[RadeonHD]: cscGetConnection...

[RadeonHD]: cscGetConnection query for connection 0

[RadeonHD]: cscSetGray

[RadeonHD]: cscSavePreferredConfiguration

[RadeonHD]: cscGetFeatureConfiguration

[RadeonHD]: cscGetConnection...

[RadeonHD]: cscGetConnection query for connection 0

[RadeonHD]: cscGetConnection...

[RadeonHD]: cscGetConnection query for connection 0

[RadeonHD]: cscGetConnection...

[RadeonHD]: cscGetConnection query for connection 0

[RadeonHD]: cscGetConnection...

[RadeonHD]: cscGetConnection query for connection 0

[RadeonHD]: cscGetConnection...

[RadeonHD]: cscGetConnection query for connection 0

[RadeonHD]: cscGetFeatureConfiguration

[RadeonHD]: cscSetMode

[RadeonHD]: cscSetGray

[RadeonHD]: cscSavePreferredConfiguration

patch_text_segment failed

patch_text_segment failed

patch_text_segment failed

patch_text_segment failed

patch_text_segment failed

patch_text_segment failed

patch_text_segment failed

[/codebox]

#320
Mike85b

Mike85b

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts

Many thanks to bcc9 :) for his genius discovery and for his method for finding and editing framebuffer personalities
I was planning to add this to bbc9 topics, but i couldn't add a replay only a new topic in new users lounge is allowed for me (I'm a member since 2006 ),so if a moderator can attach it it's welcome.
Most credit should go to bcc9 (radeondump & tutorial) & Dong (RadeonHD), this was not possible without his finding ,a previous knowledge of bbc9 method with some basic binary editing and terminal skills is a must have.
Sorry for my bad English and my Bad teaching skills, the most important is the idea.
Any additional useful information and feed-back is welcome
The bootlaoder is chameleon rev 747 with modded ati.c with corrected default framebuffer to Shrike and model name for my DeviceId: 0x9480 (Kabyl boot file is no go for me).

The Guide (HowTo.rtf outdated ) in the attachements with some usefull files for quick editing

I have received many PM from people asking for my patched kext, i have uploaded them with my boot file, remember those files are specific for Mobility Radeon 4650 on a HP Pavilion DV6 series & there is NO guaranty they will work on other models

http://www.megaupload.com/?d=4SN7VDMK
http://hotfile.com/dl/113477176/da80b51/ATI.zip.html

Updates:

1- the same method is tested in Mac OS X version 10.6.3 & the lastest update 10.6.7 and i report it's working perfectly for both

2- for the 10.6.3 system the personnality is 20 bytes (the SenseID byte is replaced by i2cid & SenseID is 4 bytes);

a-the original 10.6.3 Shrike ConnectorInfo:

02 00 00 00 40 00 00 00 09 00 00 00 02 01 00 00 03 00 00 00 
 02 00 00 00 00 01 00 00 09 01 00 00 20 01 02 91 02 00 00 00 
 00 04 00 00 04 03 00 00 00 01 00 00 10 00 01 90 01 00 00 00

b-My modded working 10.6.3 Shrike ConnectorInfo :

02 00 00 00 40 00 00 00 09 00 00 00 12 00 00 96 07 00 00 00 
 10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 95 06 00 00 00 
 00 08 00 00 00 02 00 00 00 01 00 00 20 01 02 90 01 00 00 00


3- About the 10.6.7 Update:

a-ConnectorInfo are located in ATIFramebuffer.kext for the general combo update (the same as 10.6.6 system)
b-ConnectorInfo have migrated to ATIControlerXXXX.kext for 2011 MBP update (the kernel & ATi Drivers structure are closer to Lion 10.7 than to 10.6.6),
ATIController4600.kext contain only Shrike, Flicker & Gliff ConnectorInfo (which theorically restrict the possible framebuffer to use with a specific controller.kext)
ATIController4800.kext contain only Cardinal,Motmot & Quail ConnectorInfo.

The Online guide:

A- The Structure of a personality:

I'll take Shrike as framebuffer for the demonstration, cause it's used as default by Radeon HD 4670 (M96XT, DevID 0x9488 ) on iMac 10,1 & iMac11,2
which is the closest to the Mobility Radeon HD 4650 (M96, DevID 0x9480) on my board.

for Shrike we have by default 3 personalities , one for each connector (3 connectors allowed): port0, port1, port2.

02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 03
02 00 00 00 00 01 00 00 09 01 00 00 20 01 02 02
00 04 00 00 04 03 00 00 00 01 00 00 10 00 01 01

let's take the first one which is for port 0 :

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

divide it to 8 parts:

02 00 00 00 - 40 00 00 00 - 09 01 - 00 00 - 02 - 01 - 00 - 03

Then byte swapped

1- ConnectorType : 02 00 00 00 > 0x00000002 - - -
2- ATY,ControlFlags : 40 00 00 00 > 0x00000040 +++
3- Features : 09 01 > 0x0109 +++
4- Unkown : 00 00 > 0x0000 - - -
5- Transmitter : 02 > 0x02 - - -
6- Encoder : 01 > 0x01 - - -
7- HotplugID : 00 > 0x00 - - -
8- SenseID : 03 > 0x03 ++++++

- - - > Value not important, but need to be accurate for better result
+++ > Important value, incorrect value == not working personality

Detailed info about possible value for each field is list below ( some are confirmed, some only guessed by studying different personalities and need some feed-back
from working system (for me LVDS and VGA value are confirmed)

1- ConnectorType;

/* 4 byte  ,from bbc9 radeondump */
		  #define CONNECTORTYPE_LVDS   0x00000002	
		  #define CONNECTORTYPE_DVI	  0x00000004
		 #define CONNECTORTYPE_VGA	  0x00000010
		 #define CONNECTORTYPE_S-V	  0x00000080		
		 #define CONNECTORTYPE_DP	  0x00000400	
		  #define CONNECTORTYPE_HDMI   0x00000800

2- ATY,ControlFlags;

/* 4 byte the same as found on ioreg key: ATY,ControlFlags. hardcoded for each connector type 
	 u can try one by one until u find the working one for u
	 0x0002 : LVDS		>	ControlFlag : 0x0040 / 0x0100
	 0x0004 : DVI-?		>	ControlFlag : 0x0016 - 0x0014 / 0x214
	 0x0010 : VGA		>	ControlFlag : 0x0010
	 0x0080 : S-Video	   >	ControlFlag : 0x0002	  
	 0x0200 : DVI-?		>	ControlFlag : 0x0014 / 0x0214 - 0x0204
	 0x0400 : DisplayPort	>	ControlFlag : 0x0100 - 0x0104 - 0x0304 / 0x0604 - 0x0400
	 0x0800 : HDMI		>	ControlFlag : 0x0200
	 0x1000 : DVI-?		>	ControlFlag : 0x0016
	 */

3-Features;

/* Features byte 0 , for example for LVDS screen it's almost 0x09 = 0x01 + 0x08 > Internal + Backlight */
	 #define FEATURE_USE_INTERNAL			   0x01
	 #define FEATURE_USE_RGB_ON_YUV		0x04
	 #define FEATURE_USE_BACKLIGHT		  0x08
	 #define FEATURE_BACKLIGHT_INVERTED	 0x10
	 #define FEATURE_USE_CLAMSHELL		  0x20
 
	 /* 1 byte, hardcoded for each connector type
	 0x0002 : LVDS		>	Features  :  0x09
	 0x0004 : DVI-?		>	Features  :  0x00
	 0x0010 : VGA		>	Features  :  0x00
	 0x0080 : S-Video	   >	Features  :  0x04	 
	 0x0200 : DVI-?		>	Features  :  0x00
	 0x0400 : DisplayPort	>	Features  :  0x00
	 0x0800 : HDMI		>	Features  :  0x00
	 0x1000 : DVI-?		>	Features  :  0x00
	 */
 
	 /* Features byte 1 , no idea ???*/

4- Unkown ;

5- Transmitter;

/* u can get this from dmesg after installing  Dong's RadeonHD with debug info */ 
	 /* Transmitter Bits 0-3 (TransmitterID) */
	 #define UNIPHY	  0x00
	 #define UNIPHY1   0x01
	 #define UNIPHY2   0x02
 
	 /* Transmitter Bits 4-7 (LinkID) */
	 #define DUALLINK  0x00 // LINKA + LINKB
	 #define LINKA		  0x10
	 #define LINKB		  0x20
 
	 /* Transmitter byte  */
	 #define UNIPHYA	 0x10 // = UNIPHY:LINKA
	 #define UNIPHYB	 0x20 // = UNIPHY:LINKB
	 #define UNIPHYAB   0x00 // = UNIPHY:DUALLINK
	 #define UNIPHYC	 0x11 // = UNIPHY1:LINKA
	 #define UNIPHYD	 0x21 // = UNIPHY1:LINKB
	 #define UNIPHYCD   0x01 // = UNIPHY1:DUALLINK
	 #define UNIPHYE	 0x12 // = UNIPHY2:LINKA
	 #define UNIPHYF	  0x22 // = UNIPHY2:LINKB
	 #define UNIPHYEF	0x02 // = UNIPHY2:DUALLINK
	 #define DACA			  0x00
	 #define DACB		  0x10


6- Encoder;

/* u can get this from Dmesg as above  for R8XX architecture and above there is 06 Digital Encoder: DIG_1 > DIG_6*/ 
	 /* Encoder Bits 0-3 (DIG_ID : Digital) */
	 #define DIG1   0x00 // = DIGA
	 #define DIG2   0x01 // = DIGB
	 #define DIG3   0x02 // = DIGC  Only for Radeon HD 5XXX Series  and above
	 #define DIG4   0x03 // = DIGD  Only for Radeon HD 5XXX Series  and above
	 #define DIG5   0x04 // = DIGE  Only for Radeon HD 5XXX Series  and above
	 #define DIG6   0x05 // = DIGF  Only for Radeon HD 5XXX Series  and above
  
	 /* Encoder Bits 4-7 (DAC_ID : Analog) */
	 #define DAC	 0x10

7- HotplugID;

/* 4 bits it's a unique id for each port, i have tried with 0 for port0, 1 for port1 and 2 for port2 and it's just working */

8- SenseID;

/* SenseLine = (i2cid & 0xf) +1 ,you get  i2cid from bbc9 radeondump */   
	  Bits 0-3: Sense Line   
	  Bit	4: Use hw i2c flag


Now to some practice


B- Getting the ConnectorType, ATY,ControlFlags,Features, HotplugId and SenseLineId Values:


You will need :
1- videocard bios dump ( i have used everest for that and renamed it 1002_9480.rom ) ,
2- radeondump tool from bbc9
launch Terminal & type ./radeondump < your_videobios.rom > connector.txt
you will get something like this :

Desktop Mucha$ ./radeondump < 1002_9480.rom 
 ATOM BIOS Rom: 
	 SubsystemVendorID: 0x103c SubsystemID: 0x3629
	 IOBaseAddress: 0x7000
	 Filename: br33507.001 
	 BIOS Bootup Message: 
 HP_Quanta_Jones_Cujo_M96M_DDR3 M96 DDR3 128bit 550e/667m					
 
 Connector at index 0 type: LVDS (7)
 Connector's i2cid: 96
 Connector at index 1 type: VGA (1)
 Connector's i2cid: 95
 Connector at index 2 type: HDMI-A (11)
 Connector's i2cid: 90


which means:

port0 > LVDS=0x00000002 - ControlFlag=0x0040 - Features = 0x09-------------------------HotplugId=0x00 - i2cid=96 > SenseLine = 0x07
port1 > VGA =0x00000010 - ControlFlag=0x0010 - Features = 0x00 ------------------------ HotplugId=0x01 - i2cid=95 > SenseLine = 0x06
port2 > HDMI=0x00000800 - ControlFlag=0x0200 - Features = 0x00 -------------------------HotplugId=0x02 - i2cid=90 > SenseLine = 0x01


C- Getting the Encoder & Transmitter ID Values:


For some useful info you may visit : "http://www.botchco.c...om/agd5f/?p=51"
and some Encoder-Transmitter Routing rules taking from commentary of linux drivers
"http://lxr.free-elec...eon_encoders.c"

682 /*
 683  * DIG Encoder/Transmitter Setup
 684  *
 685  * DCE 3.0/3.1 (RV6XX, Radeon HD 3XXX Series and older)
 686  * - 2 DIG transmitter blocks. UNIPHY (links A and B ) and LVTMA.
 687  * Supports up to 3 digital outputs
 688  * - 2 DIG encoder blocks.
 689  * DIG1 can drive UNIPHY link A or link B
 690  * DIG2 can drive UNIPHY link B or LVTMA
 691  *
 692  * DCE 3.2 (RV7XX, Radeon HD 4XXX Series)
 693  * - 3 DIG transmitter blocks. UNIPHY0/1/2 (links A and B ).
 694  * Supports up to 5 digital outputs
 695  * - 2 DIG encoder blocks.
 696  * DIG1/2 can drive UNIPHY0/1/2 link A or link B
 697  *
 698  * DCE 4.0 (RV8XX, Radeon HD 5XXX Series)
 699  * - 3 DIG transmitter blocks UNPHY0/1/2 (links A and B ).
 700  * Supports up to 6 digital outputs
 701  * - 6 DIG encoder blocks.
 702  * - DIG to PHY mapping is hardcoded
 703  * DIG1 drives UNIPHY0 link A, A+B
 704  * DIG2 drives UNIPHY0 link B
 705  * DIG3 drives UNIPHY1 link A, A+B
 706  * DIG4 drives UNIPHY1 link B
 707  * DIG5 drives UNIPHY2 link A, A+B
 708  * DIG6 drives UNIPHY2 link B
 709  *
 710  * Routing
 711  * crtc -> dig encoder -> UNIPHY/LVTMA (1 or 2 links)
 712  * Examples:
 713  * crtc0 -> dig2 -> LVTMA   links A+B -> TMDS/HDMI
 714  * crtc1 -> dig1 -> UNIPHY0 link  B   -> DP
 715  * crtc0 -> dig1 -> UNIPHY2 link  A   -> LVDS
 716  * crtc1 -> dig2 -> UNIPHY1 link  B+A -> TMDS/HDMI
 717  */


You need Dong's RadeonHD.kext , i have used the 10/20/2009 update, edit the info.plist to set the debug to true and verbose level to 2
then delete ATI4600 & ATIFramebuffer from S/L/E (make a back-up first) and install radeonHD reboot (your external VGA,DVI or HDMI screen most be connected)
once on desktop go to Terminal : sudo -s , type your password then dmesg >Encoder.txt
In my case i get as output:
----------------------------------------------------------------------------
CailWriteATIRegister(1724,40002)
CAIL: CailReleaseMemory
ParseTable said: CD_SUCCESS
Call to AtomBIOS Exec succeeded
DAC_LoadDetection Successful
rhdAtomBIOSScratchDACSenseResults
BIOSScratch_0: 0x40002
rhdAtomBIOSScratchDACSenseResults sensed RHD_SENSED_VGA
AtomOutputvalueDACA: Sensed Output: VGA
atomTMDSPropertyControl
atomTMDSPropertyControl
Setting AtomOutputvalueDACA to incoherent
atomTMDSPropertyControl
RHDConnectorEnableHDMI
atomTMDSPropertyControl
RHDHPDCheck
RHDHPDCheck returned: 0 mask: 1
RHDMonitorInit
rhdMonitorPanel
RHDAtomBiosFunc
rhdAtomLvdsGetTimings
rhdAtomLvdsTimings
rhdAtomLvdsTimings: LVDS Modeline: 1366x768 72000 1366 (1366) 1414 1446 (1486) 1486 768 (768) 771 775 (806) 806
Call to AtomBIOS Get Panel Mode succeeded
RHDAtomBiosFunc
rhdAtomLvdsGetTimings
rhdAtomLvdsDDC
rhdAtomLvdsDDC: unknown record type: 24
Query for AtomBIOS Get Panel EDID: failed
RHDAtomOutputAllocFree
Mapping DIG1 encoder to KLDSKP_UNIPHYE
Crtc[0]: found native mode from Monitor[LVDS Panel]:
Modeline "1366x768" 72 1366 1414 1446 1486 768 771 775 806
Connector "PANEL" uses Monitor "LVDS Panel":
RHDMonitorInit
Connector "VGA 1": Failed to retrieve Monitor information.
RHDValidateScaledToMode
rhdModeValidateCrtc
DxModeValid: ATOM CRTC 1
rhdAtomOutputModeValid
Listing modesetting layout:
ATOM CRTC 1: tied to Atom PLL 1 and LUT A:
Outputs: AtomOutputduleDemandUniphyE (PANEL)
ATOM CRTC 2: tied to Atom PLL 2 and LUT B:
Outputs: AtomOutputvalueDACA (VGA 1)
Unused Outputs: AtomOutputUniphyB
RHDModesPoolCreate
-------------------------------------------------------------------------------------

Based upon the above information my SPECIFIC videocard routing is:

CRTC0>DIG1>UNIPHYE>LVDS Encoder= 0x00 Transmitter = 0x12
CRTC1>DAC > DACA >VGA Encoder=0x10 Transmitter = 0x00
CRTC1>DIG2>UNIPHYB>HDMI Encoder= 0x01 Transmitter = 0x20 (i don't have a hdmi display to test)

Now doing the compilation , my new modded Shrike personalities :

02 00 00 00 40 00 00 00 09 01 00 00 12 00 00 07 LVDS
10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 06 VGA
00 08 00 00 00 02 00 00 00 01 00 00 20 01 02 01 HDMI

This mod allowed me to get both LVDS an VGA display working with Resolution change, QE/CI Extended desktop and Mirroring
I have tested the same mod with Peregrine and i confirm it's also Working.


D- How to Easy Quick Patch your desired Framebuffer personality (without calculating the adresses and for both i386 and x86_64):


You should have a hexadecimal editor:

1- Download the attached : Sharks_FB.txt Birds_FB.txt and Monkeys_FB.txt,
2- Open the text file select and copy the desired personality hexadecimal code (the one you want to patch),
3- Open ATIFramebuffer.kext and Drag ATIFramebuffer binary to hexadecimal editor,
4- Select : edit>search , in the search fields paste the clipboard content and choose hex value & wrap option,
5- You should find 2 instances of the searched personality: the first one is for x86_64 and the second for i386 (make sure you have only 2),
6- Patch and save your binary, install reboot an ENJOY

For Radeon HD 3XXX and prior choose Sharks,
For Radeon HD 4XXX choose Birds,
For Radeon HD 5XXX choose Monkeys.


My card drives me crazy
I have done everything, check multible Framebufeers and the only i can get is resolution changes only, no cool effects, no trasparent menu and my opel gl run at maximum 22 frames. I dont know what is going wrong. All Ati kexts are loaded. If someone had that issue please tell me what is going wrong. It is very strange, im system preferrences i can get all native resolutions so ATIRadeonx2000.kext is loaded fine, but the controller i think is going wrong. is any other way to enable qe/ci ?

thanks





2 user(s) are reading this topic

2 members, 0 guests, 0 anonymous users


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