Jump to content

ATI Framebuffer development


Slice
 Share

466 posts in this topic

Recommended Posts

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 "display"
Detected ATI Mobility Radeon X1600 (device id: 0x71c5)
Start I2C dump
ATOM BIOS detected
ATOM BIOS Rom: 
SubsystemVendorID: 0x1043 SubsystemID: 0x10b2
IOBaseAddress: 0xb000
Filename: w3j0905.bin 
BIOS Bootup Message: 
ASUS-W3J-M56P 256M ATOMBIOS 450m/450e ASID: A05804.005$					 

Skipping TV-Out
Bios Connector table: 
Port0: DDCType-0x7e40, DACType-1, TMDSType-0, ConnectorType-1, hpd_mask-0x0
Port1: DDCType-0x7e50, DACType-7, TMDSType-0, ConnectorType-0, hpd_mask-0x0
EDID for connector 0:
0x0000: 00FFFFFFFFFFFF0010AC29A053594331
0x0010: 171201030E342078EAB325AC5130B426
0x0020: 105054A54B008180A940714F01010101
0x0030: 010101010101283C80A070B023403020
0x0040: 360007442100001A000000FF004A5534
0x0050: 3336383634314359530A000000FC0044
0x0060: 454C4C20323430385746500A000000FD
0x0070: 00384C1E5311000A2020202020200050
EDID for connector 1:
Read data failed

 

 

here's the bios rom in case you need it:

71C5.1043.10B2.vga.rom.zip

Link to comment
Share on other sites

EDID for connector 0:
0x0000: 00FFFFFFFFFFFF0010AC29A053594331
0x0010: 171201030E342078EAB325AC5130B426
0x0020: 105054A54B008180A940714F01010101
0x0030: 010101010101283C80A070B023403020
0x0040: 360007442100001A000000FF004A5534
0x0050: 3336383634314359530A000000FC0044
0x0060: 454C4C20323430385746500A000000FD
0x0070: 00384C1E5311000A2020202020200050
EDID for connector 1:
Read data failed

Still not working for your panel LCD, :). I will check your BIOS rom. Thanks for testing and uploading.

 

Edited:

The ATOMBIOS rom contains the same register values compared to the manually used ones for I2C. That explains the same results observed. At this point, I can only say x1600 mobility and Slice's 9100 mobility are special cards need more information to figure out the I2C mechanism behind them.

 

By the way, have llauqsd and asstastic tried the code in post#114? That code is using hardware I2C, don't know if it will make any difference. Before compiling it, you need put a RadeonPCIShared.h in its place.

Link to comment
Share on other sites

By the way, have llauqsd and asstastic tried the code in post#114? That code is using hardware I2C, don't know if it will make any difference. Before compiling it, you need put a RadeonPCIShared.h in its place.

 

sh-3.2# ./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"
 Detected ATI Mobility Radeon X1600 (device id: 0x71c5)
 Start I2C dump
 ATOM BIOS detected
 ATOM BIOS Rom: 
  SubsystemVendorID: 0x1025 SubsystemID: 0x0094
  IOBaseAddress: 0x2000
  Filename: BR20829.BIN 
  BIOS Bootup Message: 
 Quanta/Acer ZB1-M56-P 128M Channel A 440e/375m							  

 Skipping TV-Out
 Bios Connector table: 
 Port1: DDCType-0x7e50, DACType-7, TMDSType-0, ConnectorType-0, hpd_mask-0x0
 Port3: DDCType-0x7e60, DACType-2, TMDSType-1, ConnectorType-0, hpd_mask-0x1
 EDID for connector 0:
 Read data failed
 EDID for connector 1:
 Read data failed
 EDID for connector 3:
 Read data failed
 sh-3.2#

This code gives a lot more output info than the last one but still no LVDS :) . I thought about hacking the card bios to enable I2C for all the outputs but I think we should find a solution that will work for everyone. I wonder how the radeon drivers in Windows manage to coax the EDID out of these cards.

 

Here's the card BIOS:71C5.1025.0094.vga.rom.zip

Edit: Messed up attachment. fixed now

Link to comment
Share on other sites

Using the code from post 114:

 

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 "display"
Start I2C dump
EDID at bus 0:
0x0000: 00FFFFFFFFFFFF0010AC29A053594331
0x0010: 171201030E342078EAB325AC5130B426
0x0020: 105054A54B008180A940714F01010101
0x0030: 010101010101283C80A070B023403020
0x0040: 360007442100001A000000FF004A5534
0x0050: 3336383634314359530A000000FC0044
0x0060: 454C4C20323430385746500A000000FD
0x0070: 00384C1E5311000A2020202020200050
Read EDID at bus 1 failed
Read EDID at bus 2 failed

Link to comment
Share on other sites

Hey guys. I found a kext file on post 46 page 4, used kext helper to install it, and restarted. I get a black screen (with the regular b/w text when booting with -v, I haven't tried booting normally). It just sits there. Now I can type stuff on the keyboard and here the proper sounds through my speakers but nothing is on my screen, except the text.

 

Now the weird things is that a little while after its at the text, my resolution on my monitor changes to where nothing will show up, 'frequency out of range'. I usually have my TV connected via an s-video cable. I turned it on and noticed it was still sitting at the text.

 

Here is an image of what it shows: http://img248.imagevenue.com/img.php?image...8_122_515lo.JPG

 

Now I have no idea what you guys are doing in the previous post, all I know is that I saw a kext file and I installed it. This could be my only hope on getting QE/CI working on my card, as EFI strings and lastexile's installers won't work. Hopefully something will work really soon!

Link to comment
Share on other sites

Hi developers,

 

I'm also very interested in this project, I'm very annoyed by the Xpress 200M Chipset and the QE/CI problem.

 

I'm using Leopard 10.5.4 (Zephy using ASU) with a ATI Radeon Xpress 1100, and Callisto 003 has given me resolution and refresh rate changes.

 

I'm not a developer but let me know if you need me to test anything relating to the above card.

 

I cannot get RadeonDump to work. I have tried different versions and also tried compiling from source.

 

Heres some info on my setup:

 

system:

 

Hardware Overview:

 Model Name:    Mac
 Model Identifier:    Ferrrari 1000
 Processor Name:    AMD Turion™ 64 X2 Mobile Technology TL-6
 Processor Speed:    2 GHz
 Total Number Of Cores:    2
 L2 Cache (per processor):    512 KB
 CPU Features:    FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH MMX FXSR SSE SSE2 HTT SSE3 CX16
 Memory:    2 GB
 Bus Speed:    533 MHz
 Boot ROM Version:    Hack.88Z.int.0sh.061193037 (Acer)

 

graphics:

Radeon XPRESS 200M (PCIE):

 Chipset Model:    Radeon XPRESS 200M (PCIE)
 Type:    Display
 Bus:    PCI
 VRAM (Total):    48 MB
 Vendor:    ATI (0x1002)
 Device ID:    0x5975
 Revision ID:    0x0000
 Displays:
Color LCD:
 Resolution:    1280 x 800 @ 60 Hz
 Depth:    32-bit Color
 Core Image:    Software
 Main Display:    Yes
 Mirror:    Off
 Online:    Yes
 Quartz Extreme:    Not Supported

 

dmesg:

CallistoHAL Initialized!
Callisto: omni's ATI Driver&FrameBuffer, build 003 (fixed), 27-May-2006
Callisto: Model Radeon XPRESS 200M (PCIE) (rv410)
Callisto: MMIO range@0x18 (cfef0000) mapped to kernel virtual address 0x2f982000
Callisto: 48 MB DDR SGRAM found on 64 bit wide bus
Callisto: VRAM range@0x10 (b0000000:03000000)
Callisto: Found ROM @0xc0000
Callisto: Legacy ATI BIOS detected
Callisto: Retreived PLL infos from BIOS
Callisto: Reference=14.32 MHz (RefDiv=6) Memory=400.00 Mhz, System=200.00 MHz
Callisto: PLL min 20000 max 40000
Callisto: Non-DDC laptop panel detected
Callisto: Found Monitor: LCD
Callisto: panel ID string: AUO                     
Callisto: detected LVDS panel size from BIOS: 1280x800
Callisto: BIOS provided dividers will be used
Callisto: Default panel mode: 1280x800, pixel clock: 68900 KHz
Callisto: done with Radeon XPRESS 200M (PCIE)

 

lspci:

01:05.0 VGA compatible controller [0300]: ATI Technologies Inc RS485 [Radeon Xpress 1100 IGP] [1002:5975] (prog-if 00 [VGA controller])
   Subsystem: Acer Incorporated [ALI] Unknown device [1025:010e]
   Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
   Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
   Latency: 66 (2000ns min), Cache Line Size: 32 bytes
   Interrupt: pin A routed to IRQ 17
   Region 0: Memory at b0000000 (32-bit, prefetchable)
   Region 1: I/O ports at 9000
   Region 2: Memory at cfef0000 (32-bit, non-prefetchable)
   Capabilities: [50] Power Management version 2
       Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
       Status: D0 PME-Enable- DSel=0 DScale=0 PME-

 

ioreg:

See attachment

 

uname -a:

Darwin ferrari 9.0.0 Darwin Kernel Version 9.0.0: Tue Oct 9 21:35:55 PDT 2007; root:xnu-1228~1/RELEASE_I386 i386

 

RadeonDump

# kextload -t RadeonPCI.kext/
kextload: extension RadeonPCI.kext/ appears to be loadable
/System/Library/Extensions/System.kext/PlugIns/IOKit.kext/IOKit: Undefined in symbol set: __ZN14IOPMrootDomain24systemPowerEventOccurredEPK8OSSymbolP8OSObject
/System/Library/Extensions/System.kext/PlugIns/IOKit.kext/IOKit: Undefined in symbol set: __ZN14IOPMrootDomain24systemPowerEventOccurredEPK8OSSymbolj
kextload: RadeonPCI.kext/ loaded successfully

kextstat:
 102    0 0x2fecf000 0x3000     0x2000     com.dong.driver.RadeonPCI (1.0.0d1) <6 5 4>

 

 

I get no output at all when running RadeonDump,for example:

# RadeonDump -i

# RadeonDump -d

# RadeonDump -r 100,200

 

Nothing at all!

See dtruss attachement for exec trace.

 

How do I fix it? I tried both your pre-compiled version and compiling myself in xcode 3, no errors it seems.

Let me know if there is anything else I can do to help.

 

Regards

/GS

ioreg.rtf

dtruss.rtf

Link to comment
Share on other sites

Callisto: Non-DDC laptop panel detected
Did this mean DDC communication is not possible?
I cannot get RadeonDump to work. I have tried different versions and also tried compiling from source.
I have no idea why it won't work here.
Link to comment
Share on other sites

Did this mean DDC communication is not possible?

I have no idea why it won't work here.

 

I will paste some info about this chipset from Linux, maybe you have use for it. Im sure you already know, but I noticed AMD releasing GPU specs:

AMD Releases 900+ Pages Of GPU Specs

 

(II) LoadModule: "fglrx"
(II) Loading /usr/lib64/xorg/modules/drivers/fglrx_drv.so
(II) Module fglrx: vendor="FireGL - ATI Technologies Inc."
(II) fglrx(0): pEnt->device->identifier=0x9cc990
(II) fglrx(0): === [atiddxPreInit] === begin
(II) fglrx(0): PCI bus 1 card 5 func 0
(**) fglrx(0): Depth 24, (--) framebuffer bpp 32
(II) fglrx(0): Pixel depth = 24 bits stored in 4 bytes (32 bpp pixmaps)
(==) fglrx(0): Default visual is TrueColor
(**) fglrx(0): Option "DPMS"
(II) fglrx(0): Loading PCS database from /etc/ati/amdpcsdb
(==) fglrx(0): RGB weight 888
(II) fglrx(0): Using 8 bits per RGB (8 bit DAC)
(**) fglrx(0): Gamma Correction for I is 0x06419064
(==) fglrx(0): Gamma Correction for II is 0x06419064
(==) fglrx(0): Buffer Tiling is ON
(--) fglrx(0): Chipset: "ATI Radeon Xpress Series" (Chipset = 0x5975)
(--) fglrx(0): (PciSubVendor = 0x1025, PciSubDevice = 0x010e)
(--) fglrx(0): board vendor info: third party graphics adapter - NOT original ATI
(--) fglrx(0): Linear framebuffer (phys) at 0xb0000000
(--) fglrx(0): MMIO registers at 0xcfef0000
(==) fglrx(0): ROM-BIOS at 0x000c0000
(II) fglrx(0): Primary V_BIOS segment is: 0xc000
(II) fglrx(0): VESA BIOS detected
(II) fglrx(0): VESA VBE Version 2.0
(II) fglrx(0): VESA VBE Total Mem: 16384 kB
(II) fglrx(0): VESA VBE OEM: ATI Radeon® Xpress 1150
(II) fglrx(0): VESA VBE OEM Software Rev: 1.0
(II) fglrx(0): VESA VBE OEM Vendor: ATI Technologies Inc.
(II) fglrx(0): VESA VBE OEM Product: MS48
(II) fglrx(0): VESA VBE OEM Product Rev: 01.00
(II) Loading sub module "fglrxdrm"
(II) LoadModule: "fglrxdrm"
(II) Loading /usr/lib64/xorg/modules/linux/libfglrxdrm.so
(II) Module fglrxdrm: vendor="FireGL - ATI Technologies Inc."
(II) fglrx(0): Using adapter: 1:5.0.
(II) fglrx(0): [FB] Find the MC FB aperturs range(MCFBBase = 0x70000000, MCFBSize = 0x10000000)
(--) fglrx(0): VideoRAM: 131072 kByte, Type: DDR SGRAM / SDRAM
(II) fglrx(0): PCIE card detected
(WW) fglrx(0): board is an unknown third party board, chipset is supported
(II) fglrx(0): Connected Display1: LCD on internal LVDS [lvds]
(II) fglrx(0): Display1 EDID data ---------------------------
(II) fglrx(0): Manufacturer: AUO  Model: 3214  Serial#: 0
(II) fglrx(0): Year: 2006  Week: 1
(II) fglrx(0): EDID Version: 1.3
(II) fglrx(0): Digital Display Input
(II) fglrx(0): Max H-Image Size [cm]: horiz.: 26  vert.: 16
(II) fglrx(0): Gamma: 2.20
(II) fglrx(0): No DPMS capabilities specified; RGB/Color Display
(II) fglrx(0): First detailed timing is preferred mode
(II) fglrx(0): redX: 0.580 redY: 0.340   greenX: 0.310 greenY: 0.550
(II) fglrx(0): blueX: 0.155 blueY: 0.155   whiteX: 0.315 whiteY: 0.330
(II) fglrx(0): Manufacturer's mask: 0
(II) fglrx(0): Supported additional Video Mode:
(II) fglrx(0): clock: 68.9 MHz   Image Size:  261 x 163 mm
(II) fglrx(0): h_active: 1280  h_sync: 1301  h_sync_end 1333 h_blank_end 1408 h_border: 0
(II) fglrx(0): v_active: 800  v_sync: 804  v_sync_end 808 v_blanking: 816 v_border: 0
(II) fglrx(0):  AUO
(II) fglrx(0):  B121EW03 V2
(II) fglrx(0): EDID (in hex):
(II) fglrx(0):  00ffffffffffff0006af143200000000
(II) fglrx(0):  01100103801a10780a87fe94574f8c27
(II) fglrx(0):  27505400000001010101010101010101
(II) fglrx(0):  010101010101ea1a0080502010301520
(II) fglrx(0):  440005a3100000180000000f00000000
(II) fglrx(0):  00000000000000000020000000fe0041
(II) fglrx(0):  554f0a202020202020202020000000fe
(II) fglrx(0):  004231323145573033205632200a001f
(II) fglrx(0): End of Display1 EDID data --------------------
(WW) fglrx(0): Only one display is connnected,so single mode is enabled
(II) fglrx(0): Primary Controller - LCD on internal LVDS
(II) fglrx(0): Internal Desktop Setting: 0x00000001
(II) fglrx(0): POWERplay version 3.  2 power states available:
(II) fglrx(0):   1. 401/401MHz @ 60Hz [enable load balancing]
(II) fglrx(0):   2. 100/133MHz @ 60Hz []
(==) fglrx(0): Qbs is not supported in this release. Disabled.
(==) fglrx(0): FAST_SWAP disabled
(==) fglrx(0):  PseudoColor visuals disabled
(**) fglrx(0): Center Mode is disabled
(==) fglrx(0): TMDS coherent mode is enabled
(II) fglrx(0): Total of 13 modes found for primary display.
(--) fglrx(0): Virtual size is 1280x800 (pitch 0)
(--) fglrx(0): Display dimensions: (260, 160) mm
(--) fglrx(0): DPI set to (125, 127)
(--) fglrx(0): Virtual size is 1280x800 (pitch 1280)
(==) fglrx(0): NoAccel = NO
(==) fglrx(0): NoDRI = NO
(II) Loading sub module "fglrxdrm"
(II) LoadModule: "fglrxdrm"
(II) Reloading /usr/lib64/xorg/modules/linux/libfglrxdrm.so
(==) fglrx(0): Capabilities: 0x00000000
(==) fglrx(0): CapabilitiesEx: 0x00000000
(==) fglrx(0): cpuFlags: 0x4000001f
(==) fglrx(0): OpenGL ClientDriverName: "fglrx_dri.so"
(**) fglrx(0): ATI GART size: 255 MB
(II) fglrx(0): [pcie] 261120 kB allocated
(II) fglrx(0): [drm] DRM buffer queue setup: nbufs = 100 bufsize = 65536
(==) fglrx(0): UseFastTLS=0
(==) fglrx(0): BlockSignalsOnLock=1
(II) fglrx(0): driver needs X.org 7.1.x.y with x.y >= 0.0
(II) fglrx(0): detected X.org 7.1.1.0
(II) fglrx(0): doing DRIScreenInit
(II) fglrx(0): [drm] DRM interface version 1.0
(II) fglrx(0): [drm] created "fglrx" driver at busid "PCI:1:5:0"
(II) fglrx(0): [drm] added 8192 byte SAREA at 0x17e4000
(II) fglrx(0): [drm] mapped SAREA 0x17e4000 to 0x2aaaad3ca000
(II) fglrx(0): [drm] framebuffer handle = 0x17e5000
(II) fglrx(0): [drm] added 1 reserved context for kernel
(II) fglrx(0): DRIScreenInit done
(II) fglrx(0): Kernel Module Version Information:
(II) fglrx(0):     Name: fglrx
(II) fglrx(0):     Version: 8.50.3
(II) fglrx(0):     Date: Jun  2 2008
(II) fglrx(0):     Desc: ATI FireGL DRM kernel module
(II) fglrx(0): Kernel Module version matches driver.
(II) fglrx(0): Kernel Module Build Time Information:
(II) fglrx(0):     Build-Kernel UTS_RELEASE:        2.6.22.2-42.fc6
(II) fglrx(0):     Build-Kernel MODVERSIONS:        yes
(II) fglrx(0):     Build-Kernel __SMP__:            yes
(II) fglrx(0):     Build-Kernel PAGE_SIZE:          0x1000
(II) fglrx(0): [drm] register handle = 0x017e6000
(II) fglrx(0): Interrupt handler installed at IRQ 17.
(II) fglrx(0): Exposed events to the /proc interface
(II) fglrx(0): DRI initialization successfull!
(II) fglrx(0): FBADPhys: 0x70000000 FBMappedSize: 0x005f0000
(II) fglrx(0): FBMM initialized for area (0,0)-(1280,1216)
(II) fglrx(0): FBMM auto alloc for area (0,0)-(1280,800) (front color buffer - assumption)
(II) fglrx(0): Largest offscreen area available: 1280 x 416
(==) fglrx(0): Backing store disabled
(**) fglrx(0): DPMS enabled
(II) fglrx(0): Using XFree86 Acceleration Architecture (XAA)
(II) fglrx(0): Acceleration enabled
(II) fglrx(0): X context handle = 0x1
(II) fglrx(0): [DRI] installation complete
(II) fglrx(0): Direct rendering enabled
(==) fglrx(0): Silken mouse enabled
(==) fglrx(0): Using hardware cursor
(II) AIGLX: Loaded and initialized /usr/lib64/dri/fglrx_dri.so

 

Compile radeontool & avivotool, latest src at:

http://gitweb.freedesktop.org/?p=users/air...;f=radeon_reg.h

see radeon_reg.h

 

scanpci:
pci bus 0x0001 cardnum 0x05 function 0x00: vendor 0x1002 device 0x5975
ATI Technologies Inc RS482 [Radeon Xpress 200M]

# lspci -n | grep 5975
01:05.0 0300: 1002:5975

# echo 1 > /sys/bus/pci/devices/0000\:01\:05.0/rom 
# cat /sys/bus/pci/devices/0000\:01\:05.0/rom > myrom
# file myrom
myrom: BIOS (ia32) ROM Ext. IBM comp. Video (128*512)
# cp myrom /media/bios/BK-ATI-VER008-050l.036.003

# ./avivotool --debug romtables myrom
Found card 1002:5975 (30000)
 (unknown card)
Radeon found. Base control address is 2aaaaaaad000; base framebuffer address is 2aaaaacdb000.

BIOS Tables:
------------

Header at 118, type: 8 []
OEM ID: 08 32
Legacy BIOS detected !
BIOS Rev: 24.3

Clock info block:
 SCLK   : 200.000000
 MCLK   : 400.000000
 RefClk : 14.320000
 RefDiv : 6
 VCO Min: 200.000000
 VCO Max: 400.000000

Connector table:
 Table revision 3 for 1 chip(s)
 Table for chip 1 has 2 connector(s):
   00002400  Type: VGA, DDC: CRT2, DAC: CRT, TMDS: Internal
   00001100  Type: Proprietary, DDC: MONID, DAC: CRT, TMDS: Internal
   00008845  Type: , DDC: , DAC: TV, TMDS: Internal

DFP table revision: 2

 

I dont really know how to use radeontool, let me know if you need anything:

./radeontool
usage: radeontool [options] [command]
        --debug            - show a little debug info
        --skip=1           - use the second radeon card
        dac [on|off]       - power down the external video outputs (on)
        light [on|off]     - power down the backlight (on)
        stretch [on|off|vert|horiz|auto|manual]   - stretching for resolution mismatch
        regs               - show a listing of some random registers
        regmatch  - show registers matching wildcard pattern
        regset   - set registers matching wildcard pattern
# ./radeontool regs
\RADEON_DAC_CNTL        00000102
RADEON_DAC_EXT_CNTL     00000000
RADEON_DAC_MACRO_CNTL   00000808
RADEON_DAC_CNTL2        00000002
RADEON_TV_DAC_CNTL      07770242
RADEON_DISP_OUTPUT_CNTL 10010008
RADEON_CONFIG_MEMSIZE   03f00000
RADEON_AUX_SC_CNTL      00000000
RADEON_CRTC_EXT_CNTL    11000000
RADEON_CRTC_GEN_CNTL    03208600
RADEON_CRTC2_GEN_CNTL   04800010
RADEON_DEVICE_ID        00075975
RADEON_DISP_MISC_CNTL   5b300600
RADEON_GPIO_MONID       00000300
RADEON_GPIO_MONIDB      00000000
RADEON_GPIO_CRT2_DDC    00000000
RADEON_GPIO_DVI_DDC     00000100
RADEON_GPIO_VGA_DDC     00000300
RADEON_LVDS_GEN_CNTL    003cffa1
RADEON_FP_GEN_CNTL      01640200
RADEON_FP2_GEN_CNTL     0100020a
RADEON_PIXCLKS_CNTL     0b6ffec0
RADEON_MEM_TIMING_CNTL  00000000

 

EVEREST hw info:

  ATI GPU Registers:  
   ati-00E0   00030100  
   ati-00F8   03F00000  
   ati-0140   00000000  
   ati-0144   00000000  
   ati-0148   7FFF7000  
   ati-0154   0F004400  
   ati-0158   50000000  
   ati-0178   20040100  
   ati-01C0   00FF0000  
   ati-4018   00010011  
   ati-CLKIND-00   00000000  
   ati-CLKIND-04   00020073  
   ati-CLKIND-0A   001C0002  
   ati-CLKIND-0B   80007FFF  
   ati-CLKIND-0C   0400A400  
   ati-CLKIND-0D   000A7FFB  
   ati-CLKIND-0E   000E0008  
   ati-CLKIND-0F   01E2EE2A  
   ati-CLKIND-12   00000000  

 B00 D00 F00:    ATI Radeon Xpress 200M/1100M/1150M (RS482M/RS485M) Chipset - Host Bridge       
 Offset 00:    02 10 50 59 06 00 20 22 10 00 00 06 00 40 00 00       
 Offset 10:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00       
 Offset 20:    00 00 00 00 00 00 00 00 00 00 00 00 25 10 0E 01       
 Offset 30:    00 00 00 00 C4 00 00 00 00 00 00 00 00 00 00 00       
 Offset 40:    00 00 00 00 00 00 00 00 00 00 00 00 42 20 05 00       
 Offset 50:    25 10 0E 01 00 00 00 00 00 00 00 00 00 00 00 00       
 Offset 60:    4F 00 00 00 00 00 00 00 00 00 00 00 2C 00 73 06       
 Offset 70:    E0 08 00 00 00 00 00 00 20 4E 00 00 00 00 00 10       
 Offset 80:    10 0F 00 02 94 14 00 03 20 00 00 00 12 21 00 10       
 Offset 90:    00 00 00 70 45 CD 45 EE 00 00 00 00 00 00 00 00       
 Offset A0:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00       
 Offset B0:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00       
 Offset C0:    00 00 00 00 08 00 80 01 60 20 11 11 D0 00 00 00       
 Offset D0:    25 05 65 00 02 00 00 00 00 00 00 00 00 00 00 00       
 Offset E0:    00 00 00 00 00 00 00 00 7E 00 00 00 04 00 00 00       
 Offset F0:    00 00 00 00 00 80 80 00 00 00 00 00 00 00 48 01 

 B01 D05 F00:   ATI Radeon Xpress 200M/1100M/1150M (RS482M/RS485M) Chipset - Video Adapter    
Offset 00:   02 10 75 59 07 00 B0 02 00 00 00 03 08 FF 00 00    
Offset 10:   08 00 00 C0 01 90 00 00 00 00 10 B0 00 00 00 00    
Offset 20:   00 00 00 00 00 00 00 00 00 00 00 00 25 10 0E 01    
Offset 30:   00 00 00 00 50 00 00 00 00 00 00 00 11 01 08 00    
Offset 40:   00 00 00 00 00 00 00 00 00 00 00 00 25 10 0E 01    
Offset 50:   01 00 02 06 00 00 00 00 02 50 20 00 30 02 00 4F    
Offset 60:   00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset 70:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset 80:   05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset 90:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset A0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset B0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset C0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset D0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset E0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
Offset F0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

 

RaBiT www.techpowerup.com:

-- RaBiT v.2.1.0 build 645 --

Read file: 65536 bytes, ROM len: 65536 bytes
-- Analyzing ROM BIOS --
> HEADER offs: 0x118
> PCIR struct offs: 0x18C
> CRC table offs: 0x1C0
> CLOCK table offs: 0x8A2
Core clock is 400.00 MHz
Memory clock is 200.00 MHz
Reference clock is 14.32 MHz
> Memory config: 0xAA55
> TV table offs: 0xCA77
Active TV type: 'NTSC'
> Hardware table: at 0x4C0, Rev.2
hw_a: 0x330F, hw_b: 0x0000
> DFP table offs: 0x4D4
DFP table Ver.2, 6 preset(s)
> Connectors Layout table offs: 0x4CA
Conn0 type = VGA, DDC = CRT2, DAC = Unknown
Conn1 type = Proprietary, DDC = MONID, DAC = Unknown
Conn2 type = Unsupported, DDC = None, DAC = Primary
> VESA BIOS Extension 2.00, Rev. 1.00:
Vendor: ATI Technologies Inc.
Product: MS48, Rev. 01.00
OEM: ATI Radeon® Xpress 1150    
> ASIC config:
0x75 = 0x00, 0x74 = 0x00
0x7C = 0x00, 0x7B = 0x00, 0x7A = 0x00
This BIOS has hidden (by RaBiT) data
-- ROM BIOS info --
Desc: RS485/M Ferra6 VBIOS BR#21663
Info: MS48PCIEDGD1UN,  uyferra.ace v611 , 2006/08/23 17:35
! Chipset family: Unknown
> PLL script at 0x038C
> PLL2 script at 0x0421
> INIT script at 0x0222
> MEMORY script at 0x02BF
-- Found hardware registers values: --
> PLL(0A): 0x001CA802 at 0x03AC
> PLL(0D): 0xFFFFFFF9 at 0x03D1
-- User changes followed --

I appreciate your hard work. Let me know if I can do anything to help.

 

/GS

post-251638-1215144309_thumb.gif

BK_ATI_VER008_050I.036.003.zip

Link to comment
Share on other sites

2 dong

New attempt

sergey:/Volumes/ALL/Developer/Projects/ATI/RadeonPCI sergey$ ./RadeonMMDump -i
Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/AGP@1/AGPGart/ATIM@5/RadeonPCI
it matched on name "display"
Start I2C dump
Test with reference freq: 2700
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Read EDID failed
Test with reference freq: 1432
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Read EDID failed
Test with reference freq: 2950
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Timeout condition on Radeon i2c bus
Read EDID failed

My best result (with my codes)

 doI2CRequest 1
0x0000: 00000000000000000001000000000020
0x0010: 00000000000000000000000000000000
0x0020: 00000001000000000000000000000000
0x0030: 00000000000000000000080000000000
0x0040: 00000000000000020000000000000000
0x0050: 00000000000000000000000000000000
0x0060: 00000000000000000000000000000000
0x0070: 00000000000000000000000000000000

Still trying to find best registers and masks. Never give up :blink:

 

2 gstone.

Huge amount of informations. Hope it will be useful!

Link to comment
Share on other sites

May be later I return to EDID/DDC problem but now I want to return to The Driver problem.

I propose new template to create the driver.

RadNDRV is a replacement of ATINDRV.

Its methods doStatus and doControl is empty now, We need to fill its by real radeon procedures.

It loaded by this version of ATILead. But... no loaded because I didn't make something needed. What? Probe or Init or Start?

 

EDITED:

RadNDRV is wrong idea! Forget it!

Link to comment
Share on other sites

Thank you all for all your hard work.

I tested your files on my IBM T43 with ATI Radeon X300, 64 MB + 64MB Shared

Loaded RadeonPCI.kext

 

With Dong's RadeonDump I got following:

 

sh-3.2# ./RadeonDump -i
Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/AGP@1/IOPCI2PCIBridge/VID@0/RadeonPCI
it matched on name "display"
Detected ATI Radeon Mobility X300 (M22) 5460 (PCIE) (device id: 0x5460)
Start I2C dump
Legacy BIOS detected
Bios Connector table: 
Port0: DDCType-0x60, DACType-1, TMDSType-1, ConnectorType-1
Port1: DDCType-0x64, DACType-1, TMDSType-1, ConnectorType-3
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
EDID for connector 1:
Read data failed

 

If I connect LCD display on the VGA port:

 

sh-3.2# ./RadeonDump -i
Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/AGP@1/IOPCI2PCIBridge/VID@0/RadeonPCI
it matched on name "display"
Detected ATI Radeon Mobility X300 (M22) 5460 (PCIE) (device id: 0x5460)
Start I2C dump
Legacy BIOS detected
Bios Connector table: 
Port0: DDCType-0x60, DACType-1, TMDSType-1, ConnectorType-1
Port1: DDCType-0x64, DACType-1, TMDSType-1, ConnectorType-3
Port4: DDCType-0x0, DACType-0, TMDSType-0, ConnectorType-7
Port5: DDCType-0x0, DACType-2, TMDSType-0, ConnectorType-5
EDID for connector 0:
0x0000: 00FFFFFFFFFFFF001E6D4D56E4F20000
0x0010: 051101036A312078EAAEC5A2574A9C25
0x0020: 125054A76B80950F950081808140714F
0x0030: 0101010101017C2E90A0601A1E403020
0x0040: 3600DA281100001A21399030621A2740
0x0050: 68B03600DA281100001C000000FD0038
0x0060: 4B1C530F000A202020202020000000FC
0x0070: 004C3232365754510A2020202020001C
EDID for connector 1:
Read data failed

 

So it gives me the EDID only for the external display

 

I send you the video rom dump and another file obtained with RadeonDump -r 100,200

5460.1014.0570.vga.rom.zip

RadeonDump_r100_200.rtf

Link to comment
Share on other sites

2 dong

Users can't get EDID for internal LCD with any methods. May be it simply busy? I shall try again in single user mode.

 

My project RadNDRV is wrong. OSObject can't be separate kext. ATY_Wormy is a subclass of IONDRVFramebuffer. So I return to very old project openati.sf.net.

It is the subclass. Very simple project. Again, I need to rewrite only doStatus and doControl.

 

I still don't understand how to attach three nubs to my three connectors CRT1, LCD and TVO. And why my internal LCD seems to connected to CRT1 port?

Display_Base_Address for CRT1 = @0x023c

for CRT2 = @0x033c by default the same address.

so second Framebuffer must to rewrite 33c to the new value if I want to have second monitor with own desktop.

Framebuffer.base_addr = INREG(connectors_info[index].out_reg); or vice versa ?

And what is

#define RADEON_OV0_BASE_ADDR 0x043c

Is it address for TVOut?

 

And register 0x00f8.

Default value from BIOS = VRAM_SIZE / 4 - 1Mb.

Why? I have three connectors - three framebuffers with own addresses. And 1Mb for each RingBuffer. It is better to divide by 3 but more simple by 4. Simple calculation!

But I have 128Mb VRAM. f8=31Mb and I can't have QE! 64Mb is a minimum value!

So if I want to have QE I must make other memory assingment!

 

Interesting document about using Radeon with non-DDC monitors.

Link to comment
Share on other sites

2 dong

Users can't get EDID for internal LCD with any methods. May be it simply busy? I shall try again in single user mode.

Interesting document about using Radeon with non-DDC monitors.

Hope I can do something here with non-DDC monitors, then EDID problem will be solved.

My project RadNDRV is wrong. OSObject can't be separate kext. ATY_Wormy is a subclass of IONDRVFramebuffer. So I return to very old project openati.sf.net.

It is the subclass. Very simple project. Again, I need to rewrite only doStatus and doControl.

Now you see, ATI native driver can overwrite any methods of IONDRVFramebuffer through doStatus and doControl. Therefore, using modified IONDRVSupport.kext with ATY kext is not enough.
Link to comment
Share on other sites

Hope I can do something here with non-DDC monitors, then EDID problem will be solved.

I am going to use injected EDID

Now you see, ATI native driver can overwrite any methods of IONDRVFramebuffer through doStatus and doControl. Therefore, using modified IONDRVSupport.kext with ATY kext is not enough.

I understand your fault ;)

So we would write a whole Framebuffer. But I hate previous project as Joblo do because it replace IONDRVSupport at all. I want to make separate kext working together with default IONDRVSupport.

 

EDITED

What about to subclass ATY_Wormy B)

Link to comment
Share on other sites

I want to make separate kext working together with default IONDRVSupport.
That's what I've been trying to do.
What about to subclass ATY_Wormy :blink:
Can you create the ATY_Wormy.h by reverse engineering? For my card, it's actually ATY_Carreta.h.
Link to comment
Share on other sites

(II) fglrx(0): Connected Display1: LCD on internal LVDS [lvds]

(II) fglrx(0): Display1 EDID data ---------------------------

(II) fglrx(0): Manufacturer: AUO Model: 3214 Serial#: 0

(II) fglrx(0): Year: 2006 Week: 1

(II) fglrx(0): EDID Version: 1.3

(II) fglrx(0): Digital Display Input

(II) fglrx(0): Max H-Image Size [cm]: horiz.: 26 vert.: 16

(II) fglrx(0): Gamma: 2.20

(II) fglrx(0): No DPMS capabilities specified; RGB/Color Display

(II) fglrx(0): First detailed timing is preferred mode

(II) fglrx(0): redX: 0.580 redY: 0.340 greenX: 0.310 greenY: 0.550

(II) fglrx(0): blueX: 0.155 blueY: 0.155 whiteX: 0.315 whiteY: 0.330

(II) fglrx(0): Manufacturer's mask: 0

(II) fglrx(0): Supported additional Video Mode:

(II) fglrx(0): clock: 68.9 MHz Image Size: 261 x 163 mm

(II) fglrx(0): h_active: 1280 h_sync: 1301 h_sync_end 1333 h_blank_end 1408 h_border: 0

(II) fglrx(0): v_active: 800 v_sync: 804 v_sync_end 808 v_blanking: 816 v_border: 0

(II) fglrx(0): AUO

(II) fglrx(0): B121EW03 V2

(II) fglrx(0): EDID (in hex):

(II) fglrx(0): 00ffffffffffff0006af143200000000

(II) fglrx(0): 01100103801a10780a87fe94574f8c27

(II) fglrx(0): 27505400000001010101010101010101

(II) fglrx(0): 010101010101ea1a0080502010301520

(II) fglrx(0): 440005a3100000180000000f00000000

(II) fglrx(0): 00000000000000000020000000fe0041

(II) fglrx(0): 554f0a202020202020202020000000fe

(II) fglrx(0): 004231323145573033205632200a001f

(II) fglrx(0): End of Display1 EDID data --------------------

I just looked at your BIOS rom and find that the EDID data is located in it (offset: 0x75DB). So your LVDS really has no DDC/I2C access. My code is for sure not working for this LVDS. Some code need be added to handle such case.
Link to comment
Share on other sites

That's what I've been trying to do.

Can you create the ATY_Wormy.h by reverse engineering? For my card, it's actually ATY_Carreta.h.

Here is Caretta.codes. Open and search ATY_Caretta::. It is members that new class override. I found only probe, start, doDriverIO.

You can create class definition

class ATY_Caretta : public IONDRVFramebuffer

and write only those methods that you want to override.

Then you create your class

class MY_Caretta : public ATY_Caretta

and write implementations.... :D

 

I just looked at your BIOS rom and find that the EDID data is located in it (offset: 0x75DB). So your LVDS really has no DDC/I2C access. My code is for sure not working for this LVDS. Some code need be added to handle such case.

I saw no EDID in my BIOS. :unsure:

000075D0: 00 06 64 00 80 06 96 00 06 64 00 80 04 96 00 05 	..d......d......
000075E0: 64 00 80 03 96 00 04 80 00 80 09 DC 00 06 80 00 	d...............
000075F0: 80 07 DC 00 05 80 00 80 05 DC 00 04 80 00 80 03 	................

Link to comment
Share on other sites

Dong

 

Did you see /IOGraphics/tools/itvview?

It get TV information from I2C :) !!!

May be you try the codes with your working I2C bus?

Link to comment
Share on other sites

Yes, I can test it on my Dell machine which has tv out. But, what kind of information is expected?

Oh, I forgot that my TV is broken. Nothing can be retrieved I guess.

Link to comment
Share on other sites

Yes, I can test it on my Dell machine which has tv out. But, what kind of information is expected?

Oh, I forgot that my TV is broken. Nothing can be retrieved I guess.

I don't know what is expected. Later I'll try by some RadeonDump variant despite nonDDC LCD.

 

I prepare new project but KP at METACLASSRESERVEDUSED. What it is?

This kext made as ATINDRV. Loaded if NameMatch. It contains Radeon codes all in one class ATIDriver. Without calling the class it works.

 

Yes, the most radeon codes is for R200-R400 but not for R500,600. But these codes is not used now except maybe initialization.

Link to comment
Share on other sites

I saw you have ATIDriver class methods implemented in RadeonFB.cpp instead of in ATIDriver.cpp. Can you avoid that? It may cause problem though I'm still not very clear of correct way to implement class in IOKit.

Link to comment
Share on other sites

Class methods may be described in different files. Only need to include "class.h".

I am not sure that it is a best way. But I think that when I want to have two monitors each of them having own framebuffer it would be better to have two instances of all variables and methods to work with its.

Probably I understand my mistake. The class ATIDriver is called before create it while I copy codes from working drivers. Some hidden relations that I didn't understand yet.

Link to comment
Share on other sites

Waiting for your good news. :P

itvview.c contains i2c subaddress, don't know how to handle it yet. But, I happenly found that IONDRVSupport has no problem with output to TV in mirror mode, though display preference has no information of multilple displays. IORegistry contains: display@0 and display@0,1

If use Callisto patch, it will cause a KP if TV is connected.

Link to comment
Share on other sites

 Share

×
×
  • Create New...