asstastic Posted June 27, 2008 Share Posted June 27, 2008 I've been testing out latest version of RadeonDump on my mobility x1600. At first it did nothing, then I realized I should probably have RadeonPCI kext installed. So I install kext, check to make sure it's loaded and try again. This time I get output but it still can't find EDID: gojiras-aspire-5670:~ gojira$ /Users/gojira/Desktop/Radeon\ PCI/RadeonPCI_compiled/RadeonDump -i Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEGP@1/IOPCI2PCIBridge/VGA@0/RadeonPCI it matched on name "ATY,WormyParent" Start I2C dump Read EDID at position 0 failed Read EDID at position 1 failed For some reason it seems to be trying to read from the VGA port(no monitor attached btw) instead of LVDS. Perhaps error is caused by com.apple.boot.plist EFI device strings(Same function as ATIinject/Natit) conflicts with RadeonPCI. If there is a possibility of conflict I can restore original boot.plist and test again. Otherwise, is there a way to get more verbose info to track down the error? Link to comment Share on other sites More sharing options...
Slice Posted June 28, 2008 Author Share Posted June 28, 2008 I hope it will work cause that will be really nice. But how if ATINDRV overwrites and only uses its own version of getEDID? No, ATINDRV is slave, IONDRVFramebuffer is master. IOReturn IONDRVFramebuffer::getDDCBlock( IOIndex /* connectIndex */, UInt32 blockNumber, IOSelect blockType, IOOptionBits options, UInt8 * data, IOByteCount * length ) { ... err = _doStatus( this, cscGetDDCBlock, &ddcRec); // call for ATINDRV If you rewrite this method ATINDRV will never be called for getEDID 2 asstastic Are you use own compilation of RadeonDump latest version? 2 justin1986 make ioreg -l -x -w 2048 >ioreg.txt and look what drivers is loaded to what devices Link to comment Share on other sites More sharing options...
asstastic Posted June 28, 2008 Share Posted June 28, 2008 2 asstasticAre you use own compilation of RadeonDump latest version? ya just like the post said, i put the latest version of RadeonDump in the same folder as RadeonPCI from post #28 and compiled it using the code at the top of RadeonDump. ok, I tested again without using EFI boot strings and got the exact same result as before. Link to comment Share on other sites More sharing options...
dong Posted June 28, 2008 Share Posted June 28, 2008 ok, I tested again without using EFI boot strings and got the exact same result as before. I'm still looking into the linux source to find out how connector information is taken into account. At the mean time, please try this to see if your card is in the known card list.RadeonDump.zip Link to comment Share on other sites More sharing options...
Slice Posted June 28, 2008 Author Share Posted June 28, 2008 I'm still looking into the linux source to find out how connector information is taken into account. At the mean time, please try this to see if your card is in the known card list. I am not successful with new RadeonDump. It is much more complex code. Grates Dong! No problem with known card list. Problem is in different pins for clock and data from different manufactures. I am still trying to find data_mask/clock_mask in different combination with different registers. What is strange: Linux uses revers 01 bits (High=0 Low=1) while Windows and Wormy drivers High=1 Low=0. Link to comment Share on other sites More sharing options...
clefmeister Posted June 28, 2008 Share Posted June 28, 2008 Slice and Dong: If either of your efforts would lead to a good driver for the X1200 series, I'd like to offer my help testing. I'm no programmer, but I can certainly test drivers with a wee bit of instruction. I'm running on a Dell Inspiron 1521, and the information I've managed to get on my graphics card is thus: Radeon X1270 IGP (based on X700) Codename: M690T I'm currently using Natit on Leopard 10.5.2. System Profiler has this to say about the graphics: ATI Radeon Xpress 1200 Series: Chipset Model: ATI Radeon Xpress 1200 Series Type: Display Bus: PCI VRAM (Total): 256 MB Vendor: ATI (0x1002) Device ID: 0x791f Revision ID: 0x0000 Displays: Display: Resolution: 1024 x 768 Depth: 32-bit Color Core Image: Software Main Display: Yes Mirror: Off Online: Yes Quartz Extreme: Not Supported Display Connector: If you need any additional information, just let me know. Link to comment Share on other sites More sharing options...
justin1986 Posted June 28, 2008 Share Posted June 28, 2008 2 justin1986make ioreg -l -x -w 2048 >ioreg.txt and look what drivers is loaded to what devices No AtiLead in there. RadeonPCI is though. I used device ids 0x59751002 and 0x59551002 in Atilead info.plist ioreg.txt Link to comment Share on other sites More sharing options...
asstastic Posted June 29, 2008 Share Posted June 29, 2008 I'm still looking into the linux source to find out how connector information is taken into account. At the mean time, please try this to see if your card is in the known card list. Where can I find the known card list? I know my card has native driver support(QE/CI using all vanilla kexts, just no res change). the new RadeonDump gives me this output: sh-3.2# /Users/gojira/Desktop/Radeon\ PCI/RadeonPCI_compiled/RadeonDump -i Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEGP@1/IOPCI2PCIBridge/VGA@0/RadeonPCI it matched on name "ATY,WormyParent" Card device id: 0x71c5 Start I2C dump EDID at position 0: Error reading EDID block Error reading EDID block Error reading EDID block Error reading EDID block Read EDID at position 0 failed EDID at position 1: Error reading EDID block Error reading EDID block Error reading EDID block Error reading EDID block Read EDID at position 1 failed sh-3.2# also most registers from 120-160 are empty: sh-3.2# /Users/gojira/Desktop/Radeon\ PCI/RadeonPCI_compiled/RadeonDump -r 120,160 Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEGP@1/IOPCI2PCIBridge/VGA@0/RadeonPCI it matched on name "ATY,WormyParent" 0x0120: 0x00000000 0x0124: 0x00000000 0x0128: 0x00000000 0x012C: 0x00000000 0x0130: 0x00800000 0x0134: 0x00000000 0x0138: 0x00000000 0x013C: 0x00000000 0x0140: 0x00000000 0x0144: 0x00000000 0x0148: 0x00000000 0x014C: 0x00000000 0x0150: 0x00000000 0x0154: 0x00000000 0x0158: 0x00000000 0x015C: 0x00000000 0x0160: 0x00000000 sh-3.2# Link to comment Share on other sites More sharing options...
asstastic Posted June 29, 2008 Share Posted June 29, 2008 Just to make sure the dump code is working right I plugged my projector into the vga port and ran RadeonDump: h-3.2# /Users/gojira/Desktop/Radeon\ PCI/RadeonPCI_compiled/RadeonDump -i Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEGP@1/IOPCI2PCIBridge/VGA@0/RadeonPCI it matched on name "ATY,WormyParent" Card device id: 0x71c5 Start I2C dump EDID at position 0: Error reading EDID block Error reading EDID block Error reading EDID block Error reading EDID block Read EDID at position 0 failed EDID at position 1: 0x0000: 00FFFFFFFFFFFF00066B520401010101 0x0010: 000A01022E0000000800000000000000 0x0020: 000000FFFF809040904F010101010101 0x0030: 01010101010164190040410026301888 0x0040: 3600000000000018000000FC00494E46 0x0050: 4F43555352503130780A000000FE000A 0x0060: 202020202020202020202020000000FE 0x0070: 000A20202020202020202020202000D5 sh-3.2# As you can see it is working fine. We just need to fix the code so that it runs through all possible displays connections. Should be easy to run a dump on every output (VGA, HDMI, S-Video and LVDS) and then check to see which ones have monitors attached by whether they dump an edid or not. Link to comment Share on other sites More sharing options...
dong Posted June 30, 2008 Share Posted June 30, 2008 No, ATINDRV is slave, IONDRVFramebuffer is master. IOReturn IONDRVFramebuffer::getDDCBlock( IOIndex /* connectIndex */, err = _doStatus( this, cscGetDDCBlock, &ddcRec); // call for ATINDRV If you rewrite this method ATINDRV will never be called for getEDID I've tested new IONDRVSupport.kext with Natit, nothing improved. I guess ATINDRV subclassed IONDRVFramebuffer and overwrited these member functions instead of only providing low level implementations in IOBootNDRV class. JAs you can see it is working fine. We just need to fix the code so that it runs through all possible displays connections. Should be easy to run a dump on every output (VGA, HDMI, S-Video and LVDS) and then check to see which ones have monitors attached by whether they dump an edid or not. The DDC line seems determined by corresponding MASK register value. All DDC lines are forced to be detected in this new code without consideration of card type. Please give it a try. RadeonDump.zip Link to comment Share on other sites More sharing options...
Slice Posted June 30, 2008 Author Share Posted June 30, 2008 I've tested new IONDRVSupport.kext with Natit, nothing improved. I guess ATINDRV subclassed IONDRVFramebuffer and overwrited these member functions instead of only providing low level implementations in IOBootNDRV class. Complex relations In constructor (; ATY_Wormy::ATY_Wormy(void)) I understand that when the class is created it create an instance of IONDRVFramebuffer but not override its members. ATINDRV is called by framebuffer err = ndrv->doDriverIO( commandID, contents, commandCode, commandKind ); ; ATY_Wormy::doDriverIO(unsigned long, void *, unsigned long, unsigned long) public __ZN9ATY_Wormy10doDriverIOEmPvmm push ebp mov ebp, esp push ebx sub esp, 84h mov dword ptr [ebp-14h], 0 mov dword ptr [ebp-54h], offset aKiondrvopencom ; "kIONDRVOpenCommand " mov dword ptr [ebp-50h], offset aKiondrvcloseco ; "kIONDRVCloseCommand " mov dword ptr [ebp-4Ch], offset aKiondrvreadcom ; "kIONDRVReadCommand " mov dword ptr [ebp-48h], offset aKiondrvwriteco ; "kIONDRVWriteCommand " mov dword ptr [ebp-44h], offset aKiondrvcontrol ; "kIONDRVControlCommand " mov dword ptr [ebp-40h], offset aKiondrvstatusc ; "kIONDRVStatusCommand " mov dword ptr [ebp-3Ch], offset aKiondrvkillioc ; "kIONDRVKillIOCommand " mov dword ptr [ebp-38h], offset aKiondrvinitial ; "kIONDRVInitializeCommand " mov dword ptr [ebp-34h], offset aKiondrvfinaliz ; "kIONDRVFinalizeCommand " mov dword ptr [ebp-30h], offset aKiondrvreplace ; "kIONDRVReplaceCommand " mov dword ptr [ebp-2Ch], offset aKiondrvsuperse ; "kIONDRVSupersededCommand " Looking into wormy sources you can find all methods used ; IONDRVFramebuffer::getConnectionCount(void) extrn __ZN17IONDRVFramebuffer18getConnectionCountEv It is external method so it is called from external driver IONDRVSupport. The DDC line seems determined by corresponding MASK register value. All DDC lines are forced to be detected in this new code without consideration of card type. Please give it a try. sergey:~/Desktop/RadeonDump sergey$ cc ./RadeonDump.c ./xf86i2c.c -o ./RadeonDump -framework IOKit -framework CoreFoundation -Wno-four-char-constants -Wall -g -arch i386 sergey:~/Desktop/RadeonDump sergey$ ./RadeonDump -i Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/AGP@1/AGPGart/ATIM@5/RadeonPCI it matched on name "display" Card device id: 0x5835 Start I2C dump EDID for VGA monitor: Read EDID failed or no VGA monitor connected EDID for DVI monitor: Read EDID failed or no DVI monitor connected EDID for DVI monitor: Read EDID failed or no DVI monitor connected EDID for CRT monitor: Read EDID failed or no CRT monitor connected EDID for LCD monitor: Read EDID failed or no LCD monitor connected sergey:~/Desktop/RadeonDump sergey$ As I previously said I don't trust Linux codes. i2c.put_clk_mask = RADEON_GPIO_EN_1; i2c.put_data_mask = RADEON_GPIO_EN_0; i2c.get_clk_mask = RADEON_GPIO_Y_1; i2c.get_data_mask = RADEON_GPIO_Y_0; These masks doesn't work for me. Windows driver has other masks (see my posts above) and doesn't work too. I don't know what is the problem. I did several attempts to change the masks in your codes but had no success yet. Very nice that two men are successful! I think for other it is easy to make if(!rinfo->mon1_EDIDvalid){ //Try to get EDID from BIOS if(!getEDIDfromBIOS(rinfo)){ IOLog("ATIFB: NO EDID DATA FOUND! Trying ATI,EDID\n"); if((data = OSDynamicCast(OSData, device->getProperty("ATI,EDID")))) { rinfo->mon1_EDIDvalid = true; rinfo->mon1_EDID = *(EDID *)data->getBytesNoCopy(); } } else IOLog("ATIFB: EDID found from BIOS\n"); } Link to comment Share on other sites More sharing options...
asstastic Posted June 30, 2008 Share Posted June 30, 2008 I've tested new IONDRVSupport.kext with Natit, nothing improved. I guess ATINDRV subclassed IONDRVFramebuffer and overwrited these member functions instead of only providing low level implementations in IOBootNDRV class. The DDC line seems determined by corresponding MASK register value. All DDC lines are forced to be detected in this new code without consideration of card type. Please give it a try. RadeonDump.zip No Luck with the new RadeonDump detecting the internal LCD. Looks like the problem is something else. Would a clipping from my IO Registry help in any way? gojiras-aspire-5670:~ gojira$ /Users/gojira/Desktop/Radeon\ PCI/RadeonPCI_compiled/RadeonDump -i Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEGP@1/IOPCI2PCIBridge/VGA@0/RadeonPCI it matched on name "ATY,WormyParent" Card device id: 0x71c5 Start I2C dump EDID at DDC 0: Read EDID at DDC 0 failed EDID at DDC 1: Read EDID at DDC 1 failed EDID at DDC 2: Read EDID at DDC 2 failed gojiras-aspire-5670:~ gojira$ Link to comment Share on other sites More sharing options...
dong Posted July 1, 2008 Share Posted July 1, 2008 As I previously said I don't trust Linux codes.These masks doesn't work for me. Windows driver has other masks (see my posts above) and doesn't work too. I don't know what is the problem. I did several attempts to change the masks in your codes but had no success yet. I know it's a little frustrating for you when testing all this, but would you give another try with this RadeonDump.zipThis time, register masks have a possiblity to be set by BIOS values for legacy BIOS cards. Frankly say, corresponding code (from radeon_atombios.c) for my ATOMBIOS card is not working and thus not included here. That also means: no new things for asstastic to test yet. Link to comment Share on other sites More sharing options...
Slice Posted July 1, 2008 Author Share Posted July 1, 2008 It is not a big problem to test. I am ready to try more and more sergey:~/Desktop/RadeonDumpD3 sergey$ ./RadeonDump -i Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/AGP@1/AGPGart/ATIM@5/RadeonPCI it matched on name "display" Detected ATI Radeon Mobility 9100 IGP (U3) 5835 (device id: 0x5835) Start I2C dump Legacy BIOS detected Bios Connector table: Port0: DDCType-0x60, DACType-2, TMDSType-1, ConnectorType-1 Port4: DDCType-0x0, DACType-0, TMDSType-0, ConnectorType-7 Port5: DDCType-0x0, DACType-2, TMDSType-0, ConnectorType-5 EDID for connector 0: Read data failed sergey:~/Desktop/RadeonDumpD3 sergey$ In registry explorer I have three connectors, see pict. So LCD is not first connector. Connector table is not true? My BIOS here 00000000: 55 AA 80 E9 56 04 00 00 85 1C 00 00 00 00 00 00 U...V........... 00000010: 00 00 00 00 00 00 00 00 6C 01 00 85 1C 00 49 42 ........l.....IB 00000020: 4D C7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 M............... 00000030: 20 37 36 31 32 39 35 35 32 30 00 00 00 00 00 00 761295520...... 00000040: 3F 3F 00 00 00 00 00 00 04 01 00 00 00 00 00 00 ??.............. 00000050: 32 30 30 35 2F 30 32 2F 30 31 20 31 32 3A 31 32 2005/02/01 12:12 00000060: 00 00 00 00 E9 50 10 00 E9 04 1C 00 00 00 00 00 .....P.......... 00000070: 4D DF 5B 00 4D 14 02 61 00 00 00 00 00 00 00 00 M.[.M..a........ 00000080: 0D 0A 53 50 2D 32 38 20 49 47 50 39 20 56 47 41 ..SP-28 IGP9 VGA 00000090: 20 42 49 4F 53 20 33 30 30 4D 68 7A 0D 0A 00 28 BIOS 300Mhz...( 000000A0: 43 29 20 31 39 38 38 2D 32 30 30 32 2C 20 41 54 C) 1988-2002, AT 000000B0: 49 20 54 65 63 68 6E 6F 6C 6F 67 69 65 73 20 49 I Technologies I 000000C0: 6E 63 2E 20 42 4B 2D 41 54 49 20 56 45 52 30 30 nc. BK-ATI VER00 000000D0: 38 2E 30 31 37 49 2E 30 36 30 2E 30 30 30 00 20 8.017I.060.000. 000000E0: 78 35 6F 73 63 61 72 2E 73 61 6D 20 76 36 31 31 x5oscar.sam v611 000000F0: 20 00 42 43 33 20 41 47 50 20 44 47 4E 31 55 4E .BC3 AGP DGN1UN 00000100: 00 00 68 00 08 A0 08 11 3C 00 68 00 85 1C 64 5E ..h.....<.h...d^ 00000110: 15 02 A1 01 DF 00 80 00 F2 00 28 01 00 C0 00 90 ..........(..... 00000120: 4D 14 02 61 35 58 00 00 00 00 00 00 00 00 8F 80 M..a5X.......... 00000130: C4 75 6F 0A B2 06 F6 D9 00 00 C1 03 00 00 24 54 .uo...........$T 00000140: 56 53 06 DA 1A ED D1 03 00 00 23 03 00 00 A0 88 VS........#..... 00000150: 00 00 AC 02 CB 03 8F 03 00 00 00 00 00 00 00 00 ................ 00000160: 00 00 E1 01 00 00 00 00 00 00 00 00 50 43 49 52 ............PCIR 00000170: 02 10 35 58 00 00 18 00 00 00 00 03 80 00 11 08 ..5X............ 00000180: 00 80 00 00 41 54 49 20 4D 4F 42 49 4C 49 54 59 ....ATI MOBILITY 00000190: 20 52 41 44 45 4F 4E 20 39 30 30 30 20 49 47 50 RADEON 9000 IGP 000001A0: 00 31 D8 D9 5E FF FF FF FF 54 4A 01 02 FF FF FF .1..^....TJ..... 000001B0: FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF ................ 000001C0: FF 31 D8 D9 5E FF FF FF FF 54 4A 00 00 FF FF FF .1..^....TJ..... 000001D0: FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF ................ 000001E0: FF 01 01 09 1E 03 20 03 EA 01 01 00 00 00 00 00 ...... ......... 000001F0: 00 08 40 00 FF FF FF 8D 00 00 00 0C 00 00 80 FF ..@............. 00000200: 1F 20 01 03 8D 00 00 00 80 F4 01 20 01 00 00 00 . ......... .... 00000210: 00 00 00 00 00 30 20 B0 A3 33 51 30 60 FF FF FF .....0 ..3Q0`... 00000220: FF 00 00 00 00 EC 00 43 44 00 00 3C 02 00 00 00 .......CD..<.... 00000230: 00 20 04 00 00 7F 80 50 20 00 00 00 04 50 60 FF . ....P ....P`. 00000240: FF FF FF 00 00 00 00 58 20 02 41 60 FF 58 60 FF .......X .A`.X`. 00000250: FF FF FF 00 00 00 00 54 01 FF FF FF 01 20 00 00 .......T..... .. 00000260: 00 00 00 24 00 00 00 00 00 00 4D FF FC FF 00 00 ...$......M..... 00000270: 03 00 5B 84 42 F7 BF FF FF 00 00 00 00 88 42 F7 ..[.B.........B. 00000280: FF FF FF 08 00 00 00 F8 43 7F FF FF FF 80 00 00 ........C...... 00000290: 00 7C 02 00 00 00 00 8C 02 00 00 00 80 90 02 00 .|.............. 000002A0: 00 00 80 30 01 00 00 00 70 00 00 00 F4 02 34 34 ...0....p.....44 000002B0: 00 00 10 40 FB FF FF FF 04 00 00 00 A8 02 1B 0A ...@............ 000002C0: 00 00 64 4D FF FB FF FF 22 02 00 00 D4 42 E1 FF ..dM...."....B.. 000002D0: FF FF 08 00 00 00 64 4D FF FF FF FF 00 00 00 10 ......dM........ 000002E0: 00 48 FF FF FF FF 00 00 00 40 10 4D FF FF FF EF .H.......@.M.... 000002F0: 00 00 00 10 DC 44 FF FE FF FF 00 01 00 00 34 60 .....D........4` 00000300: FF FF FF 73 00 00 00 84 34 60 FF FF FF FF 00 00 ...s....4`...... 00000310: 00 00 8C 48 00 F0 00 FF 03 02 29 00 00 00 00 00 ...H......)..... 00000320: 00 00 01 08 C0 00 00 00 2D 00 00 00 00 82 03 06 ........-....... 00000330: 00 00 00 0A 02 00 2A 00 24 02 00 00 00 0C 00 BC ......*.$....... 00000340: 00 04 02 03 A4 00 00 82 4C 00 FE 00 81 82 4C 00 ........L.....L. 00000350: FD 00 82 15 06 00 10 00 0D 02 00 01 00 82 48 00 ..............H. 00000360: 3C 00 42 00 FF 03 04 54 00 03 00 05 5F 00 03 00 <.B....T...._... 00000370: 06 54 00 03 00 07 5F 00 03 00 42 00 FD 00 81 82 .T...._...B..... 00000380: 42 00 FE 00 82 48 00 3C 03 82 41 00 CF 10 00 14 B....H.<..A..... 00000390: 00 14 00 00 41 01 FF 80 75 01 F8 00 75 00 F8 00 ....A...u...u... 000003A0: 75 00 CF 00 75 00 FF 18 75 02 FF 01 74 03 FF 08 u...u...u...t... 000003B0: 82 75 00 FF 09 2D C0 FC 1A 00 08 C3 00 00 00 82 .u...-.......... 000003C0: 00 24 41 54 49 02 0A 0F 33 00 00 11 11 00 23 00 .$ATI...3.....#. 000003D0: 00 06 19 00 00 00 00 00 00 02 00 00 00 00 00 00 ................ 000003E0: 00 00 00 00 F5 03 EA 03 00 00 01 0B 00 00 00 00 ................ 000003F0: 00 00 00 00 00 01 67 0A 60 00 00 00 00 00 00 00 ......g.`....... Link to comment Share on other sites More sharing options...
Slice Posted July 1, 2008 Author Share Posted July 1, 2008 I found Apple's X11server sources. They contains OpenGL and Framebuffer. Can it be useful for us? Link to comment Share on other sites More sharing options...
dong Posted July 1, 2008 Share Posted July 1, 2008 My BIOS here 00000300: FF FF FF 73 00 00 00 84 34 60 FF FF FF FF 00 00 ...s....4`...... 00000310: 00 00 8C 48 00 F0 00 FF 03 02 29 00 00 00 00 00 ...H......)..... 00000320: 00 00 01 08 C0 00 00 00 2D 00 00 00 00 82 03 06 ........-....... 00000330: 00 00 00 0A 02 00 2A 00 24 02 00 00 00 0C 00 BC ......*.$....... 00000340: 00 04 02 03 A4 00 00 82 4C 00 FE 00 81 82 4C 00 ........L.....L. 00000350: FD 00 82 15 06 00 10 00 0D 02 00 01 00 82 48 00 ..............H. 00000360: 3C 00 42 00 FF 03 04 54 00 03 00 05 5F 00 03 00 <.B....T...._... 00000370: 06 54 00 03 00 07 5F 00 03 00 42 00 FD 00 81 82 .T...._...B..... 00000380: 42 00 FE 00 82 48 00 3C 03 82 41 00 CF 10 00 14 B....H.<..A..... 00000390: 00 14 00 00 41 01 FF 80 75 01 F8 00 75 00 F8 00 ....A...u...u... 000003A0: 75 00 CF 00 75 00 FF 18 75 02 FF 01 74 03 FF 08 u...u...u...t... 000003B0: 82 75 00 FF 09 2D C0 FC 1A 00 08 C3 00 00 00 82 .u...-.......... 000003C0: 00 24 41 54 49 02 0A 0F 33 00 00 11 11 00 23 00 .$ATI...3.....#. 000003D0: 00 06 19 00 00 00 00 00 00 02 00 00 00 00 00 00 ................ 000003E0: 00 00 00 00 F5 03 EA 03 00 00 01 0B 00 00 00 00 ................ 000003F0: 00 00 00 00 00 01 67 0A 60 00 00 00 00 00 00 00 ......g.`....... It's not complete. Can you provide it as a file? Link to comment Share on other sites More sharing options...
Slice Posted July 2, 2008 Author Share Posted July 2, 2008 It's not complete. Can you provide it as a file? If you want. Also you can get a BIOS collection Other useful sources to work with Radeon BIOS - radedit http://sourceforge.net/project/showfiles.php?group_id=72921 Link to comment Share on other sites More sharing options...
InferiorYeast Posted July 2, 2008 Share Posted July 2, 2008 I have a radeon mobility x1600 and seem to get similar (though not identical) results to asstastic. With an external monitor connected through vga bash-3.2# ./radeondump -i Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/P0P2@1/IOPCI2PCIBridge/VGA@0/RadeonPCI it matched on name "ATY,WormyParent" Detected ATI Mobility Radeon X1600 (device id: 0x71c5) Start I2C dump ATOM BIOS detected EDID for connector 0: Read data failed EDID for connector 1: 0x0000: 00FFFFFFFFFFFF0010AC29A053594331 0x0010: 171201030E342078EAB325AC5130B426 0x0020: 105054A54B008180A940714F01010101 0x0030: 010101010101283C80A070B023403020 0x0040: 360007442100001A000000FF004A5534 0x0050: 3336383634314359530A000000FC0044 0x0060: 454C4C20323430385746500A000000FD 0x0070: 00384C1E5311000A2020202020200050 Thank you for all your hard work!! Link to comment Share on other sites More sharing options...
Slice Posted July 2, 2008 Author Share Posted July 2, 2008 Native Mac EDID collection. MacMini | | | "IOAGPFlags" = 0x1 | | | "CRT2,EDID" = <00ffffffffffff004dd9005c01010101280f0103080000780ad9ada35546982410474a2dc8006 4f010101010101010101010101010164190040410026301d8836000000000000180e1f008051001e 04080370000000000001c000000fd003a3e1e3208000a202020202020000000fc004b444c2d53333 413132550a2000cb> iMac 20 | | | | "LVDS,EDID" = <00ffffffffffff0006106a9c0101010100100103802b1b780acf74a2574a9c251150540000100 0101010101010101010101010101017c2e90a0601a1e4030203600b10e1100001c00000001000610 011080000000000000a20000000fe004c4d3230315745332d544c4631000000fc00436f6c6f72204 43440a202020002b> MacPro nVidia + LCD | | | | | "EDID" = <00ffffffffffff004c2d1c02303241481110010380291e782aee95a3544c99260f5054bfef809 408140714f818001010101010101018f2f78d0511a274058903400982c1100001d000000fd00384b e5110000a202020202020000000fc0053796e634d61737465720a2020000000ff004853484c34303 3733360a2020008b> MacBookPro | | | | "LVDS,EDID" = <00ffffffffffff000610609c0000000004100103802216780a1cf59758508e272750540000000 0101010101010101010101010101019f25a04051840c30402033004bcf1000001900000001000610 000000000000000000a20000000fe0042313534505730312056300a20000000fc00436f6c6f72204 43440a20202000bc> How to choose best for me? Link to comment Share on other sites More sharing options...
Slice Posted July 2, 2008 Author Share Posted July 2, 2008 I found some contradiction in registers descriptions #define RADEON_MDGPIO_A_REG 0x01ac #define RADEON_MDGPIO_EN_REG 0x01b0 #define RADEON_MDGPIO_MASK 0x0198 #define RADEON_MDGPIO_Y_REG 0x01b4 #define R128_AMCGPIO_A_REG 0x01a0 #define R128_AMCGPIO_EN_REG 0x01a8 #define R128_AMCGPIO_MASK 0x0194 #define R128_AMCGPIO_Y_REG 0x01a4 but you suppose #define RADEON_LCD_GPIO_MASK 0x01a0 #define RADEON_GPIOPAD_EN 0x01a0 #define RADEON_LCD_GPIO_Y_REG 0x01a4 #define RADEON_MDGPIO_A_REG 0x01ac #define RADEON_MDGPIO_EN_REG 0x01b0 #define RADEON_MDGPIO_MASK 0x0198 #define RADEON_GPIOPAD_MASK 0x0198 #define RADEON_GPIOPAD_A 0x019c #define RADEON_MDGPIO_Y_REG 0x01b4 My initial values 0x0180: 00000000 00400000 00000000 00000000 00050000 00002202 00000000 00000000 0x01A0: 00000000 000007DB 00000000 00000000 00000000 0B00FFFF 00000000 00000002 0x01C0: 00FF0000 00000105 00000000 00000000 00000001 00000004 09E0A000 00300000 so (194)=2202 really looks like mask! (1A4)=7DB looks like input register Link to comment Share on other sites More sharing options...
dong Posted July 2, 2008 Share Posted July 2, 2008 I found some contradiction in registers descriptions #define RADEON_MDGPIO_A_REG 0x01ac #define RADEON_MDGPIO_EN_REG 0x01b0 #define RADEON_MDGPIO_MASK 0x0198 #define RADEON_MDGPIO_Y_REG 0x01b4 #define R128_AMCGPIO_A_REG 0x01a0 #define R128_AMCGPIO_EN_REG 0x01a8 #define R128_AMCGPIO_MASK 0x0194 #define R128_AMCGPIO_Y_REG 0x01a4 so (194)=2202 really looks like mask! (1A4)=7DB looks like input register Still not work with your registers? I have checked your BIOS rom, the corresponding entry for LVDS connector (port 4) only contains value of 0, that makes it not possible to initialize the i2c structure. I've test the legacy bios code on my Dell, it works. I wonder what kind of card you have, is it a multimedia card? Link to comment Share on other sites More sharing options...
Slice Posted July 2, 2008 Author Share Posted July 2, 2008 Still not work with your registers?I have checked your BIOS rom, the corresponding entry for LVDS connector (4) only contains value of 0, that makes it not possible to initialize i2c structure. I've test the legace bios code on my Dell, it works. I wonder what kind of card you have, is it a multimedia card? Not work. But I don't change mask yet. You want to say that LCD laptop screen has no DDC? My card is a part of chipset. But in Linux codes there are checks for IGP and for mobility. But several mistakes as in getConnectorsFromBIOS so in I2C for my card. Link to comment Share on other sites More sharing options...
dong Posted July 2, 2008 Share Posted July 2, 2008 You want to say that LCD laptop screen has no DDC?From your BIOS, it looks like so. Only the CRT connector (port 0) has DDC initialized. You can even test the code by connecting to an external monitor.If your card is a multimedia card, you may test this code:RadeonDump.c.zip To asstastic and llauqsd, please test this RadeonDump.zipIf it's not working, please use "RadeonDump -d" to dump a BIOS rom and upload it here. Link to comment Share on other sites More sharing options...
InferiorYeast Posted July 2, 2008 Share Posted July 2, 2008 I may be making an obvious mistake, but I am unable to compile the above file. I get: i686-apple-darwin9-gcc-4.0.1: ./RadeonDump: No such file or directory and if I put an old radeondump into the directory i get: ld: warning in ./RadeonDump, file is not of required architecture Undefined symbols: "_RADEONGetATOMConnectorInfoFromBIOSObject", referenced from: _RADEONGetATOMConnectorInfoFromBIOS in ccdEiofu.o "_rhdAtomInit", referenced from: _RADEONGetBIOSInfo in ccdEiofu.o "_RADEONGetATOMConnectorInfoFromBIOSConnectorTable", referenced from: _RADEONGetATOMConnectorInfoFromBIOS in ccdEiofu.o ld: symbol(s) not found collect2: ld returned 1 exit status Link to comment Share on other sites More sharing options...
dong Posted July 2, 2008 Share Posted July 2, 2008 I get: i686-apple-darwin9-gcc-4.0.1: ./RadeonDump: No such file or directory Sorry that I made a mistake in typing. The compiling instruction should be:cc ./RadeonDump.c ./xf86i2c.c ./radeon_atombios.c -o ./RadeonDump -framework IOKit -framework CoreFoundation -Wno-four-char-constants -Wall -g -arch i386 Link to comment Share on other sites More sharing options...
Recommended Posts