NAME¶
svgalib.chips - Information for Chips and Technologies Users
TABLE OF CONTENTS¶
Information for Chips and Technologies Users
David Bateman <dbateman@eng.uts.edu.au>
23nd May 1997
0. Introduction
1. "libvga.config" options
2. Unsupported Chips and Technologies chipsets
3. Known bugs
0. INTRODUCTION¶
This is the really only my first attempt to get a working fully featured driver
for the Chips and Technologies chipset to work with
svgalib(7). As such
the only machine that I know it will work on is my own. If you use this
software then at this point I'm still very interested in hearing from you by
e-mail. Include full details of your chipset, amount of videoram and whether
you have a VL-Bus or PCI bus machine.
This server was written using the
svgalib(7) patch from Sergio and Angelo
Masci as a starting point. This version of the code resembled the XFree server
code that was used up to XFree 3.1.2. As such it was incapable of programming
the clocks, using linear addressing, Hi-Color, True-Color modes or the
hardware acceleration. All of these features have since been added to the
code. In addition support for the 65525, 65535, 65546, 65548, 65550 and 65554
have been included. The 64200 and 64300 chips are unsupported, however these
chips are very similar to the 6554x chips which are supported.
At this point this code is only confirmed to work correctly on a 65545 VL-Bus
machine. However as much of the code was stolen from my experiences with
writing code for XFree I hope not to have too many problems with other
machines. However if you run this code on a 65545/48 PCI machine or a 65550/54
machine then I am particularly interested in hearing of any success or failure
stories.
1. "libvga.config" OPTIONS¶
The first thing to note is that the option parser for
svgalib(7) is not
very robust. Hence if you make some typing mistakes, you can have some very
strange effects. I've set out below the
libvga.config(5) options that
are of particular interest to Chips and Technologies users. Normally this
configuration file can be found at
/etc/vga/libvga.config.
- HorizSync MIN MAX
- Often LCD panels has very different specifications for the
horizontal sync than CRT's do. Hence often you'll need this option,
particularly if you are using the XFree like modelines described below.
The two floating point numbers specified will set the minimum and maximum
allowed horizontal sync in kHz.
- VertRefresh MIN MAX
- Similar to the above, but this sets the LCD or CRT's
vertical refresh rate in Hz.
- modeline 640x480 20.00 640 688 704 776 480 480 481
486
- This option allows you to specify XFree like modelines to
use in preference to the in built modelines. Often LCD panels will need
very different pixel clocks and timings than CRT's. Hence this option
allows you to specify these. Note that the LCD panel timings are related
to the panel size and not the mode size. Therefore by default the BIOS
setting already uploaded into the registers are used by default. See the
"UseModeline" option below if you wish to override these.
- chipset C&T 5 1024
- These option allows the user to specify the chipset to use
and the amount of installed memory in kBytes. Currently supported chipsets
are
0 65520
1 65525
2 65530
3 65535
4 65540
5 65545
6 65546
7 65548
8 65550
9 65554
- TextClockFreq 25.175
- One major difference between this code and the previously
available support for the Chips and Technologies chipsets is that it
supports the use of programmable clocks. Because of the way that the Chips
and Technologies chips program the VCO from the registers, there is no way
to be sure to recover the previously programmed clock value. Hence the
driver assumes that the console clock is 25.175MHz. This will be wrong for
many machines. However I have supplied this option to use a different
value that might be more suitable for your machine.
- nolinear
- This option disables the use of the linear framebuffer.
This might be useful for machines that have broken linear framebuffers.
- linear
- Allow, but don't enforce the use of the linear framebuffer.
As this is the default anyway, I don't see that this option is much use.
- setuplinear 0xC0000000
- For VL-Bus machines I expect that the linear framebuffer
starting address will be setup correctly. However to get the starting
address for PCI machines requires access to the MEMBASE register in the
PCI address space. Code to do this doesn't currently exist with
svgalib(7), and so I've taken the easy option of just testing a few
known PCI starting addresses. For now these are just 0xFE000000,
0xFD000000, 0x41000000 and 0xC0000000. If you have a different starting
address then the linear framebuffer will be unusable. You might like to
report your starting address to me so that I can include it in the probing
code, but till then this option can be used to set up the correct address.
This option just forces the given address to be the only one probed. It
doesn't force the linear framebuffer to be used.
- LCDPanelSize 800 600
- For some machines the LCD panel size is incorrectly probed
from the registers. This option forces the LCD panel size to be as
specified. If you have a black band down one side of your LCD display you
might very well need this option. Also if you are using the option
"fix_panel_size" in XFree then this option has a similar effect.
This option can be used in conjunction with the option
"UseModeline" to program all the panel timings using the
modeline values. Two machines that are known to need this option are the
HP Omnibook 5000CTS and the NEC Versa 4080 800x600 TFT machines.
- UseModeline
- The flat panel timings are related to the panel size and
not the size of the mode specified. For this reason the default behaviour
of the svgalib(7) is to use the panel timings already installed in
the chip. The user can force the panel timings to be recalculated from the
modeline with this option. However the panel size will still be probed.
Two machines that are known to need this option are the HP Omnibook
5000CTS and the Prostar 8200. You are advised to check the README.chips
that come with XFree for more details.
- NoBitBlt
- This option disables the use of H/W acceleration. As far as
I know the only thing that currently uses the H/W acceleration is
libvgagl, so this might not be a problem anyway. However if you see
corruption of the graphics on the screen try this option and see if it
goes away.
- Use18BitBus
- For 24bpp on TFT screens, the server assumes that a 24bit
bus is being used. This can result in a reddish tint to 24bpp mode for
machines that actually have a 18 bit bus. This option, selects an 18 bit
TFT bus. Note that using this option with a 24 bit bus machine will
similarly discolour the screen. For other depths this option has no
effect.
- Center ENABLE/DISABLE or Stretch
ENABLE/DISABLE
- The default behaviour of svgalib(7) is to leave the
stretching and centring registers completely alone. However for some
machines this might result in poorly placed modes, or modes that don't
fill the whole screen. These two options can be used to centre and stretch
the mode on the screen. Note that for instance a Center DISABLE
might follow a Center ENABLE in the config file. Only the last
option takes effect.
2. UNSUPPORTED CHIPS AND TECHNOLOGIES CHIPSETS¶
The 64200 and 64300 chips are unsupported. However by specifying the chipset in
your
libvga.config as either a
- chipset C&T 3 2048
- Use 65535 for a 64200 assuming 2M of video ram, or
- chipset C&T 7 2048
- Use 65548 for a 64300 assuming 2Mb of video ram
then svgalib can be made to give limited support to these chipsets. Note that
the paged addressing mode of the 65548 chip and earlier can only address upto
1Mb of video ram. If the additional memory is needed then linear addressing
must be used!! Note that support of the 64xxx chips has not been tested at
all, and the above is just a suggestion that I believe will work.
3. KNOWN BUGS¶
One persistent and annoying bug is that the text mode stretching on LCD displays
is not always restored correctly for 65550 and 65554 machines. This is to do
with the manner in which the extended registers are restored and what is being
done with the synchronous reset while the registers are restored. As I don't
have a 65550 or 65554 machine of my own on which to test this code, I have
been unable to fix this problem. In most circumstances an LCD-CRT switch will
restore the LCD stretching to the desired state.
David.
FILES¶
/etc/vga/libvga.config
SEE ALSO¶
svgalib(7),
libvga.config(5).
AUTHOR¶
of the driver and this documentation is David Bateman
<dbateman@eng.uts.edu.au>. However, it was slightly reformatted by
Michael Weller <eowmob@exp-math.uni-essen.de>.