Projects » Amiga OS 4 Projects » RadeonHD Driver » RadeonHD Development Log » Successful Radeon HD 2400 Pro Mode Setting Test

Successful Radeon HD 2400 Pro Mode Setting Test

nullA generous donor has provided me with a Diamond Radeon HD 2400 pro PCI card. I am pleased to announce that, with a small amount of coding, the Radeon HD driver can now initialize this card, and open a screen. This card uses the RV610 chipset and is one generation newer than the Radeon x1300 that was originally used as test card. Now that two cards from different generations have successfully been initialized using the code, it should be fairly easy to add support for more. In fact, many R5xx and R6xx cards should work without any changes to the code.

There are, however, a few issues. The ASIC initialization code within this card's AtomBIOS enters an infinite loop. The BIOS code clears a bit in register 0x600, and then continually tests if that bit is set. Bypassing the ASIC initialization allowed initialization and mode-setting to occur. It appears that the BIOS (i.e., UBOOT) performs the necessary ASIC initialization, making that step redundant. However, I would prefer to have the ASIC initialization step in there, just in case. It might be possible for the AtomBIOS parser to detect an infinite loop and abort the operation. This problem does raise the question as to what the windows driver does. Does it rely on the system BIOS in order to perform basic initialization? Is UBOOT initializing the card differently from the BIOS in standard PCs, resulting in the infinite-loop? It is unlikely that I will ever be able to answer these questions. Regardless, the card is usable. The debug log for initializing this card is given below.

RadeonHD Test Code Debug Log - Radeon HD 2400 Pro

Found the specified card. Now opening the RadeonHD driver.



RadeonHD (2): PCI device is a graphics card.
RadeonHD (2): RadeonHD chipset identified as: RV610
RadeonHD (2): Obtaining memory and I/O addresses and sizes
RadeonHD (2): Video RAM at: 0x90000000, size is 268435456 bytes
RadeonHD (2): Graphics card I/O range at: 0x0xA0000000, size is 65536 bytes
RadeonHD (2): Unknown card detected: 0x94CC:0x2232:0x1787.
RadeonHD (2):     If - and only if - your card does not work or does not work optimally
    please contact Hans de Ruiter at <no_spam> to help rectify this.
    Use the subject: 0x94CC:0x2232:0x1787: <name of board>
    and *please* describe the problems you are seeing
    in your message.
RadeonHD (2): Unidentified card. Will rely on the AtomBIOS for correct operation.
RadeonHD (3): Rom Address:0x90000000 ROM Physical Address: 0x90000000
RadeonHD (3): The ROM is 131072 bytes in size.
RadeonHD (3): The BIOS image is 61440 bytes in size.
RadeonHD (2): ATOM BIOS Rom:
RadeonHD (3):     SubsystemVendorID: 0x2232 SubsystemID: 0x1787
RadeonHD (3):     IOBaseAddress: 0x   0
RadeonHD (3):     Filename: 72123EEA.HEA
RadeonHD (3):     BIOS Bootup Message:   HD2400 GDDR2_32MX16 64BIT 256MB 72123EEA.HEA                  
            
RadeonHD (2): Default Engine Clock: 525000
RadeonHD (2): Default Memory Clock: 400000
RadeonHD (2): Calling ASIC Init
RadeonHD (2): The detected amount of video RAM is 268435456
RadeonHD (2): Framebuffer space used by Firmware (kb): 0
RadeonHD (2): rhdAtomGetFbBaseAndSize: AtomBIOS specified VRAM scratch space size invalid
RadeonHD (2): AtomBIOS scratch space size not specified; default to: 20480
RadeonHD (1): Cannot get VRAM scratch space. Allocating in main memory instead
RadeonHD (2): Call to AtomBIOS Set FB Space succeeded
RadeonHD (2): Analog TV Default Mode: 1789081496
RadeonHD (2): Default Engine Clock: 525000
RadeonHD (2): Default Memory Clock: 400000
RadeonHD (2): Maximum Pixel ClockPLL Frequency Output: 1200000
RadeonHD (2): Minimum Pixel ClockPLL Frequency Output: 0
RadeonHD (2): Maximum Pixel ClockPLL Frequency Input: 13500
RadeonHD (2): Minimum Pixel ClockPLL Frequency Input: 1000
RadeonHD (2): Maximum Pixel Clock: 400000
RadeonHD (2): Reference Clock: 27000
RadeonHD (2): Detected vga mode.
RadeonHD (4): MC FB Address: 0x90000000.
RadeonHD (2): Minimum Pixel ClockPLL Frequency Output: 0
RadeonHD (2): Maximum Pixel ClockPLL Frequency Output: 1200000
RadeonHD (2): Maximum Pixel Clock: 400000
RadeonHD (2): Reference Clock: 27000
RadeonHD (2): rhdAtomSetPixelClockVersion returned version 2 for index 0xC
RadeonHD (2): rhdAtomSetPixelClockVersion returned version 2 for index 0xC
RadeonHD (2): ObjectTable - size: 251, BIOS - size: 61440 TableOffset: 80 object_header_end: 331
RadeonHD (0): Object: ID: 310F name: 7PIN_DIN type: 3 id: F
RadeonHD (2):  * SrcObject: ID: 2116 name: INTERNAL_KLDSCP_DAC2 enum: 1
RadeonHD (2):  - Record Type: 4
RadeonHD (2):    NumberOfDevice: 2
RadeonHD (2):    Devices: TV1 CV
RadeonHD (2):  - Record Type: 7
RadeonHD (0): Object: ID: 3105 name: VGA type: 3 id: 5
RadeonHD (2):  * SrcObject: ID: 2116 name: INTERNAL_KLDSCP_DAC2 enum: 1
RadeonHD (2):  - Record Type: 1
RadeonHD (2):    rhdAtomDDCFromI2CRecord:  I2C Record: HW_Line[1] EngineID: 1 I2CAddr: 0
RadeonHD (2):  - Record Type: 4
RadeonHD (2):    NumberOfDevice: 2
RadeonHD (2):    Devices: CRT2 CV
RadeonHD (0): Object: ID: 3102 name: DUAL_LINK_DVI_I type: 3 id: 2
RadeonHD (2):  * SrcObject: ID: 210F name: INTERNAL_LVTM1 enum: 1
RadeonHD (2):  * SrcObject: ID: 2115 name: INTERNAL_KLDSCP_DAC1 enum: 1
RadeonHD (2):  - Record Type: 1
RadeonHD (2):    rhdAtomDDCFromI2CRecord:  I2C Record: HW_Line[0] EngineID: 1 I2CAddr: 0
RadeonHD (2):  - Record Type: 2
RadeonHD (2):    rhdAtomHPDFromRecord:  HPD Record: GPIO ID: 6 Plugged_PinState: 0
RadeonHD (2):    rhdAtomParseGPIOLutForHPD: GPIO PinID: 6 Index: 1FA5 Shift: 0
RadeonHD (2):  - Record Type: 4
RadeonHD (2):    NumberOfDevice: 2
RadeonHD (2):    Devices: CRT1 DFP1
RadeonHD (2): Connector[0] {RHD_CONNECTOR_TV, "7PIN_DIN TV1 CV", RHD_DDC_0, RHD_HPD_NONE, { RHD_OUTPUT_DACB, RHD_OUTPUT_NONE } }
RadeonHD (2): Connector[1] {RHD_CONNECTOR_VGA, "VGA CRT2 CV", RHD_DDC_1, RHD_HPD_NONE, { RHD_OUTPUT_DACB, RHD_OUTPUT_NONE } }
RadeonHD (2): Connector[2] {RHD_CONNECTOR_DVI, "DUAL_LINK_DVI_I CRT1 DFP1", RHD_DDC_0, RHD_HPD_0, { RHD_OUTPUT_LVTMA, RHD_OUTPUT_DACA } }
RadeonHD (4): connector info from object header
RadeonHD (2): Call to AtomBIOS Get Connectors succeeded
RadeonHD (2): rhdConnectorsInit: 0 (7PIN_DIN TV1 CV) type 5, ddc 0, hpd 0
RadeonHD (0): rhdConnectorsInit: obtaining the DDC bus is not implemented yet
RadeonHD (2): rhdAtomSelectCrtcSourceVersion returned version 1 for index 0x2A
RadeonHD (2): Attaching output AtomOutputDACB to connector TV 7PIN_DIN
RadeonHD (2): Call to Output Privates succeeded
RadeonHD (2): rhdConnectorsInit: 1 (VGA CRT2 CV) type 1, ddc 1, hpd 0
RadeonHD (0): rhdConnectorsInit: obtaining the DDC bus is not implemented yet
RadeonHD (2): Attaching output AtomOutputDACB to connector VGA 1
RadeonHD (2): Call to Output Privates succeeded
RadeonHD (2): rhdConnectorsInit: 2 (DUAL_LINK_DVI_I CRT1 DFP1) type 2, ddc 0, hpd 1
RadeonHD (0): rhdConnectorsInit: obtaining the DDC bus is not implemented yet
RadeonHD (2): rhdAtomEncoderControlVersion(TMDSAEncoderControl) returned version 3 for index 0x1E
RadeonHD (2): rhdAtomSelectCrtcSourceVersion returned version 1 for index 0x2A
RadeonHD (2): Attaching output AtomOutputLVTMA to connector DVI-I 1
RadeonHD (2): rhdAtomSelectCrtcSourceVersion returned version 1 for index 0x2A
RadeonHD (2): Attaching output AtomOutputDACA to connector DVI-I 1
RadeonHD (2): Call to Output Privates succeeded
RadeonHD (4): Sensing DACB on Output AtomOutputDACB
RadeonHD (2): Calling DAC_LoadDetection
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): DAC_LoadDetection Successful
RadeonHD (4): BIOSScratch_0: 0x200
RadeonHD (4): rhdAtomBIOSScratchDACSenseResults: RHD_SENSED_NONE
RadeonHD (4): Sensing DACB on Output AtomOutputDACB
RadeonHD (2): Calling DAC_LoadDetection
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): DAC_LoadDetection Successful
RadeonHD (4): BIOSScratch_0: 0x200
RadeonHD (4): rhdAtomBIOSScratchDACSenseResults sensed RHD_SENSED_VGA
RadeonHD (2): AtomOutputDACB: Sensed Output: VGA
RadeonHD (1): Connector "VGA 1": Failed to retrieve Monitor information.
RadeonHD (0): RadeonHD card successfully opened

Setting a screen-mode

RadeonHD (2): Calling BlankCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): BlankCRTC Successful
RadeonHD (2): Calling BlankCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): BlankCRTC Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (4): RHD_POWER_RESET
RadeonHD (2): Calling DAC2OutputControl
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): DAC2OutputControl Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (2): Calling EnableCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTC Successful
RadeonHD (2): Calling EnableCRTCMemReq
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTCMemReq Successful
RadeonHD (2): Calling EnableCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTC Successful
RadeonHD (2): Calling EnableCRTCMemReq
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTCMemReq Successful
RadeonHD (4): r6xxSetupMC: fb_location: 0x009F0090 fb_offset: 0x00900000 [fb_size: 0x000F] -> fb_location: 0x009F0090 fb_offset: 0x00900000
RadeonHD (2): Setting up "" (1280x1024@59.9Hz)
RadeonHD (4): FUNCTION: DxFBSet: ATOM CRTC 1 (1280[1280]x1024@24bpp)  +0x0 )
RadeonHD (2): Calling SetCRTC_Timing
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): SetCRTC_Timing Successful
RadeonHD (2): FUNCTION: rhdAtomScaleSet: ATOM CRTC 1 viewport: 1280x1024
RadeonHD (2): CallingSetCRTC_OverScan
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): Set CRTC_OverScan Successful
RadeonHD (2): Calling EnableScaler
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableScaler Successful
RadeonHD (4): rhdPLLSet: Setting PLL 1 to 109000kHz
RadeonHD (4): PLL Calculation: 109000kHz = (((27000 / 0x9) * 0xDA) / 0x6) (0kHz off)
RadeonHD (4): rhdAtomPLLSet: 109000 kHz RefDiv: 9 FeedbackDiv: DA PostDiv: 6
RadeonHD (4): rhdAtomSetPixelClock Device: 5 PixelClock: 10900 RefDiv: 0x9 FbDiv: 0xDA PostDiv: 0x6 PLL: 0 Crtc: 0 MiscInfo: 0x41
RadeonHD (2): Calling SetPixelClock
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): SetPixelClock Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (2): Calling DACBEncoderControl
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): DACBEncoderControl Successful
RadeonHD (2): Calling SelectCRTCSource
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): SelectCRTCSource Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (2): Shutting down AtomOutputLVTMA
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (4): RHD_POWER_SHUTDOWN
RadeonHD (2): Calling LVTMAOutputControl
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): LVTMAOutputControl Successful
RadeonHD (2): Calling LVTMAEncoderControl
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): LVTMAEncoderControl Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (2): Shutting down AtomOutputDACA
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (4): RHD_POWER_SHUTDOWN
RadeonHD (2): Calling DAC1OutputControl
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): DAC1OutputControl Successful
RadeonHD (2): Calling DACAEncoderControl
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): DACAEncoderControl Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (2): Calling EnableCRTCMemReq
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTCMemReq Successful
RadeonHD (2): Calling EnableCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTC Successful
RadeonHD (4): rhdAtomSetPixelClock Device: 5 PixelClock: 10900 RefDiv: 0x9 FbDiv: 0xDA PostDiv: 0x6 PLL: 0 Crtc: 0 MiscInfo: 0x41
RadeonHD (2): Calling SetPixelClock
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): SetPixelClock Successful
RadeonHD (2): Calling EnableCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTC Successful
RadeonHD (2): Calling EnableCRTCMemReq
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): EnableCRTCMemReq Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (4): RHD_POWER_ON
RadeonHD (2): Calling DAC2OutputControl
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): DAC2OutputControl Successful
RadeonHD (2): Call to Register List Location succeeded
RadeonHD (2): Calling BlankCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): BlankCRTC Successful
RadeonHD (2): Calling BlankCRTC
RadeonHD (2): ParseTable said: CD_SUCCESS
RadeonHD (2): Call to AtomBIOS Exec succeeded
RadeonHD (2): BlankCRTC Successful



Screen mode set. Press c to draw something to the screen.




Image copied to screen. Press c to continue
.

RadeonHD (2): Destroying AtomOutputDACB
RadeonHD (2): Destroying AtomOutputLVTMA
RadeonHD (2): Destroying AtomOutputDACA
RadeonHD (0): RadeonHD card closed



Projects » Amiga OS 4 Projects » RadeonHD Driver » RadeonHD Development Log » Successful Radeon HD 2400 Pro Mode Setting Test

Post your comment

Comments

  • Hi

    Posted by Johnebyne, 26/06/2013 3:57pm (4 years ago)

  • Hello. And Bye.

    Posted by stushence, 01/11/2012 9:24am (5 years ago)

  • +1

    Posted by sicespearlora, 13/08/2011 6:09am (6 years ago)

  • Cheer help me to frame kitty

    Posted by Malevafegax, 31/03/2011 4:43pm (7 years ago)

  • I found this site using <a href=http://google.com>google.com</a> And i want to thank you for your work. You have done really very good site. Great work, great site! Thank you!

    Sorry for offtopic

    Posted by vieceilia, 07/11/2009 8:24pm (8 years ago)

RSS feed for comments on this page | RSS feed for all comments


Projects » Amiga OS 4 Projects » RadeonHD Driver » RadeonHD Development Log » Successful Radeon HD 2400 Pro Mode Setting Test