Subject: X ATI driver not quite right
To: NetBSD port-sparc64 mailing list <port-sparc64@netbsd.org>
From: Julian Coleman <jdc@coris.org.uk>
List: port-sparc64
Date: 07/27/2006 14:03:31
I tried to run X on a Blade 100.  The ATI driver doesn't get things quite
right - the actual horizontal and vertical rates are roughly 206% [*] of
the printed rates.  I guess the problem is caused because the kernel machfb
driver says:

  machfb0 at pci0 dev 19 function 0: ATI Technologies Rage XL (rev. 0x27)
  machfb0: 16 MB aperture at 0x03000000, 4 KB registers at 0x00426000
  machfb0: ref_freq=29.498MHz
  machfb0: 8188 KB SDRAM 114.765 MHz, maximum RAMDAC clock 230 MHz
  mach64_get_mode: 1280 5440 5552 1688 1024 1025 1060 1066
  machfb0: initial resolution 1280x1024 at 8 bpp
  machfb0: attached to /dev/fb0

while the X server says:

  (II) ATI(0): BIOS Data:  BIOSSize=0x0000, ROMTable=0x0000.
  (II) ATI(0): BIOS Data:  ClockTable=0x0000, FrequencyTable=0x0000.
  (II) ATI(0): BIOS Data:  LCDTable=0x0000, LCDPanelInfo=0x0000.
  (II) ATI(0): BIOS Data:  VideoTable=0x0000, HardwareTable=0x0000.
  (II) ATI(0): BIOS Data:  I2CType=0x00, Tuner=0x00, Decoder=0x00, Audio=0x0F.
    ...
  (--) ATI(0): Reference clock 157.5/11 (14.318) MHz.

The 157.5/11 appears to be the default when it is unable to read the
ClockTable from the BIOS Data (I guess that this is correct for the cards
in the U5 and U10).  There also looks to be a "reference_clock" option
but it doesn't appear to be used.

So, what is the best way of fixing this?  I think either the X ATI driver
could be fixed to correctly read the values on sparc64 or it could query
the mach64 kernel driver for them.

This happens both with XFree86 (source date 2006-06-26) and Xorg (Michael's
2006-04-01 binaries).

J

[*] The ratio varies between 205.3% and 206.2% depending on the chosen
    resolution.  Not suprisingly, 29.498/14.318 is 206%.

-- 
  My other computer also runs NetBSD    /        Sailing at Newbiggin
        http://www.netbsd.org/        /   http://www.newbigginsailingclub.org/