<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
 
<article>
 
<!-- added this title -->
<title> Information for W32 and ET6000 Chipset Users
<author> Glenn G. Lai <it>&lt;glenn@cs.utexas.edu&gt;</it>,
Dirk H. Hohndel <it>&lt;hohndel@XFree86.Org&gt;</it>,
Koen Gadeyne <it>&lt;koen.gadeyne@barco.com&gt;</it>
<date>May 16, 1997
<toc>
 
<!-- added this section name -->
<sect> Information for W32 Chipset Users <p>

<tt>XF86_W32</tt> gets phased out, now that the SVGA server with XAA
acceleration is at least as fast as the W32 server but supports more cards
and for some even higher color depths. For details about using the
<tt>XF86_SVGA</tt> with W32 cards, look below. Note that currently not all
cards that are accelerated by XF86_W32 are accelerated by XF86_SVGA at this
moment (only ET6000 and ET4000W32p to be exact). 

<tt>XF86_W32</tt> is supposed to be the stable server for cards that worked
before and have trouble with the new <tt>XF86_SVGA</tt>. Use this server
when the SVGA server fails to work for you (this happens on some ET4000W32
ISA cards), or when it refuses to accelerate anything (on ET4000W32i for
example).

Since XFree 3.2A, this server has not been updated. This means that some
(known) bugs have not been fixed. They are fixed in the SVGA Tseng driver
(or replaced by others...), so if you have problems, try the SVGA server
instead.

<!-- so this will become obsolete at some point -->
<tt>XF86_W32</tt> is basically <tt>XF86_SVGA</tt> with the drawing code
completely replaced with one based on X11R6's <tt>mi/cfb</tt> code and
modified for the ET4000/W32 series.  Even
though it accepts the same keywords as <tt>XF86_SVGA</tt>,
those not applicable to the ET4000/W32 series are silently ignored;
e.g., the keyword "SpeedUp" is a no-op.
The server currently supports the w32, w32i, w32p and et6000 chips.  For
a complete list, see the sign-on message printed by <tt>XF86_W32</tt>.
The server only supports 256 colors.

Just as with <tt>XF86_SVGA</tt>, you can specify a virtual world that has
a width that is a multiple of four.
The size of the virtual world is constrained by the
amount of the available video RAM.  <tt>XF86_W32</tt> can use more
than 1 M of video RAM, but it reserves 1 K for internal use.
If you have 1 M, <tt>XF86_W32</tt> claims
you have 1023 K; you get to specify the virtual world as 1152x900,
but not 1152x910.

For most cards the maximum clock is set to 86 MHz according to the Tseng
databooks.  For a non-interlaced 1280x1024x(256 colors) at say
135-MHz, you need a w32p (with its 16-bit RAMDAC bus) with a
multiplexing RAMDAC so that the w32p sees only (135/2 = 67.5) MHz,
not 135 MHz.  This requires special code only provided for
cards using the ICS5341 GENDAC or the STG1703. This code seems to work 
fine for most people, except, with the ICS5341, for a small band of 
frequencies around 90MHz.

If you have problems with the server.  Try the following:
<itemize>
<item>Put Option "slow_dram" in the Device Section.
<item>Put Option "pci_burst_off" in the Device Section.
<item>Put Option "w32_interleave_off" in the Device Section.
<item>Take out the Hercules monochrome adapter, if you have one.  Many 
    configurations of the ET4000/W32 series do not allow one in the
    system.
<item>Get a motherboard with its local bus running at 33 MHz.  Many, if not
    all, ET4000/W32 boards will surely behave in a funny way on a 50-MHz
    bus.  You may have to use a wait state or two, but first try without
    any.
<item>Cold-boot your machine.  Do not run anything that messes with the
    video hardware, including other X servers, before running
    <tt>XF86_W32</tt>.	
<item>In case of an ET6000 card, try specifying chipset "et6000" 
    in the Device Section. The card normally auto-probes from the PCI bus,
    but on some systems, another on-board VGA card, although disabled, may
    cause the ET6000 server to want to use the other card.
<item>Try XF86_SVGA.  If it works, put the following in your XF86Config:

<tscreen><verb>
Ramdac "generic"
</verb></tscreen>

</itemize> Note that the built-in power saver (for a "green" monitor) has
not been tested. Also do not expect it to work on a board without a
w32p_rev_c or later chip. This option is currently disabled completely,
because it causes video memory corruption (or even a crash). The SVGA server
(<tt>XF86_SVGA</tt>) supports VESA DPMS, and doesn't corrupt the screen.

<sect> Using XF86_W32 on a board with an ICS5341 GENDAC <p>
Even though the GENDAC provides a set of standard clocks that can be found
with the normal clock probing procedure, it is mandatory to put a
<tscreen><verb>
ClockChip  "ics5341"
</verb></tscreen>
line into the Device Section to be able to use the programmable clocks that
the ICS5341 can produce. You can also add a
<tscreen><verb>
Ramdac     "ics5341"
</verb></tscreen>
line, but the RAMDAC should be auto-probed correctly.  Even though the
server currently accepts any dot clock up to 135MHz with the ICS5341 GENDAC,
most boards show a small band of clock values in the area between 86MHz and
about 100MHz that don't work. This are usually is just a few MHz wide, higher
clocks as well as lower clocks work just fine. I'm working on it. (DHH)

<sect> Using XF86_W32 on a board with an STG1703 GENDAC <p>
Even though the STG1703 provides a set of standard clocks that can be found
with the normal clock probing procedure, it is mandatory to put a
<tscreen><verb>
ClockChip  "stg1703"
</verb></tscreen>
line into the Device Section to be able to use the programmable clocks that
the STG1703 can produce. You can also add a
<tscreen><verb>
Ramdac     "stg1703"
</verb></tscreen>
line, but the RAMDAC should be auto-probed correctly. 

<sect> Using XF86_W32 on an ET6000-based board <p>
The ET6000 driver code was developed on top of the existing ET4000/W32 code,
because of the many similarities between both devices. As with the other W32
(external) clockchip/RAMDAC devices, the ET6000's built-in clockchip/RAMDAC
provides a set of 8 standard clocks, which could be probed with the normal
XFree clock probing procedure.
In spite of that, XF86_W32 will always use the built-in programmable clockchip
and RAMDAC. So there is no need for a
<tscreen><verb> ClockChip "et6000" </verb></tscreen> or a 
<tscreen><verb> Ramdac "et6000" </verb></tscreen> line in the
Device Section of the XF86Config file. Once it knows it's dealing with an
ET6000, XF86_W32 will find its own way.
At this moment, accelerated support is very sketchy, and only uses those
things the ET4000/W32 code already provided, with some changes due to
incompatibilities between the two devices. Major speed improvements should
be possible.
Tseng Labs specifies a maximum pixel clock of 135 MHz for the ET6000 chips
(with higher clocks to come).

There is a known bug in this server when using it with ET6000 cards with
2.25 MB MDRAM: the server will detect 2.5 MB instead, and as a result, most
accelerated operations won't work. On cards with 2.25 MB MDRAM, you
<it>must</it> insert a <tscreen><verb> VideoRam 2304 </verb></tscreen> line
in your XF86Config.

<sect> Using <tt>XF86_SVGA</tt> with ET4000/W32 and ET6000 cards <p>
Starting with XFree86-3.2A, the SVGA server uses the new XFree86 Acceleration
Architecture (XAA). With this technology XF86_SVGA is at least as fast
if not faster than the XF86_W32 with the same hardware. Additionally, it
supports higher color depths with some cards. On the downside, some special
RAMDACs and clock chips that are supported in XF86_W32 for W32 cards are not
supported in the SVGA server at this point.

If the SVGA server does not give a picture with your W32 card try the
following:

<itemize>
<item>Put Option "slow_dram" in the Device Section.
<item>Put Option "pci_burst_off" in the Device Section.
<item>Put Option "w32_interleave_off" in the Device Section.
<item>Put Option "no_accel" in the Device Section.
<item>Cold-boot your machine. Sometimes it is even necessary to physically
    turn of the power for the W32 chip to get in a sane state again.
    Do not run anything that messes with the video hardware, including other 
    X servers, before running <tt>XF86_SVGA</tt>.
</itemize>

<sect> Acknowledgments <p>
Jerry J. Shekhel (<it>jerry@msi.com</it>) gave me (GGL) the 1-M Mirage
ET4000/W32 VLB board on which the initial development (X_W32) was done.

X11R6 and The XFree86 Project provide the base code for XF86_W32. 

Hercules Computer Technology Inc. lent me (GGL) a 2-M Hercules Dynamite Pro VLB
board for the development that led to <tt>XF86_W32</tt>.   They donated a
Dynamite Power PCI to The XFree86 Project, that was used by DHH to extend
the server.

Koen Gadeyne (<it>koen.gadeyne@barco.com</it>) wrote a patchkit for
XFree86-3.1.1 that was partly integrated in this server and he continues to
help develop it.

Tseng Labs Europe kindly donated (KMG) an ET6000-based board (a Jazz
Multimedia G-Force 128), which spurred the development of the ET6000 code.

Numerous testers have given me feedback for <tt>X_W32</tt> and later
<tt>XF86_W32</tt>.  I
apologize for my failure to keep track of the people who tested
<tt>X_W32</tt>, but
the names of the people involved with the <tt>XF86_W32</tt> testing are
listed below:
<descrip>
<tag>Linux:</tag>
<it>bf11620@coewl.cen.uiuc.edu</it> (Byron Thomas Faber) <newline>
<it>dlj0@chern.math.lehigh.edu</it> (David Johnson) <newline>
<it>peterc@a3.ph.man.ac.uk</it> (Peter Chang)  <newline>
<it>dmm0t@rincewind.mech.virginia.edu</it> (David Meyer) <newline>
<it>nrh@philabs.Philips.COM</it> (Nikolaus R. Haus) <newline>
<it>jdooley@dbp.caltech.edu</it> (James Dooley) <newline>
<it>thumper@hitchcock.eng.uiowa.edu</it> (Timothy Paul Schlie) <newline>
<it>klatta@pkdla5.syntex.com</it> (Ken Latta) <newline>
<it>robinson@cnj.digex.net</it> (Andrew Robinson) <newline>
<it>reggie@phys.washington.edu</it> (Reginald S. Perry) <newline>
<it>sjm@cs.tut.fi</it> (M{kinen Sami J) <newline>
<it>engel@yacc.central.de</it> (C. Engelmann) <bf>use</bf>
	<it>cengelm@gwdg.de</it> <newline>
<it>postgate@cafe.net</it> (Richard Postgate) <newline>
<it>are1@cec.wustl.edu</it> (Andy Ellsworth) <newline>
<it>bill@celtech.com</it> (Bill Foster)
<tag> FreeBSD: </tag>
<it>ljo@ljo-slip.DIALIN.CWRU.Edu</it> (L Jonas Olsson)
</descrip>

<!-- moved author name to title page. -->

<verb>
$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml,v 3.16.2.4 1997/06/01 12:33:36 dawes Exp $ 





$XConsortium: W32.sgml /main/11 1996/10/19 18:03:45 kaleb $
</verb>

</article>
