Rage driver and old Mach64 card

Search this archive.

From: Matt Roberds (mroberds@worldnet.att.net)
Date: Fri 16 Jul 1999 - 12:51:07 IDT


Hello all!

I am getting closer to getting svgalib working on my old Mach64
card.  I downloaded release 1.4.0 and compiled it.  Some of
the utilities/demos are seeing my Mach64, as evidenced by the
wide range of video modes they offer on startup (640x480x64k,
for example).  But when it actually tries to go into the video
mode, I get a floating point exception and core dump.

I have tracked it down to the function 'comp_lmn' in rage.c .
It has a local variable 'm' which is set from the global
variable 'M'.  Unfortunately, when entering the function,
M=0, so m=0, and then an attempt to divide by m is made. Boom.

M is set in the function 'rage_init' by a call to
ATIGetMach64PLLReg.  This is a macro that calls a function
that reads the PLL registers.

I spliced in a bit of code in 'comp_lmn' that was borrowed from
the XFree86 source.  It is an alternate way to look at the
PLL registers.  When I run it, I get 0x00 as the value of all
16 PLL registers.  I assume, if ATIGetMach64PLLReg is doing
an equivalent thing, this is why M gets set to zero and causes
the other problems.

Are my PLL registers someplace else that the code doesn't
currently know about?  I have a Mach 64 GX from early 1995;
an earlier part of the 'rage.c' code detects it as a ATI 88800
GX-D.  The base I/O address for CLOCK_CNTL that 'rage.c' works
out is the same as the one called out in the old mach64 driver
(which is broken, and may not be a reliable source of information.
:) )

If anyone has any suggestions or comments they would be very
much appreciated.  I feel like I'm very close to making this
work - I'm just not looking for the registers in the right place,
or something.  Thanks very much for your help!!

Matt Roberds
mroberds@worldnet.att.net


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:22 IST