Re: [Linux-fbdev-devel] Re: [Dri-devel] Rage128 and Radeon patches
From: Steven Newbury <hidden>
Date: 2003-08-14 18:32:55
On Thu, 2003-08-14 at 19:06, Alex Deucher wrote:
I haven't tried multiple radeon cards, but I seem to recall several people having this problem right around when 4.3.0 was released. I don't think a "proper" fix ever went in and I think the issue was to be revisited later. I don't know if it's needed anymore or not.
It is still needed, Radeon as a secondary display only works on the first initialisation (it can not find ROM on subsequent attempts) in all XFree86 versions I have tried up to and including current CVS. At least on my hardware... :-/
quoted hunk ↗ jump to hunk
Alex--- Jon Smirl <jonsmirl@yahoo.com> wrote:quoted
--- Alex Deucher <agd5f@yahoo.com> wrote:quoted
quoted
2) access ROM directly instead of relying on copy in low RAM. This allows multiple cards. Required MPP_TB_CONFIG fix in driver.Is this patch necessary for xfree86? It may address some of the issues in the email threads I sent out yesterday (ie, problems with multiple radeon cards and xfree86). if so would you consider making one?Xfree code does not have the patch, but is Xfree experiencing the bug? Xfree accesses the hardware very differently than the framebuffer drivers. I suspect that you would see this problem if you were using something else for your primary video and a Radeon for secondary. The first time you ran Xfree it would work. But when you exited and restarted Xfree it would hang when starting the secondary display. Where does XFree reset the secondary card? The code below needs to run right after the reset in the radeon driver. I added it to my Rage128 driver too but I have not observed the problem with them. Framebuffer code is different and triggers the bug the first time the secondary display is accessed. /* Fix from ATI for problem with Radeon hardware not leaving ROM enabled */ unsigned int temp; temp = INREG(RADEON_MPP_TB_CONFIG); temp &= 0x00ffffffu; temp |= 0x04 << 24; OUTREG(RADEON_MPP_TB_CONFIG, temp); temp = INREG(RADEON_MPP_TB_CONFIG);