summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xc/programs/Xserver/hw/xfree86/XF86_Acc.man56
-rw-r--r--xc/programs/Xserver/hw/xfree86/XF86_Mono.man6
-rw-r--r--xc/programs/Xserver/hw/xfree86/XF86_SVGA.man9
-rw-r--r--xc/programs/Xserver/hw/xfree86/XF86_VGA16.man11
-rw-r--r--xc/programs/Xserver/hw/xfree86/XFree86.man31
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/mach32/mach32pntwn.c12
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/mach64/mach64.c8
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/s3/s3.c369
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/s3/s3.h9
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/s3/s3Cursor.c69
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/s3/s3Ti3020.h5
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/s3/s3fcach.c110
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/s3/s3init.c173
-rw-r--r--xc/programs/Xserver/hw/xfree86/accel/s3/s3misc.c25
-rw-r--r--xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c32
-rw-r--r--xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h182
-rw-r--r--xc/programs/Xserver/hw/xfree86/common/xf86_Option.h13
-rw-r--r--xc/programs/Xserver/hw/xfree86/common_hw/Imakefile8
-rw-r--r--xc/programs/Xserver/hw/xfree86/common_hw/xf86_HWlib.h18
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/Bsdi.sgml38
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/Config.sgml15
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml113
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/INSTALL.sgml10
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile6
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml14
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml10
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml63
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/P9000.sgml26
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml61
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/S3.sgml168
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml18
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml12
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml24
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml5
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/agx.sgml76
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml23
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/tseng.sgml10
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/ati_driver.c557
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/chips/ct_driver.c18
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_bltC.c6
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.c71
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.h5
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_imblt.s9
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_teblt8.c18
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c219
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgaBitBlt.c8
-rw-r--r--xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgablt.c32
-rw-r--r--xc/programs/Xserver/hw/xfree86/xf86Version.h6
-rw-r--r--xc/programs/Xserver/hw/xfree86/xf86config/Cards79
-rw-r--r--xc/programs/Xserver/hw/xfree86/xf86config/cards.c40
-rw-r--r--xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c22
51 files changed, 1994 insertions, 934 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/XF86_Acc.man b/xc/programs/Xserver/hw/xfree86/XF86_Acc.man
index 03b2d469e..5e40b4ae2 100644
--- a/xc/programs/Xserver/hw/xfree86/XF86_Acc.man
+++ b/xc/programs/Xserver/hw/xfree86/XF86_Acc.man
@@ -1,9 +1,9 @@
-.\" $XConsortium: XF86_Acc.man,v 1.6 95/01/06 20:56:32 kaleb Exp kaleb $
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_Acc.man,v 3.22 1995/01/15 10:28:52 dawes Exp $
+.\" $XConsortium: XF86_Acc.man,v 1.7 95/01/16 13:16:11 kaleb Exp kaleb $
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_Acc.man,v 3.24 1995/01/22 03:04:16 dawes Exp $
.TH XF86_Accel 1 "Version 3.1.1" "XFree86"
.SH NAME
XF86_Accel - accelerated X Window System servers for
-UNIX on x86 platforms with an S3, Mach8, Mach32, P9000, AGX, ET4000/W32
+UNIX on x86 platforms with an S3, Mach8, Mach32, Mach64, P9000, AGX, ET4000/W32
or 8514/A accelerator board
.SH SYNOPSIS
.B XF86_S3
@@ -44,6 +44,10 @@ is an 8-bit PseudoColor and 16-bit TrueColor server for ATI Mach32
graphic accelerator boards. Note, 16-bit operation is not supported on
all Mach32 accelerator boards.
.PP
+.I XF86_Mach64
+is an 8-bit PseudoColor, 16-bit TrueColor, and 24-bit TrueColor server
+for ATI Mach64 graphic accelerator boards.
+.PP
.I XF86_P9000
is an 8-bit PseudoColor, 16-bit TrueColor, and 24-bit TrueColor
server for Weitek Power 9000 (P9000) graphic accelerator boards.
@@ -69,7 +73,8 @@ The servers support the following chipsets:
.RS .5i
.TP 13
XF86_S3:
-86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C928-P, 86C864, 86C964
+86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C928-P,
+86C732, 86C764, 86C864, 86C964
.TP 13
XF86_Mach8:
ATI Mach8, ATI Mach32
@@ -181,6 +186,14 @@ mach32
.RE
.RS 8
.PP
+XF86_Mach64:
+.RE
+.RS 1.5i
+.PP
+mach64
+.RE
+.RS 8
+.PP
XF86_P9000:
.RE
.RS 1.5i
@@ -258,8 +271,9 @@ by the P9000 server.
.B ClockChip \fI"clockchip-type"\fP
For boards with programmable clock chips (except with the P9000 server),
the name of the clock chip is given. Possible values for the S3 server
-include \fB"icd2061a"\fP and \fB"sc11412"\fP, \fB"s3gendac"\fP,
-\fB"s3_sdac"\fP, \fB"ti3025"\fP, and \fB"ics2595"\fP.
+include \fB"icd2061a"\fP, \fB"ics9161a"\fP, \fB"dcs2834"\fP, \fB"sc11412"\fP,
+\fB"s3gendac"\fP, \fB"s3_sdac"\fP, \fB"ti3025"\fP, \fB"ics2595"\fP,
+\fB"ics5300"\fP, \fB"ics5342"\fP and \fB"ch8391"\fP.
When using the AGX server with an XGA-2
board, specify any one of these \fBClockChip\fP values to enable its
programmable clock code.
@@ -285,8 +299,8 @@ as AT&T 20C492). 16bpp works fine with the Winbond 82C490.
\fBsc15025\fP - (S3, AGX) Card has a Sierra SC15025 or SC15026 RAMDAC.
The S3 server has code to auto-detect this RAMDAC.
.sp
-\fBbt485\fP - (S3) Card has a BrookTree Bt485 RAMDAC. This must be specified
-if the server fails to detect the Bt485.
+\fBbt485\fP - (S3) Card has a BrookTree Bt485 or Bt9485 RAMDAC. This must
+be specified if the server fails to detect it.
.sp
\fBatt20c505\fP - (S3) Card has an AT&T 20C505 RAMDAC. This must be specified
either if the server fails to detect the 20C505, or if the card has a Bt485
@@ -310,6 +324,14 @@ auto-detection for this RAMDAC.
\fBs3_sdac\fP - (S3) Card has an S3 86C716 SDAC RAMDAC. This must be specified
if the server fails to detect it.
.sp
+\fBics5300\fP - (S3) Card has an ICS5300 RAMDAC. This must be specified
+if the server fails to detect it (the server will recognise this as
+an S3 GENDAC which is OK).
+.sp
+\fBics5342\fP - (S3) Card has an ICS5342 RAMDAC. This must be specified
+if the server fails to detect it (the server will recognise this as
+an S3 SDAC which is OK).
+.sp
\fBti3020\fP - (S3) Card has a TI ViewPoint Ti3020 RAMDAC. This must
be specified if the server fails to detect the Ti3020.
Note that pixel multiplexing will be used for this RAMDAC if any mode
@@ -374,6 +396,13 @@ This sets the coprocessor base address for the AGX server. Refer to
.B Instance \fIinstance\fP
This sets the XGA instance number for the AGX server. Refer to
\fIREADME.agx\fP for details.
+.TP 8
+.B S3MClk \fImemclk\fP
+This allows the video card's memory clock value to be specified. This is
+only used for 864 and Trio64 cards, and the value should not normally be
+given here for cards with an S3 Gendac or Trio64). This entry doesn't
+change the card's memory clock, but it is used to calculate the DRAM
+timing parameters. For further details refer to \fIREADME.S3\fP.
.PP
\fBOption\fP flags may be specified in either the \fBDevice\fP section
or the \fBDisplay\fP subsection of the XF86Config file.
@@ -395,16 +424,19 @@ is ignored for the 864 and 964 chips.
.sp
\fBno_ti3020_curs\fP - (S3) Disables the Ti3020's internal HW cursor.
.sp
-\fBsw_cursor\fP - (Mach32, P9000) Disable the hardware cursor.
+\fBsw_cursor\fP - (S3, Mach32, Mach64, P9000) Disable the hardware cursor.
.sp
-\fBdac_8_bit\fP - (S3, Mach32, AGX) Enables 8-bit per RGB. Currently only
+\fBdac_8_bit\fP - (S3, Mach32, Mach64, AGX) Enables 8-bit per RGB.
+Currently only
supported with the Ti3020/5, Bt485, AT&T 20C505, AT&T 20C490/1,
Sierra SC15025/6, AT&T 20C498 and STG1700 (S3 server),
Bt481 and Bt482 (AGX server),
ATI68875/TLC34075/Bt885 (Mach32 server) RAMDACs.
.sp
\fBsync_on_green\fP - (S3, P9000) Enables generation of sync on the green
-signal on cards with Bt485, AT&T 20C505 or Ti3020/5 RAMDACs.
+signal on cards with Bt485, AT&T 20C505 or Ti3020/5 RAMDACs. \fBNote:\fP
+Although these RAMDACs support sync on green, it won't work on many cards
+because of the way they are designed.
.sp
\fBpower_saver\fP - (S3) This option enables the server
to use the power saving feature of "green" monitors instead of blanking
@@ -504,7 +536,7 @@ Extra documentation for the W32 server
.LP
Note: <XRoot> refers to the root of the X11 install tree.
.SH "SEE ALSO"
-X(1), Xserver(1), XFree86(1), XF86Config(4/5), xdm(1), xinit(1)
+X(1), Xserver(1), XFree86(1), XF86Config(4/5), xdm(1), xf86config(1), xinit(1)
.SH AUTHORS
.PP
In addition to the authors of \fIXFree86\fP the following people
diff --git a/xc/programs/Xserver/hw/xfree86/XF86_Mono.man b/xc/programs/Xserver/hw/xfree86/XF86_Mono.man
index ca09ba615..8f8cf8f06 100644
--- a/xc/programs/Xserver/hw/xfree86/XF86_Mono.man
+++ b/xc/programs/Xserver/hw/xfree86/XF86_Mono.man
@@ -1,5 +1,5 @@
-.\" $XConsortium: XF86_Mono.man,v 1.4 94/10/12 19:34:26 kaleb Exp kaleb $
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_Mono.man,v 3.6 1995/01/08 06:58:27 dawes Exp $
+.\" $XConsortium: XF86_Mono.man,v 1.5 95/01/16 13:16:12 kaleb Exp kaleb $
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_Mono.man,v 3.7 1995/01/21 07:14:23 dawes Exp $
.TH XF86_Mono 1 "Version 3.1.1" "XFree86"
.SH NAME
XF86_Mono - 1 bit non-accelerated X Window System servers for UNIX on
@@ -259,7 +259,7 @@ Server configuration file
.LP
Note: <XRoot> refers to the root of the X11 install tree.
.SH "SEE ALSO"
-X(1), Xserver(1), XFree86(1), XF86Config(4/5), xdm(1), xinit(1)
+X(1), Xserver(1), XFree86(1), XF86Config(4/5), xf86config(1), xdm(1), xinit(1)
.SH BUGS
There are no known bugs at this time, although we welcome reports emailed
to the address listed below.
diff --git a/xc/programs/Xserver/hw/xfree86/XF86_SVGA.man b/xc/programs/Xserver/hw/xfree86/XF86_SVGA.man
index aaa9be41d..db38186e0 100644
--- a/xc/programs/Xserver/hw/xfree86/XF86_SVGA.man
+++ b/xc/programs/Xserver/hw/xfree86/XF86_SVGA.man
@@ -1,5 +1,5 @@
-.\" $XConsortium: XF86_SVGA.man,v 1.4 95/01/05 20:53:30 kaleb Exp kaleb $
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_SVGA.man,v 3.15 1995/01/11 03:46:18 dawes Exp $
+.\" $XConsortium: XF86_SVGA.man,v 1.5 95/01/16 13:16:13 kaleb Exp kaleb $
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_SVGA.man,v 3.16 1995/01/21 07:14:25 dawes Exp $
.TH XF86_SVGA 1 "Version 3.1.1" "XFree86"
.SH NAME
XF86_SVGA - non-accelerated SVGA X Window System servers for UNIX on
@@ -293,6 +293,9 @@ Extra documentation for the Trident driver
<XRoot>/lib/X11/doc/README.tseng
Extra documentation for the ET4000 and ET3000 drivers
.TP 30
+<XRoot>/lib/X11/doc/README.Oak
+Extra documentation for the Oak driver
+.TP 30
<XRoot>/lib/X11/doc/README.Video7
Extra documentation for the Video7 driver
.TP 30
@@ -301,7 +304,7 @@ Extra documentation for the WD/PVGA driver
.LP
Note: <XRoot> refers to the root of the X11 install tree.
.SH "SEE ALSO"
-X(1), Xserver(1), XFree86(1), XF86Config(4/5), xdm(1), xinit(1)
+X(1), Xserver(1), XFree86(1), XF86Config(4/5), xf86config(1), xdm(1), xinit(1)
.SH BUGS
.PP
There are no known bugs at this time, although we welcome reports emailed
diff --git a/xc/programs/Xserver/hw/xfree86/XF86_VGA16.man b/xc/programs/Xserver/hw/xfree86/XF86_VGA16.man
index 88c97a772..221a1b6a8 100644
--- a/xc/programs/Xserver/hw/xfree86/XF86_VGA16.man
+++ b/xc/programs/Xserver/hw/xfree86/XF86_VGA16.man
@@ -1,5 +1,5 @@
-.\" $XConsortium: XF86_VGA16.man,v 1.3 94/10/12 19:34:26 kaleb Exp kaleb $
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_VGA16.man,v 3.6 1995/01/08 06:58:30 dawes Exp $
+.\" $XConsortium: XF86_VGA16.man,v 1.4 95/01/16 13:16:14 kaleb Exp kaleb $
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86_VGA16.man,v 3.7 1995/01/21 07:14:26 dawes Exp $
.TH XF86_VGA16 1 "Version 3.1.1" "XFree86"
.SH NAME
XF86_VGA16 - 4 bit non-accelerated X Window System server for UNIX on
@@ -52,7 +52,7 @@ manpage.
.I XFree86
uses a configuration file called \fBXF86Config\fP for its initial setup.
See the
-.I Xconfig(4/5)
+.I XF86Config(4/5)
manpage for general details. Here only the
.I XF86_VGA16
specific parts are explained.
@@ -160,10 +160,11 @@ Server configuration file
.LP
Note: <XRoot> refers to the root of the X11 install tree.
.SH "SEE ALSO"
-X(1), Xserver(1), XFree86(1), XF86Config(4/5), XF86_Mono(1), xdm(1), xinit(1)
+X(1), Xserver(1), XFree86(1), XF86Config(4/5), XF86_Mono(1), xf86config(1),
+xdm(1), xinit(1)
.SH CONTACT INFO
\fIXFree86\fP source is available from the FTP server
-\fIftp.XFree86.org\fP and \fIftp.x.org\fP. Send email to
+\fIftp.XFree86.org\fP. Send email to
\fIXFree86@XFree86.org\fP for details.
.SH AUTHORS
.PP
diff --git a/xc/programs/Xserver/hw/xfree86/XFree86.man b/xc/programs/Xserver/hw/xfree86/XFree86.man
index 85a10928f..7aa3bf55a 100644
--- a/xc/programs/Xserver/hw/xfree86/XFree86.man
+++ b/xc/programs/Xserver/hw/xfree86/XFree86.man
@@ -1,5 +1,5 @@
-.\" $XConsortium: XFree86.man,v 1.4 94/11/28 11:26:22 kaleb Exp kaleb $
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/XFree86.man,v 3.7 1995/01/07 05:43:28 dawes Exp $
+.\" $XConsortium: XFree86.man,v 1.5 95/01/16 13:16:14 kaleb Exp kaleb $
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/XFree86.man,v 3.8 1995/01/21 07:14:27 dawes Exp $
.TH XFree86 1 "Version 3.1.1" "XFree86"
.SH NAME
XFree86 - X11R6 for UNIX on x86 platforms
@@ -23,7 +23,7 @@ operates under the following operating systems:
.br
-- Solaris (x86) 2.1, 2.4
.br
--- FreeBSD 1.1.5, NetBSD 1.0 (i386 port only)
+-- FreeBSD 1.1.5, 2.0, NetBSD 1.0 (i386 port only)
.br
-- BSD/386 version 1.1
.br
@@ -211,6 +211,9 @@ The accelerated Mach8 X server
<XRoot>/bin/XF86_Mach32
The accelerated Mach32 X server
.TP 30
+<XRoot>/bin/XF86_Mach64
+The accelerated Mach64 X server
+.TP 30
<XRoot>/bin/XF86_P9000
The accelerated P9000 X server
.TP 30
@@ -261,7 +264,7 @@ Initial access control list for display \fIn\fP
.LP
Note: <XRoot> refers to the root of the X11 install tree.
.SH "SEE ALSO"
-X(1), Xserver(1), xdm(1), xinit(1), Xconfig(4/5),
+X(1), Xserver(1), xdm(1), xinit(1), XF86Config(4/5), xf86config(1),
XF86_SVGA(1), XF86_VGA16(1), XF86_Mono(1), XF86_Accel(1)
.SH AUTHORS
.PP
@@ -374,7 +377,8 @@ Bernhard Bender, \fIbr@elsa.mhs.compuserve.com\fP
S3 server development.
.TP 8
Kevin Martin, \fImartin@cs.unc.edu\fP
-Overall work on the base accelerated servers (ATI and 8514/A).
+Overall work on the base accelerated servers (ATI and 8514/A), and Mach64
+server.
.TP 8
Rik Faith, \fIfaith@cs.unc.edu\fP
Overall work on the base accelerated servers (ATI and 8514/A).
@@ -418,11 +422,26 @@ WD accelerated code.
Bill Conn, \fIconn@bnr.ca\fP
WD accelerated code.
.TP 8
+Steve Goldman, \fIsgoldman@encore.com\fP
+Oak 067/077 SVGA driver.
+.TP 8
+Jorge Delgado, \fIernar@dit.upm.es\fP
+Oak SVGA driver, and 087 accelerated code.
+.TP 8
+Bill Conn, \fIconn@bnr.ca\fP
+WD accelerated code.
+.TP 8
Paolo Severini, \fIlendl@dist.dist.unige.it\fP
AL2101 SVGA driver
.TP 8
+Ching-Tai Chiu, \fIcchiu@netcom.com\fP
+Avance Logic ALI SVGA driver
+.TP 8
Manfred Brands \fImb@oceonics.nl\fP
-Cirrus 6420 SVGA driver
+Cirrus 64xx SVGA driver
+.TP 8
+Randy Hendry \fIrandy@sgi.com\fP
+Cirrus 64xx SVGA driver
.TP 8
Frank Dikker \fIdikker@cs.utwente.nl\fP
MX SVGA driver
diff --git a/xc/programs/Xserver/hw/xfree86/accel/mach32/mach32pntwn.c b/xc/programs/Xserver/hw/xfree86/accel/mach32/mach32pntwn.c
index 446f2b623..95382a515 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/mach32/mach32pntwn.c
+++ b/xc/programs/Xserver/hw/xfree86/accel/mach32/mach32pntwn.c
@@ -1,5 +1,5 @@
-/* $XConsortium: mach32pntwn.c,v 1.1 94/10/05 13:31:19 kaleb Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/mach32/mach32pntwn.c,v 3.2 1994/09/11 00:49:05 dawes Exp $ */
+/* $XConsortium: mach32pntwn.c,v 1.3 94/10/12 19:59:09 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/mach32/mach32pntwn.c,v 3.4 1995/01/20 05:45:44 dawes Exp $ */
/*
Copyright (c) 1987 X Consortium
@@ -77,6 +77,7 @@ mach32PaintWindow(pWin, pRegion, what)
{
register cfbPrivWin *pPrivWin;
void (*pcfbFillBoxTile32)(), (*pcfbFillBoxTileOdd)();
+ WindowPtr pBgWin;
if (!mach32Use4MbAperture)
{
@@ -155,11 +156,16 @@ mach32PaintWindow(pWin, pRegion, what)
else if (pWin->border.pixmap->drawable.width >=
/* PPW/2 */ 16 / pWin->drawable.bitsPerPixel)
{
+ for (pBgWin = pWin;
+ pBgWin->backgroundState == ParentRelative;
+ pBgWin = pBgWin->parent);
+
(*pcfbFillBoxTileOdd) ((DrawablePtr)pWin,
(int)REGION_NUM_RECTS(pRegion),
REGION_RECTS(pRegion),
pWin->border.pixmap,
- (int) pWin->drawable.x, (int) pWin->drawable.y);
+ (int) pBgWin->drawable.x,
+ (int) pBgWin->drawable.y);
return;
}
break;
diff --git a/xc/programs/Xserver/hw/xfree86/accel/mach64/mach64.c b/xc/programs/Xserver/hw/xfree86/accel/mach64/mach64.c
index b29beb2e6..4f28098f1 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/mach64/mach64.c
+++ b/xc/programs/Xserver/hw/xfree86/accel/mach64/mach64.c
@@ -1,5 +1,5 @@
-/* $XConsortium: mach64.c,v 1.2 95/01/06 20:57:05 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/mach64/mach64.c,v 3.5 1995/01/15 10:31:07 dawes Exp $ */
+/* $XConsortium: mach64.c,v 1.3 95/01/16 13:16:31 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/mach64/mach64.c,v 3.6 1995/01/21 07:15:01 dawes Exp $ */
/*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
* Copyright 1993,1994 by Kevin E. Martin, Chapel Hill, North Carolina.
@@ -642,6 +642,10 @@ mach64Probe()
if(pEnd == (DisplayModePtr) NULL)
pEnd = pMode;
pMode = pMode->next;
+ mach64InfoRec.virtualX = max(mach64InfoRec.virtualX,
+ pMode->HDisplay);
+ mach64InfoRec.virtualY = max(mach64InfoRec.virtualY,
+ pMode->VDisplay);
}
}
} while (pMode != pEnd);
diff --git a/xc/programs/Xserver/hw/xfree86/accel/s3/s3.c b/xc/programs/Xserver/hw/xfree86/accel/s3/s3.c
index 34a52e5b5..8c2f4f162 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/s3/s3.c
+++ b/xc/programs/Xserver/hw/xfree86/accel/s3/s3.c
@@ -1,5 +1,5 @@
-/* $XConsortium: s3.c,v 1.5 95/01/06 20:57:15 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3.c,v 3.61 1995/01/15 10:32:52 dawes Exp $ */
+/* $XConsortium: s3.c,v 1.6 95/01/16 13:16:45 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3.c,v 3.69 1995/01/23 01:29:21 dawes Exp $ */
/*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
*
@@ -168,6 +168,9 @@ static SymTabRec s3DacTable[] = {
{ S3_SDAC_DAC, "ics5342" }, /* XXXX should be checked if true */
{ S3_GENDAC_DAC, "s3gendac" },
{ S3_GENDAC_DAC, "ics5300" },
+ { S3_TRIO32_DAC, "s3_trio32" },
+ { S3_TRIO64_DAC, "s3_trio64" },
+ { S3_TRIO64_DAC, "s3_trio" },
{ -1, "" },
};
@@ -181,6 +184,7 @@ static Bool ti3025ClockSelect();
static Bool ch8391ClockSelect();
ScreenPtr s3savepScreen;
Bool s3Localbus = FALSE;
+Bool s3VLB = FALSE;
Bool s3LinearAperture = FALSE;
Bool s3Mmio928 = FALSE;
Bool s3PixelMultiplexing = FALSE;
@@ -329,7 +333,8 @@ static int check_SPEA_bios(int BIOSbase)
}
-static Bool s3ProbeSDAC()
+static Bool
+s3ProbeSDAC(Bool quiet)
{
/* probe for S3 GENDAC or SDAC */
/*
@@ -382,24 +387,27 @@ static Bool s3ProbeSDAC()
(clock01 == 0x7f7f7f7f && clock23 != 0x7f7f7f7f)) {
found = TRUE;
- xf86dactopel();
- inb(0x3c6);
- inb(0x3c6);
- inb(0x3c6);
+ if (!quiet) {
+ xf86dactopel();
+ inb(0x3c6);
+ inb(0x3c6);
+ inb(0x3c6);
- /* the forth read will show the SDAC chip ID and revision */
- if (((i=inb(0x3c6)) & 0xf0) == 0x70) {
- ErrorF("%s %s: Detected an S3 SDAC 86C716 RAMDAC and programmable clock\n",
- XCONFIG_PROBED, s3InfoRec.name);
- s3RamdacType = S3_SDAC_DAC;
- }
- else {
- ErrorF("%s %s: Detected an S3 GENDAC 86C708 RAMDAC and programmable clock\n",
- XCONFIG_PROBED, s3InfoRec.name);
- s3RamdacType = S3_GENDAC_DAC;
+ /* the fourth read will show the SDAC chip ID and revision */
+ if (((i=inb(0x3c6)) & 0xf0) == 0x70) {
+ ErrorF("%s %s: Detected an S3 SDAC 86C716 RAMDAC and programmable clock\n",
+ XCONFIG_PROBED, s3InfoRec.name);
+ s3RamdacType = S3_SDAC_DAC;
+ }
+ else {
+ ErrorF("%s %s: Detected an S3 GENDAC 86C708 RAMDAC and programmable clock\n",
+ XCONFIG_PROBED, s3InfoRec.name);
+ s3RamdacType = S3_GENDAC_DAC;
+ }
}
xf86dactopel();
}
+ return found;
}
/*
@@ -429,6 +437,7 @@ s3Probe()
* pixMuxMinWidth - smallest physical width supported in
* pixmux mode
* nonMuxMaxClock - highest dot clock supported without pixmux
+ * pixMuxMinClock - lowest dot clock supported with pixmux
* nonMuxMaxMemory - max video memory accessible without pixmux
* pixMuxLimitedWidths - pixmux only works for logical display
* widths 1024 and 2048
@@ -443,6 +452,7 @@ s3Probe()
Bool pixMuxNeeded = FALSE;
int pixMuxMinWidth = 1024;
int nonMuxMaxClock = 0;
+ int pixMuxMinClock = 0;
int nonMuxMaxMemory = 8192;
Bool pixMuxLimitedWidths = TRUE;
Bool pixMuxInterlaceOK = TRUE;
@@ -538,6 +548,7 @@ s3Probe()
OFLG_SET(OPTION_NOLINEAR_MODE, &validOptions);
if (!S3_x64_SERIES(s3ChipId))
OFLG_SET(OPTION_NO_MEM_ACCESS, &validOptions);
+ OFLG_SET(OPTION_SW_CURSOR, &validOptions);
OFLG_SET(OPTION_BT485_CURS, &validOptions);
OFLG_SET(OPTION_SHOWCACHE, &validOptions);
OFLG_SET(OPTION_FB_DEBUG, &validOptions);
@@ -582,6 +593,7 @@ s3Probe()
case 1:
ErrorF("%s %s: card type: 386/486 localbus\n",
XCONFIG_PROBED, s3InfoRec.name);
+ s3VLB = TRUE;
break;
case 3:
ErrorF("%s %s: card type: ISA\n", XCONFIG_PROBED, s3InfoRec.name);
@@ -613,6 +625,8 @@ s3Probe()
case ELSA_WINNER_1000PRO:
/* This option isn't required at the moment */
OFLG_SET(OPTION_ELSA_W1000PRO, &s3InfoRec.options);
+ if (s3ProbeSDAC(TRUE))
+ continue; /* SDAC detected, don't set ICD2061A clock */
break;
case ELSA_WINNER_2000PRO:
OFLG_SET(OPTION_ELSA_W2000PRO, &s3InfoRec.options);
@@ -634,8 +648,6 @@ s3Probe()
if (!OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions)) {
OFLG_SET(CLOCK_OPTION_ICD2061A, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
- s3ClockSelectFunc = icd2061ClockSelect;
- numClocks = 3;
clockchip_probed = XCONFIG_PROBED;
}
} while (0);
@@ -665,6 +677,12 @@ s3Probe()
ErrorF("%s %s: chipset: Trio64 rev. %x\n",
XCONFIG_PROBED, s3InfoRec.name, s3ChipRev);
}
+ if (S3_866_SERIES(s3ChipId) || S3_868_SERIES(s3ChipId) ||
+ S3_968_SERIES(s3ChipId)) {
+ ErrorF("%s %s: Support for this chipset is untested.\n%s\n",
+ XCONFIG_PROBED, s3InfoRec.name,
+ "\tPlease report success or failure to XFree86@XFree86.org");
+ }
} else if (S3_801_928_SERIES(s3ChipId)) {
if (S3_801_SERIES(s3ChipId)) {
if (S3_805_I_SERIES(s3ChipId)) {
@@ -841,7 +859,33 @@ s3Probe()
* type possible. Only probe for 928, 805i and 864/964.
*/
- if (S3_928_SERIES(s3ChipId) || S3_x64_SERIES(s3ChipId)
+ if (S3_TRIOxx_SERIES(s3ChipId)) {
+ if (s3RamdacType != UNKNOWN_DAC && !DAC_IS_TRIO) {
+ ErrorF("%s %s: for Trio32/64 chips you shouldn't specify a Ramdac\n",
+ XCONFIG_PROBED, s3InfoRec.name);
+ OFLG_CLR(XCONFIG_RAMDAC, &s3InfoRec.xconfigFlag);
+ }
+ if (!DAC_IS_TRIO) {
+ if (S3_TRIO32_SERIES(s3ChipId))
+ s3RamdacType = S3_TRIO32_DAC;
+ else
+ s3RamdacType = S3_TRIO64_DAC;
+ s3InfoRec.ramdac = xf86TokenToString(s3DacTable, s3RamdacType);
+ }
+ if ( OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions) &&
+ !OFLG_ISSET(CLOCK_OPTION_S3TRIO, &s3InfoRec.clockOptions)) {
+ ErrorF("%s %s: for Trio32/64 chips you shouldn't specify a Clockchip\n",
+ XCONFIG_PROBED, s3InfoRec.name);
+ /* Clear the other clock options */
+ OFLG_ZERO(&s3InfoRec.clockOptions);
+ }
+ if (!OFLG_ISSET(CLOCK_OPTION_S3TRIO, &s3InfoRec.clockOptions)) {
+ OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
+ OFLG_SET(CLOCK_OPTION_S3TRIO, &s3InfoRec.clockOptions);
+ clockchip_probed = XCONFIG_PROBED;
+ }
+ }
+ else if (S3_928_SERIES(s3ChipId) || S3_x64_SERIES(s3ChipId)
|| S3_805_I_SERIES(s3ChipId)) {
/* First probe for Ti3020 and Ti3025 */
if (s3RamdacType == UNKNOWN_DAC) {
@@ -928,14 +972,10 @@ s3Probe()
if (S3_964_SERIES(s3ChipId)) {
OFLG_SET(CLOCK_OPTION_ICD2061A, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
- s3ClockSelectFunc = icd2061ClockSelect;
- numClocks = 3;
clockchip_probed = XCONFIG_PROBED;
} else if (S3_928_ONLY(s3ChipId)) {
OFLG_SET(CLOCK_OPTION_SC11412, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
- s3ClockSelectFunc = icd2061ClockSelect;
- numClocks = 3;
clockchip_probed = XCONFIG_PROBED;
}
}
@@ -1030,11 +1070,10 @@ s3Probe()
if (S3_864_SERIES(s3ChipId) || S3_805_I_SERIES(s3ChipId)
|| S3_801_SERIES(s3ChipId)) {
if (s3RamdacType == UNKNOWN_DAC) {
- if (s3ProbeSDAC()) {
- OFLG_SET(CLOCK_OPTION_S3GENDAC, &s3InfoRec.clockOptions);
+ if (s3ProbeSDAC(FALSE) &&
+ !OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions)) {
+ OFLG_SET(CLOCK_OPTION_S3GENDAC, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
- s3ClockSelectFunc = s3GendacClockSelect;
- numClocks = 3;
clockchip_probed = XCONFIG_PROBED;
}
}
@@ -1045,9 +1084,10 @@ s3Probe()
s3RamdacType = NORMAL_DAC;
}
- if (!OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions) &&
+ if ((!OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions) &&
!OFLG_ISSET(OPTION_SPEA_MERCURY, &s3InfoRec.options) &&
- (s3InfoRec.ramdac == NULL)) { /* ensure that autodetection can be */
+ (s3InfoRec.ramdac == NULL)) || S3_TRIO64_SERIES(s3ChipId))
+ { /* ensure that autodetection can be */
/* overwritten */
card_id = check_SPEA_bios(s3InfoRec.BIOSbase);
if (card_id > 0) {
@@ -1062,8 +1102,6 @@ s3Probe()
OFLG_SET(OPTION_SPEA_MERCURY, &s3InfoRec.options);
OFLG_SET(CLOCK_OPTION_SC11412, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
- s3ClockSelectFunc = icd2061ClockSelect;
- numClocks = 3;
clockchip_probed = XCONFIG_PROBED;
} else if (S3_964_SERIES(s3ChipId)) {
/* SPEA Mercury P64 */
@@ -1072,8 +1110,6 @@ s3Probe()
OFLG_SET(OPTION_SPEA_MERCURY, &s3InfoRec.options);
OFLG_SET(CLOCK_OPTION_ICD2061A, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
- s3ClockSelectFunc = icd2061ClockSelect;
- numClocks = 3;
clockchip_probed = XCONFIG_PROBED;
}
break;
@@ -1084,8 +1120,6 @@ s3Probe()
XCONFIG_PROBED, s3InfoRec.name);
OFLG_SET(CLOCK_OPTION_ICS2595, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
- s3ClockSelectFunc = icd2061ClockSelect;
- numClocks = 3;
clockchip_probed = XCONFIG_PROBED;
}
break;
@@ -1095,10 +1129,16 @@ s3Probe()
ErrorF("%s %s: SPEA Mirage P64 detected.\n",
XCONFIG_PROBED, s3InfoRec.name);
break;
+ case S3_TRIO64_DAC:
+ if (S3_TRIO64_SERIES(s3ChipId))
+ /* SPEA Mirage P64 Bios 5.xx */
+ ErrorF("%s %s: SPEA Mirage P64 Trio64 detected.\n",
+ XCONFIG_PROBED, s3InfoRec.name);
+ break;
case S3_GENDAC_DAC:
if (S3_801_SERIES(s3ChipId))
/* SPEA Mirage Bios 5.x */
- ErrorF("%s %s: SPEA Mirage with BIOS 5.x detected.\n",
+ ErrorF("%s %s: SPEA Mirage detected.\n",
XCONFIG_PROBED, s3InfoRec.name);
break;
}
@@ -1134,6 +1174,11 @@ s3Probe()
if (!S3_801_SERIES(s3ChipId))
chips = "801 and 805 chips";
break;
+ case S3_TRIO32_DAC:
+ case S3_TRIO64_DAC:
+ if (!S3_TRIOxx_SERIES(s3ChipId))
+ chips = "Trio32 and Trio64";
+ break;
}
if (chips) {
ErrorF("%s %s: Ramdac \"%s\" is only supported with %s\n",
@@ -1145,6 +1190,20 @@ s3Probe()
}
}
+ if (S3_TRIOxx_SERIES(s3ChipId)) {
+ if (!DAC_IS_TRIO) {
+ ErrorF("%s %s: for Trio32/64 chips you shouldn't specify a Ramdac\n",
+ XCONFIG_PROBED, s3InfoRec.name);
+ OFLG_CLR(XCONFIG_RAMDAC, &s3InfoRec.xconfigFlag);
+ /* Treat the ramdac as a "normal" dac */
+ if (S3_TRIO32_SERIES(s3ChipId))
+ s3RamdacType = S3_TRIO32_DAC;
+ else
+ s3RamdacType = S3_TRIO64_DAC;
+ s3InfoRec.ramdac = xf86TokenToString(s3DacTable, s3RamdacType);
+ }
+ }
+
if (xf86Verbose) {
ErrorF("%s %s: Ramdac type: %s\n",
OFLG_ISSET(XCONFIG_RAMDAC, &s3InfoRec.xconfigFlag) ?
@@ -1193,6 +1252,8 @@ s3Probe()
case STG1700_DAC:
case S3_SDAC_DAC:
case S3_GENDAC_DAC:
+ case S3_TRIO32_DAC:
+ case S3_TRIO64_DAC:
break;
case SC15025_DAC:
break;
@@ -1232,7 +1293,12 @@ s3Probe()
case ATT22C498_DAC:
case STG1700_DAC:
case S3_SDAC_DAC:
- s3InfoRec.dacSpeed = 135000;
+ case S3_TRIO32_DAC:
+ case S3_TRIO64_DAC:
+ if (OFLG_ISSET(CLOCK_OPTION_ICS5342, &s3InfoRec.clockOptions))
+ s3InfoRec.dacSpeed = 125000; /* limit of current ICS5342 clock code */
+ else
+ s3InfoRec.dacSpeed = 135000;
break;
case TI3020_DAC:
if (OFLG_ISSET(OPTION_ELSA_W2000PRO, &s3InfoRec.options))
@@ -1294,8 +1360,8 @@ s3Probe()
S3_964_SERIES(s3ChipId)))
s3Bt485PixMux = TRUE;
- if ((DAC_IS_ATT498 || DAC_IS_STG1700 || DAC_IS_SDAC) &&
- (S3_864_SERIES(s3ChipId) || S3_805_I_SERIES(s3ChipId)))
+ if ((DAC_IS_ATT498 || DAC_IS_STG1700 || DAC_IS_SDAC || DAC_IS_TRIO) &&
+ (S3_x64_SERIES(s3ChipId) || S3_805_I_SERIES(s3ChipId)))
if (xf86bpp <= 8) s3ATT498PixMux = TRUE;
/* Set the pix-mux description based on the ramdac type */
@@ -1315,15 +1381,23 @@ s3Probe()
} else if (s3ATT498PixMux) {
pixMuxPossible = TRUE;
if (DAC_IS_ATT20C498 && !DAC_IS_ATT22C498) {
- if (S3_864_SERIES(s3ChipId))
+ if (S3_864_SERIES(s3ChipId)) {
nonMuxMaxClock = 95000; /* 864 DCLK limit */
- else if (S3_805_I_SERIES(s3ChipId))
+ pixMuxMinClock = 67500;
+ }
+ else if (S3_805_I_SERIES(s3ChipId)) {
nonMuxMaxClock = 90000; /* XXXX just a guess, who has 805i docs? */
- else
+ pixMuxMinClock = 67500;
+ }
+ else {
nonMuxMaxClock = 67500;
+ pixMuxMinClock = 67500;
+ }
}
- else
+ else {
nonMuxMaxClock = 67500;
+ pixMuxMinClock = 67500;
+ }
allowPixMuxInterlace = FALSE;
allowPixMuxSwitching = TRUE;
pixMuxLimitedWidths = FALSE;
@@ -1378,14 +1452,51 @@ s3Probe()
* generation ramdacs will have a built in clock (i.e. TI 3025)
*/
- if (DAC_IS_TI3025) {
+ if (DAC_IS_TI3025 &&
+ !OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions)) {
+ OFLG_SET(CLOCK_OPTION_TI3025, &s3InfoRec.clockOptions);
+ OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
+ clockchip_probed = XCONFIG_PROBED;
+ }
+
+ if (OFLG_ISSET(CLOCK_OPTION_TI3025, &s3InfoRec.clockOptions)) {
+ int mclk, m, n, p, mcc, cr5c;
s3ClockSelectFunc = ti3025ClockSelect;
OFLG_SET(CLOCK_OPTION_TI3025, &s3InfoRec.clockOptions);
OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions);
+
+ outb(vgaCRIndex, 0x5c);
+ cr5c = inb(vgaCRReg);
+ outb(vgaCRReg, cr5c & 0xdf); /* clear RS4 - use 3020 mode */
+
+ s3OutTiIndReg(TI_PLL_CONTROL, 0x00, 0x00);
+ n = s3InTiIndReg(TI_MCLK_PLL_DATA) & 0x7f;
+ s3OutTiIndReg(TI_PLL_CONTROL, 0x00, 0x01);
+ m = s3InTiIndReg(TI_MCLK_PLL_DATA) & 0x7f;
+ s3OutTiIndReg(TI_PLL_CONTROL, 0x00, 0x02);
+ p = s3InTiIndReg(TI_MCLK_PLL_DATA) & 0x03;
+ mcc = s3InTiIndReg(TI_MCLK_DCLK_CONTROL);
+ if (mcc & 0x08)
+ mcc = (mcc & 0x07) * 2 + 2;
+ else
+ mcc = 1;
+ mclk = ((1431818 * ((m+2) * 8)) / (n+2) / (1 << p) / mcc + 50) / 100;
if (xf86Verbose)
- ErrorF("%s %s: Using TI 3025 programmable clock\n",
- XCONFIG_GIVEN, s3InfoRec.name);
+ ErrorF("%s %s: Using TI 3025 programmable clock (MCLK %1.3f MHz)\n",
+ clockchip_probed, s3InfoRec.name, mclk / 1000.0);
numClocks = 3;
+ if (OFLG_ISSET(OPTION_NUMBER_NINE, &s3InfoRec.options)) {
+ mclk = 55000;
+ ErrorF("%s %s: Setting MCLK to %1.3f MHz for #9GXE64 Pro\n",
+ XCONFIG_PROBED, s3InfoRec.name, mclk / 1000.0);
+ Ti3025SetClock(2 * mclk, TI_MCLK_PLL_DATA);
+ mcc = s3InTiIndReg(TI_MCLK_DCLK_CONTROL);
+ s3OutTiIndReg(TI_MCLK_DCLK_CONTROL,0x00, (mcc & 0xf0) | 0x08);
+ }
+ if (!s3InfoRec.s3MClk)
+ s3InfoRec.s3MClk = mclk;
+ outb(vgaCRIndex, 0x5c);
+ outb(vgaCRReg, cr5c);
} else if (OFLG_ISSET(OPTION_LEGEND, &s3InfoRec.options)) {
s3ClockSelectFunc = LegendClockSelect;
numClocks = 32;
@@ -1401,7 +1512,8 @@ s3Probe()
ErrorF("%s %s: Using Sierra SC11412 programmable clock\n",
clockchip_probed, s3InfoRec.name);
numClocks = 3;
- } else if (OFLG_ISSET(CLOCK_OPTION_S3GENDAC, &s3InfoRec.clockOptions)) {
+ } else if (OFLG_ISSET(CLOCK_OPTION_S3GENDAC, &s3InfoRec.clockOptions) ||
+ OFLG_ISSET(CLOCK_OPTION_ICS5342, &s3InfoRec.clockOptions)) {
s3ClockSelectFunc = s3GendacClockSelect;
if (xf86Verbose) {
unsigned char saveCR55;
@@ -1421,9 +1533,11 @@ s3Probe()
m &= 0x7f;
n1 = n & 0x1f;
n2 = (n>>5) & 0x03;
- mclk = ((1431818 * (m+2.0)) / (n1+2.0) / (1 << n2) + 50) / 100;
- ErrorF("%s %s: Using S3 Gendac/SDAC programmable clock (MCLK %1.3f MHz)\n",
- clockchip_probed, s3InfoRec.name
+ mclk = ((1431818 * (m+2)) / (n1+2) / (1 << n2) + 50) / 100;
+ ErrorF("%s %s: Using %s programmable clock (MCLK %1.3f MHz)\n"
+ ,clockchip_probed, s3InfoRec.name
+ ,OFLG_ISSET(CLOCK_OPTION_ICS5342, &s3InfoRec.clockOptions)
+ ? "ICS5342" : "S3 Gendac/SDAC"
,mclk / 1000.0);
if (s3InfoRec.s3MClk > 0) {
ErrorF("%s %s: using specified MCLK value of %1.3f MHz for DRAM timings\n",
@@ -1434,6 +1548,40 @@ s3Probe()
}
}
numClocks = 3;
+ } else if (OFLG_ISSET(CLOCK_OPTION_S3TRIO, &s3InfoRec.clockOptions)) {
+ s3ClockSelectFunc = s3GendacClockSelect;
+ numClocks = 3;
+ if (xf86Verbose) {
+ unsigned char sr8;
+ int i,m,n,n1,n2, mclk;
+
+ outb(0x3c4, 0x08);
+ sr8 = inb(0x3c5);
+ outb(0x3c5, 0x06);
+
+ outb(0x3c4, 0x11);
+ m = inb(0x3c5);
+ outb(0x3c4, 0x10);
+ n = inb(0x3c5);
+
+ outb(0x3c4, 0x08);
+ outb(0x3c5, sr8);
+
+ m &= 0x7f;
+ n1 = n & 0x1f;
+ n2 = (n>>5) & 0x03;
+ mclk = ((1431818 * (m+2)) / (n1+2) / (1 << n2) + 50) / 100;
+ ErrorF("%s %s: Using Trio32/64 programmable clock (MCLK %1.3f MHz)\n"
+ ,clockchip_probed, s3InfoRec.name
+ ,mclk / 1000.0);
+ if (s3InfoRec.s3MClk > 0) {
+ ErrorF("%s %s: using specified MCLK value of %1.3f MHz for DRAM timings\n",
+ XCONFIG_GIVEN, s3InfoRec.s3MClk / 1000.0);
+ }
+ else {
+ s3InfoRec.s3MClk = mclk;
+ }
+ }
} else if (OFLG_ISSET(CLOCK_OPTION_ICS2595, &s3InfoRec.clockOptions)) {
s3ClockSelectFunc = icd2061ClockSelect;
if (xf86Verbose)
@@ -1441,17 +1589,11 @@ s3Probe()
XCONFIG_GIVEN, s3InfoRec.name);
numClocks = 3;
} else if (OFLG_ISSET(CLOCK_OPTION_CH8391, &s3InfoRec.clockOptions)) {
-#ifdef CH8391
s3ClockSelectFunc = ch8391ClockSelect;
if (xf86Verbose)
ErrorF("%s %s: Using Chrontel 8391 programmable clock\n",
XCONFIG_GIVEN, s3InfoRec.name);
numClocks = 3;
-#else
- ErrorF("CH8391 clock chip support is not yet included\n");
- xf86DisableIOPorts(s3InfoRec.scrnIndex);
- return(FALSE);
-#endif
} else {
s3ClockSelectFunc = s3ClockSelect;
numClocks = 16;
@@ -1484,12 +1626,16 @@ s3Probe()
}
} else if (OFLG_ISSET(CLOCK_OPTION_S3GENDAC, &s3InfoRec.clockOptions)) {
maxRawClock = 110000;
+ } else if (OFLG_ISSET(CLOCK_OPTION_ICS5342, &s3InfoRec.clockOptions)) {
+ maxRawClock = 110000;
} else if (OFLG_ISSET(CLOCK_OPTION_TI3025, &s3InfoRec.clockOptions)) {
maxRawClock = s3InfoRec.dacSpeed; /* Is this right?? */
} else if (OFLG_ISSET(CLOCK_OPTION_ICS2595, &s3InfoRec.clockOptions)) {
maxRawClock = 145000; /* This is what is in common_hw/ICS2595.h */
} else if (OFLG_ISSET(CLOCK_OPTION_CH8391, &s3InfoRec.clockOptions)) {
maxRawClock = 135000;
+ } else if (OFLG_ISSET(CLOCK_OPTION_S3TRIO, &s3InfoRec.clockOptions)) {
+ maxRawClock = 135000;
} else {
/* Shouldn't get here */
maxRawClock = 0;
@@ -1554,6 +1700,15 @@ s3Probe()
}
}
break;
+ case S3_TRIO32_DAC:
+ case S3_TRIO64_DAC:
+ if (s3ATT498PixMux)
+ s3InfoRec.maxClock = s3InfoRec.dacSpeed;
+ else if (s3Bpp < 4)
+ s3InfoRec.maxClock = 80000;
+ else
+ s3InfoRec.maxClock = 50000;
+ break;
case TI3020_DAC:
clockDoublingPossible = TRUE;
s3InfoRec.maxClock = s3InfoRec.dacSpeed; /* looks like the same limit */
@@ -1649,6 +1804,13 @@ s3Probe()
if (!OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &s3InfoRec.clockOptions)) {
Bool clocksChanged = FALSE;
+ Bool numClocksChanged = FALSE;
+ int newNumClocks = s3InfoRec.clocks;
+
+ if (S3_864_SERIES(s3ChipId))
+ nonMuxMaxClock = 95000;
+ else if (S3_805_I_SERIES(s3ChipId))
+ nonMuxMaxClock = 90000; /* XXXX just a guess, who has 805i docs? */
for (j = 0; j < s3InfoRec.clocks; j++) {
switch(s3RamdacType) {
@@ -1678,12 +1840,22 @@ s3Probe()
case STG1700_DAC: /* XXXX should this be here? */
switch (s3Bpp) {
case 1:
- /*
- * This one depends on pixel multiplexing for 8bpp.
- * Although existing code implies it depends on ramdac
- * clock doubling instead (are the two tied together?)
- * Hopefully no 498s are used with non-programable clocks
- */
+ if (!numClocksChanged) {
+ newNumClocks = 32;
+ numClocksChanged = TRUE;
+ clocksChanged = TRUE;
+ for(i = s3InfoRec.clocks; i < newNumClocks; i++)
+ s3InfoRec.clock[j] = 0; /* XXXX is clock[] initialized? */
+ if (s3InfoRec.clocks > 16)
+ s3InfoRec.clocks = 16;
+ }
+ if (s3InfoRec.clock[j] * 2 > pixMuxMinClock &&
+ s3InfoRec.clock[j] * 2 <= s3InfoRec.dacSpeed)
+ s3InfoRec.clock[j + 16] = s3InfoRec.clock[j] * 2;
+ else
+ s3InfoRec.clock[j + 16] = 0;
+ if (s3InfoRec.clock[j] > nonMuxMaxClock)
+ s3InfoRec.clock[j] = 0;
break;
case 2:
/* No change for 16bpp */
@@ -1709,6 +1881,8 @@ s3Probe()
case TI3025_DAC:
case S3_SDAC_DAC:
case S3_GENDAC_DAC:
+ case S3_TRIO32_DAC:
+ case S3_TRIO64_DAC:
/*
* We should never get here since these have a programmable
* clock built in.
@@ -1719,6 +1893,9 @@ s3Probe()
break;
}
}
+ if (numClocksChanged)
+ s3InfoRec.clocks = newNumClocks;
+
if (xf86Verbose && clocksChanged) {
ErrorF("%s %s: Effective pixel clocks available for depth %d:\n",
XCONFIG_PROBED, s3InfoRec.name, s3InfoRec.depth);
@@ -1742,7 +1919,8 @@ s3Probe()
} else if ((OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options) &&
DAC_IS_BT485_SERIES) ||
(OFLG_ISSET(OPTION_TI3020_CURS, &s3InfoRec.options) &&
- DAC_IS_TI3020_SERIES)) {
+ DAC_IS_TI3020_SERIES) ||
+ OFLG_ISSET(OPTION_SW_CURSOR, &s3InfoRec.options)) {
maxDisplayWidth = 2048;
maxDisplayHeight = 4096;
} else {
@@ -1819,7 +1997,16 @@ s3Probe()
* and mark those modes for which pixmux must be used.
*/
if (pixMuxPossible) {
- if ((s3InfoRec.clock[pMode->Clock] / 1000) >
+ if (s3Bpp == 1 && s3ATT498PixMux && !DAC_IS_SDAC &&
+ (S3_864_SERIES(s3ChipId) || S3_805_I_SERIES(s3ChipId))
+ && !OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE,
+ &s3InfoRec.clockOptions)) {
+ if (pMode->Clock > 15) {
+ pMode->Flags |= V_PIXMUX;
+ pixMuxNeeded = TRUE;
+ }
+ }
+ else if ((s3InfoRec.clock[pMode->Clock] / 1000) >
(nonMuxMaxClock / 1000)) {
pMode->Flags |= V_PIXMUX;
pixMuxNeeded = TRUE;
@@ -1994,9 +2181,10 @@ s3Probe()
*/
if (( DAC_IS_ATT20C498 && pMode->SynthClock > nonMuxMaxClock) ||
(!DAC_IS_ATT20C498 && pMode->SynthClock > 67500)) {
- if (!S3_864_SERIES(s3ChipId) || !DAC_IS_SDAC)
+ if (!(DAC_IS_SDAC)) {
pMode->SynthClock /= 2;
- pMode->Flags |= V_DBLCLK;
+ pMode->Flags |= V_DBLCLK;
+ }
}
break;
case 2:
@@ -2007,6 +2195,25 @@ s3Probe()
break;
}
break;
+ case S3_TRIO32_DAC:
+ case S3_TRIO64_DAC:
+ switch (s3Bpp) {
+ case 1:
+#if 0
+ /* XXXX pMode->SynthClock /= 2 might be better with sr15 &= ~0x40
+ in s3init.c if screen wouldn't completely blank... */
+ if (pMode->SynthClock > nonMuxMaxClock) {
+ pMode->SynthClock /= 2;
+ pMode->Flags |= V_DBLCLK;
+ }
+#endif
+ break;
+ case 2:
+ case 4:
+ /* No change for 16bpp and 24bpp */
+ break;
+ }
+ break;
case ATT20C490_DAC:
case SC15025_DAC:
case S3_GENDAC_DAC:
@@ -2110,7 +2317,8 @@ s3Probe()
*/
if (OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options) ||
- OFLG_ISSET(OPTION_TI3020_CURS, &s3InfoRec.options)) {
+ OFLG_ISSET(OPTION_TI3020_CURS, &s3InfoRec.options) ||
+ OFLG_ISSET(OPTION_SW_CURSOR, &s3InfoRec.options)) {
s3CursorStartY = s3InfoRec.virtualY;
s3CursorLines = 0;
} else {
@@ -2186,6 +2394,7 @@ s3ClockSelect(no)
outb(vgaCRReg, save2);
break;
default:
+ no &= 0xF;
if (no == 0x03)
{
/*
@@ -2290,8 +2499,8 @@ icd2061ClockSelect(freq)
if (!OFLG_ISSET(CLOCK_OPTION_ICS2595, &s3InfoRec.clockOptions)) {
outb(vgaCRIndex, 0x42);/* select the clock */
if (OFLG_ISSET(OPTION_SPEA_MERCURY, &s3InfoRec.options) &&
- S3_964_SERIES(s3ChipId)) /* SPEA Mercury P64 uses bit3 */
- outb(vgaCRReg, 0x0a); /* for synchronizing reasons */
+ S3_964_SERIES(s3ChipId)) /* SPEA Mercury P64 uses bit2/3 */
+ outb(vgaCRReg, 0x06); /* for synchronizing reasons (?) */
else outb(vgaCRReg, 0x02);
usleep(150000);
}
@@ -2303,7 +2512,7 @@ icd2061ClockSelect(freq)
}
-/* The GENDAC code also works for the SDAC */
+/* The GENDAC code also works for the SDAC, used for Trio32/Trio64 too */
static Bool
s3GendacClockSelect(freq)
@@ -2322,10 +2531,18 @@ s3GendacClockSelect(freq)
break;
default:
{
- (void) S3gendacSetClock(freq, 2); /* can't fail */
- outb(vgaCRIndex, 0x42);/* select the clock */
- outb(vgaCRReg, 0x02);
- usleep(150000);
+ if (S3_TRIOxx_SERIES(s3ChipId)) {
+ (void) S3TrioSetClock(freq, 2); /* can't fail */
+ }
+ else {
+ if (OFLG_ISSET(CLOCK_OPTION_ICS5342, &s3InfoRec.clockOptions))
+ (void) ICS5342SetClock(freq, 2); /* can't fail */
+ else
+ (void) S3gendacSetClock(freq, 2); /* can't fail */
+ outb(vgaCRIndex, 0x42);/* select the clock */
+ outb(vgaCRReg, 0x02);
+ usleep(150000);
+ }
}
}
LOCK_SYS_REGS;
@@ -2393,9 +2610,7 @@ ch8391ClockSelect(freq)
result = FALSE;
break;
}
-#ifdef CH8391
(void) Chrontel8391SetClock(freq, 2); /* can't fail */
-#endif
outb(vgaCRIndex, 0x42);/* select the clock */
outb(vgaCRReg, 0x02);
usleep(150000);
diff --git a/xc/programs/Xserver/hw/xfree86/accel/s3/s3.h b/xc/programs/Xserver/hw/xfree86/accel/s3/s3.h
index 9daba0e08..7f23950c0 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/s3/s3.h
+++ b/xc/programs/Xserver/hw/xfree86/accel/s3/s3.h
@@ -1,5 +1,5 @@
-/* $XConsortium: s3.h,v 1.5 94/12/27 11:29:42 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3.h,v 3.17 1995/01/10 10:55:01 dawes Exp $ */
+/* $XConsortium: s3.h,v 1.6 95/01/16 13:16:48 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3.h,v 3.18 1995/01/20 04:20:29 dawes Exp $ */
/*
* Copyright 1992 by Kevin E. Martin, Chapel Hill, North Carolina.
*
@@ -183,6 +183,8 @@ extern Bool s3ATT498PixMux;
#define S3_SDAC_DAC 9
#define S3_GENDAC_DAC 10
#define ATT22C498_DAC 11
+#define S3_TRIO32_DAC 12
+#define S3_TRIO64_DAC 13
#define DAC_IS_BT485_SERIES (s3RamdacType == BT485_DAC || \
s3RamdacType == ATT20C505_DAC)
@@ -198,6 +200,9 @@ extern Bool s3ATT498PixMux;
#define DAC_IS_STG1700 (s3RamdacType == STG1700_DAC)
#define DAC_IS_SDAC (s3RamdacType == S3_SDAC_DAC)
#define DAC_IS_GENDAC (s3RamdacType == S3_GENDAC_DAC)
+#define DAC_IS_TRIO32 (s3RamdacType == S3_TRIO32_DAC)
+#define DAC_IS_TRIO64 (s3RamdacType == S3_TRIO64_DAC)
+#define DAC_IS_TRIO (DAC_IS_TRIO32 || DAC_IS_TRIO64)
/* Function Prototypes */
diff --git a/xc/programs/Xserver/hw/xfree86/accel/s3/s3Cursor.c b/xc/programs/Xserver/hw/xfree86/accel/s3/s3Cursor.c
index 773eb060f..256f8e4d5 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/s3/s3Cursor.c
+++ b/xc/programs/Xserver/hw/xfree86/accel/s3/s3Cursor.c
@@ -1,6 +1,6 @@
/*
- * $XConsortium: s3Cursor.c,v 1.3 94/10/12 20:07:37 kaleb Exp kaleb $
- * $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3Cursor.c,v 3.10 1995/01/12 12:03:08 dawes Exp $
+ * $XConsortium: s3Cursor.c,v 1.4 95/01/16 13:16:49 kaleb Exp kaleb $
+ * $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3Cursor.c,v 3.13 1995/01/21 14:07:34 dawes Exp $
*
* Copyright 1991 MIPS Computer Systems, Inc.
*
@@ -101,6 +101,7 @@ extern unsigned char s3SwapBits[256];
static int s3CursGeneration = -1;
static CursorPtr s3SaveCursors[MAXSCREENS];
+static Bool useSWCursor = FALSE;
extern int s3hotX, s3hotY;
@@ -122,7 +123,10 @@ s3CursorInit(pm, pScr)
s3ReloadCursor = FALSE;
if (s3CursGeneration != serverGeneration) {
- if (OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options)) {
+ if (OFLG_ISSET(OPTION_SW_CURSOR, &s3InfoRec.options)) {
+ useSWCursor = TRUE;
+ miDCInitialize (pScr, &xf86PointerScreenFuncs);
+ } else if (OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options)) {
if (!(miPointerInitialize(pScr, &s3BtPointerSpriteFuncs,
&xf86PointerScreenFuncs, FALSE)))
return FALSE;
@@ -132,6 +136,7 @@ s3CursorInit(pm, pScr)
return FALSE;
} else if (s3InfoRec.bitsPerPixel == 32
&& S3_928_SERIES(s3ChipId) && !S3_x64_SERIES(s3ChipId)) {
+ useSWCursor = TRUE;
miDCInitialize (pScr, &xf86PointerScreenFuncs);
} else {
if (!(miPointerInitialize(pScr, &s3PointerSpriteFuncs,
@@ -147,6 +152,9 @@ s3CursorInit(pm, pScr)
void
s3ShowCursor()
{
+ if (useSWCursor)
+ return;
+
if (OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options))
s3BtCursorOn();
else if (OFLG_ISSET(OPTION_TI3020_CURS, &s3InfoRec.options))
@@ -157,6 +165,9 @@ s3ShowCursor()
void
s3HideCursor()
{
+ if (useSWCursor)
+ return;
+
if (OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options))
s3BtCursorOff();
else if (OFLG_ISSET(OPTION_TI3020_CURS, &s3InfoRec.options))
@@ -179,6 +190,9 @@ s3RealizeCursor(pScr, pCurs)
unsigned short *ram;
CursorBitsPtr bits = pCurs->bits;
+ if (useSWCursor)
+ return TRUE;
+
if (pCurs->bits->refcnt > 1)
return TRUE;
@@ -368,6 +382,9 @@ s3SetCursor(pScr, pCurs, x, y, generateEvent)
if (!pCurs)
return;
+ if (useSWCursor)
+ return;
+
s3hotX = pCurs->bits->xhot;
s3hotY = pCurs->bits->yhot;
s3SaveCursors[index] = pCurs;
@@ -390,6 +407,9 @@ s3RestoreCursor(pScr)
int index = pScr->myNum;
int x, y;
+ if (useSWCursor)
+ return;
+
s3ReloadCursor = FALSE;
miPointerPosition(&x, &y);
if (OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options))
@@ -406,6 +426,9 @@ s3RepositionCursor(pScr)
{
int x, y;
+ if (useSWCursor)
+ return;
+
miPointerPosition(&x, &y);
if (OFLG_ISSET(OPTION_BT485_CURS, &s3InfoRec.options))
s3BtMoveCursor(pScr, x, y);
@@ -426,6 +449,9 @@ s3MoveCursor(pScr, x, y)
unsigned char xoff, yoff;
extern int s3AdjustCursorXPos;
+ if (useSWCursor)
+ return;
+
if (!xf86VTSema)
return;
@@ -435,10 +461,12 @@ s3MoveCursor(pScr, x, y)
x -= s3InfoRec.frameX0 - s3AdjustCursorXPos;
y -= s3InfoRec.frameY0;
- if (!S3_x64_SERIES(s3ChipId) && !S3_805_I_SERIES(s3ChipId))
- x *= s3Bpp;
- else if (s3Bpp > 2)
- x *= 2;
+ if (!S3_TRIOxx_SERIES(s3ChipId)) {
+ if (!S3_x64_SERIES(s3ChipId) && !S3_805_I_SERIES(s3ChipId))
+ x *= s3Bpp;
+ else if (s3Bpp > 2)
+ x *= 2;
+ }
x -= s3hotX;
y -= s3hotY;
@@ -515,6 +543,9 @@ s3RecolorCursor(pScr, pCurs, displayed)
unsigned short packedcolfg, packedcolbg;
xColorItem sourceColor, maskColor;
+ if (useSWCursor)
+ return;
+
switch (s3InfoRec.bitsPerPixel) {
case 8:
s3GetInstalledColormaps(pScr, &pmap);
@@ -528,11 +559,25 @@ s3RecolorCursor(pScr, pCurs, displayed)
FakeAllocColor(pmap, &maskColor);
FakeFreeColor(pmap, sourceColor.pixel);
FakeFreeColor(pmap, maskColor.pixel);
-
- outb(vgaCRIndex, 0x0E);
- outb(vgaCRReg, sourceColor.pixel);
- outb(vgaCRIndex, 0x0F);
- outb(vgaCRReg, maskColor.pixel);
+
+ if (S3_TRIOxx_SERIES(s3ChipId)) {
+ outb(vgaCRIndex, 0x45);
+ inb(vgaCRReg); /* reset stack pointer */
+ outb(vgaCRIndex, 0x4A);
+ outb(vgaCRReg, sourceColor.pixel);
+ outb(vgaCRReg, sourceColor.pixel);
+ outb(vgaCRIndex, 0x45);
+ inb(vgaCRReg); /* reset stack pointer */
+ outb(vgaCRIndex, 0x4B);
+ outb(vgaCRReg, maskColor.pixel);
+ outb(vgaCRReg, maskColor.pixel);
+ }
+ else {
+ outb(vgaCRIndex, 0x0E);
+ outb(vgaCRReg, sourceColor.pixel);
+ outb(vgaCRIndex, 0x0F);
+ outb(vgaCRReg, maskColor.pixel);
+ }
break;
case 16:
if (s3InfoRec.depth == 15) {
diff --git a/xc/programs/Xserver/hw/xfree86/accel/s3/s3Ti3020.h b/xc/programs/Xserver/hw/xfree86/accel/s3/s3Ti3020.h
index 3b07d2e2a..6771bc4f4 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/s3/s3Ti3020.h
+++ b/xc/programs/Xserver/hw/xfree86/accel/s3/s3Ti3020.h
@@ -1,5 +1,5 @@
-/* $XConsortium: s3Ti3020.h,v 1.2 94/10/12 20:07:37 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3Ti3020.h,v 3.8 1994/10/30 04:44:01 dawes Exp $ */
+/* $XConsortium: s3Ti3020.h,v 1.3 94/12/27 11:29:42 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3Ti3020.h,v 3.9 1995/01/21 14:07:36 dawes Exp $ */
/*
* Copyright 1994 by Robin Cutshaw <robin@paros.com>
*
@@ -172,6 +172,7 @@
#define TI_COLOR_KEY_BLUE_LOW 0x36
#define TI_COLOR_KEY_BLUE_HIGH 0x37
#define TI_COLOR_KEY_CONTROL 0x38
+#define TI_MCLK_DCLK_CONTROL 0x39 /* 3025 only */
#define TI_SENSE_TEST 0x3A
#define TI_TEST_DATA 0x3B
#define TI_CRC_LOW 0x3C
diff --git a/xc/programs/Xserver/hw/xfree86/accel/s3/s3fcach.c b/xc/programs/Xserver/hw/xfree86/accel/s3/s3fcach.c
index e2e2b273d..9e2e2cc2c 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/s3/s3fcach.c
+++ b/xc/programs/Xserver/hw/xfree86/accel/s3/s3fcach.c
@@ -1,5 +1,5 @@
-/* $XConsortium: s3fcach.c,v 1.2 94/10/12 20:07:37 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3fcach.c,v 3.10 1994/12/25 12:23:45 dawes Exp $ */
+/* $XConsortium: s3fcach.c,v 1.3 95/01/06 20:57:18 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3fcach.c,v 3.13 1995/01/21 13:04:19 dawes Exp $ */
/*
* Copyright 1992 by Kevin E. Martin, Chapel Hill, North Carolina.
*
@@ -58,64 +58,94 @@ extern Bool xf86Verbose;
#define MAX_PIXMAP_WIDTH 64
#define MIN_PIXMAP_WIDTH 8
#define MIN_FONTCACHE_HEIGHT 13
+#define MIN_FONTCACHE_WIDTH (32 * 6)
void
s3FontCache8Init()
{
static int first = TRUE;
- int x, y, w, h, pmwidth;
+ int x, y, w, h, pmwidth = 0, pmx, pmy;
+ int x2, y2, w2, h2;
int BitPlane;
CachePool FontPool;
/* y now includes the cursor space */
- x = 0;
- y = s3CursorStartY + s3CursorLines;
- h = s3ScissB + 1 - y;
- w = s3DisplayWidth;
- /*
- If the area to the right of the virtual screen is larger than the
- area below it, then use the area to the right.
- */
- if (h*w < y*(s3DisplayWidth-s3InfoRec.virtualX)) {
- h = y;
- w = s3DisplayWidth - s3InfoRec.virtualX;
- x = s3InfoRec.virtualX;
- y = 0;
- }
+ x = x2 = 0;
+ y = y2 = s3CursorStartY + s3CursorLines;
+ h = h2 = s3ScissB + 1 - y;
+ w = w2 = s3DisplayWidth;
/*
- * No pixmap expansion if s3DisplayWidth < 1024 and less than 100 scanlines
- * available for the font cache.
+ * If a full-size pixmap expansion area will fit to the right, put it
+ * there.
*/
-
- if ((h < MIN_PIXMAP_WIDTH) ||
- ((s3DisplayWidth < 1024) && (h < MIN_PIXMAP_WIDTH + 100))) {
- ErrorF("%s %s: No pixmap expanding area available\n",
- XCONFIG_PROBED, s3InfoRec.name);
- } else {
- if( h > MAX_PIXMAP_WIDTH )
+ if (s3DisplayWidth - s3InfoRec.virtualX >= MAX_PIXMAP_WIDTH ||
+ s3DisplayWidth - s3InfoRec.virtualX >= h) {
+ /* use area at right of screen */
+ if (s3DisplayWidth - s3InfoRec.virtualX > MAX_PIXMAP_WIDTH)
+ pmwidth = MAX_PIXMAP_WIDTH;
+ else
+ pmwidth = s3DisplayWidth - s3InfoRec.virtualX;
+ pmx = s3InfoRec.virtualX;
+ pmy = 0;
+ /* Decide if font cache goes to the right or at the bottom */
+ if (((s3CursorStartY - pmwidth) * (s3DisplayWidth - s3InfoRec.virtualX) >
+ w * h) &&
+ ((s3DisplayWidth - s3InfoRec.virtualX) > MIN_FONTCACHE_WIDTH)) {
+ /* There are two possible rectangular areas to the right */
+ x = s3InfoRec.virtualX;
+ w = s3DisplayWidth - x;
+ y = pmwidth;
+ h = s3CursorStartY - y;
+ x2 = x + pmwidth;
+ w2 = w - pmwidth;
+ y2 = y - pmwidth;
+ h2 = h + pmwidth;
+ }
+ } else if (h >= MIN_PIXMAP_WIDTH) {
+ /* use area below screen, right most location */
+ if (h > MAX_PIXMAP_WIDTH )
pmwidth = MAX_PIXMAP_WIDTH;
else
pmwidth = h;
+ pmx = s3DisplayWidth - pmwidth;
+ pmy = y;
+ /*
+ * If the area to the right is too narrow for the pixmap, it is also
+ * too narrow for the font cache, so it goes at the bottom. There are
+ * two possible rectangular areas to the bottom.
+ */
+ /* x, y, h unchanged */
+ w -= pmwidth;
+ /* x2, w2 unchanged */
+ y2 += pmwidth;
+ h2 -= pmwidth;
+ }
- if (s3DisplayWidth < 1024 || x > 0) {
- if (first) {
- s3InitFrect(x, y, pmwidth);
- }
- y += pmwidth;
- h -= pmwidth;
- } else {
- w -= pmwidth;
- if (first) {
- s3InitFrect(w, y, pmwidth);
- }
+ /* Initialise the pixmap expansion area */
+ if (pmwidth > 0) {
+ s3InitFrect(pmx, pmy, pmwidth);
+ if (first) {
+ ErrorF(
+ "%s %s: Using a single %dx%d area at (%d,%d) for expanding pixmaps\n",
+ XCONFIG_PROBED, s3InfoRec.name, pmwidth, pmwidth, pmx, pmy);
}
+ } else {
if (first) {
- ErrorF("%s %s: Using a single %dx%d area for expanding pixmaps\n",
- XCONFIG_PROBED, s3InfoRec.name, pmwidth, pmwidth);
+ ErrorF("%s %s: No pixmap expanding area available\n",
+ XCONFIG_PROBED, s3InfoRec.name);
}
}
-
+
+ /* Choose the largest font cache area */
+ if ((w2 * h2 > w * h) && (w2 > MIN_FONTCACHE_WIDTH) &&
+ (h2 > MIN_FONTCACHE_HEIGHT)) {
+ x = x2;
+ w = w2;
+ y = y2;
+ h = h2;
+ }
+
/*
* Don't allow a font cache if we don't have room for at least
* a complete 6x13 font.
diff --git a/xc/programs/Xserver/hw/xfree86/accel/s3/s3init.c b/xc/programs/Xserver/hw/xfree86/accel/s3/s3init.c
index ab658408e..2e4dfe417 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/s3/s3init.c
+++ b/xc/programs/Xserver/hw/xfree86/accel/s3/s3init.c
@@ -1,5 +1,5 @@
-/* $XConsortium: s3init.c,v 1.4 95/01/06 20:57:20 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3init.c,v 3.45 1995/01/12 12:03:12 dawes Exp $ */
+/* $XConsortium: s3init.c,v 1.5 95/01/16 13:16:52 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3init.c,v 3.51 1995/01/23 01:29:26 dawes Exp $ */
/*
* Written by Jake Richter Copyright (c) 1989, 1990 Panacea Inc.,
* Londonderry, NH - All Rights Reserved
@@ -56,6 +56,7 @@ typedef struct {
unsigned char Ti3025[9]; /* Ti3025 N,M,P for PCLK, MCLK, LOOP PLL */
unsigned char STG1700[5]; /* STG1700 index and command registers */
unsigned char SDAC[6]; /* S3 SDAC command and PLL registers */
+ unsigned char Trio[8]; /* Trio32/64 ext. sequenzer (PLL) registers */
unsigned char s3reg[10]; /* Video Atribute (CR30-34, CR38-3C) */
unsigned char s3sysreg[46]; /* Video Atribute (CR40-6D)*/
}
@@ -65,6 +66,7 @@ int vgaIOBase = 0x3d0; /* These defaults are overriden in s3Probe() */
int vgaCRIndex = 0x3d4;
int vgaCRReg = 0x3d5;
int s3InitCursorFlag = TRUE;
+int s3HDisplay;
extern xf86InfoRec xf86Info;
static vgaS3Ptr oldS3 = NULL;
@@ -205,6 +207,23 @@ s3CleanUp(void)
outb(vgaCRReg, tmp & ~1);
}
+ /* Restore S3 Trio32/64 ext. sequenzer (PLL) registers */
+ if (DAC_IS_TRIO)
+ {
+ outb(0x3c2, oldS3->Trio[0]);
+ outb(0x3c4, 0x08); outb(0x3c5, 0x06);
+
+ outb(0x3c4, 0x09); outb(0x3c5, oldS3->Trio[2]);
+ outb(0x3c4, 0x0a); outb(0x3c5, oldS3->Trio[3]);
+ outb(0x3c4, 0x0b); outb(0x3c5, oldS3->Trio[4]);
+ outb(0x3c4, 0x0d); outb(0x3c5, oldS3->Trio[5]);
+ outb(0x3c4, 0x15); outb(0x3c5, oldS3->Trio[6]);
+ outb(0x3c4, 0x18); outb(0x3c5, oldS3->Trio[7]);
+
+ outb(0x3c4, 0x08); outb(0x3c5, oldS3->Trio[1]);
+
+ }
+
/*
* Restore Sierra SC 15025/6 registers.
*/
@@ -362,6 +381,8 @@ s3Init(mode)
extern Bool s3DAC8Bit, s3DACSyncOnGreen;
int pixMuxShift = 0;
+ s3HDisplay = mode->HDisplay;
+
UNLOCK_SYS_REGS;
/* Force use of colour I/O address */
@@ -392,7 +413,7 @@ s3Init(mode)
* Set up the Serial Access Mode 256 Words Control
* (bit 6 in CR58)
*/
- if (S3_964_SERIES(s3ChipId) && !DAC_IS_TI3025)
+ if (S3_964_SERIES(s3ChipId))
s3SAM256 = 0x40;
else if ((OFLG_ISSET(OPTION_SPEA_MERCURY, &s3InfoRec.options) &&
S3_928_ONLY(s3ChipId)) ||
@@ -455,6 +476,26 @@ s3Init(mode)
outb(vgaCRReg, tmp & ~1);
}
+ /* Save S3 Trio32/64 ext. sequenzer (PLL) registers */
+ if (DAC_IS_TRIO)
+ {
+ oldS3->Trio[0] = inb(0x3cc);
+
+ outb(0x3c4, 0x08); oldS3->Trio[1] = inb(0x3c5);
+ outb(0x3c5, 0x06);
+
+ outb(0x3c4, 0x09); oldS3->Trio[2] = inb(0x3c5);
+ outb(0x3c4, 0x0a); oldS3->Trio[3] = inb(0x3c5);
+ outb(0x3c4, 0x0b); oldS3->Trio[4] = inb(0x3c5);
+ outb(0x3c4, 0x0d); oldS3->Trio[5] = inb(0x3c5);
+ outb(0x3c4, 0x15); oldS3->Trio[6] = inb(0x3c5) & 0xfe;
+ outb(0x3c5, oldS3->Trio[6]);
+ outb(0x3c4, 0x18); oldS3->Trio[7] = inb(0x3c5);
+
+ outb(0x3c4, 8);
+ outb(0x3c5, 0x00);
+ }
+
/*
* Save Sierra SC15025/6 command registers.
*/
@@ -615,6 +656,8 @@ s3Init(mode)
else if (S3_864_SERIES(s3ChipId) || S3_805_I_SERIES(s3ChipId))
/* && (DAC_IS_ATT498 || DAC_IS_STG1700) */
pixMuxShift = -(s3Bpp>>1); /* for 16/32 bpp */
+ else if (S3_TRIOxx_SERIES(s3ChipId))
+ pixMuxShift = -(s3Bpp == 2);
else if (S3_x64_SERIES(s3ChipId)) /* XXXX Better to test the DAC type? */
pixMuxShift = 0;
else if ((S3_928_SERIES(s3ChipId) &&
@@ -811,7 +854,7 @@ s3Init(mode)
}
}
- /* NO 8bit mode for S3 SDAC or GENDAC */
+ /* NO 8bit mode for S3 SDAC or GENDAC or Trio32/64 */
/*
* Set Sierra SC 15025/6 command registers to 8-bit mode if desired.
@@ -1159,6 +1202,71 @@ s3Init(mode)
outb(0x3C5, tmp2); /* unblank the screen */
}
+ if (DAC_IS_TRIO)
+ {
+ int pixmux = 0; /* SDAC command and CR67 */
+ int invert_vclk = 0; /* CR66 bit 0 */
+ int sr8, sr15, sr18, cr33;
+
+ outb(0x3C4, 1);
+ tmp2 = inb(0x3C5);
+ outb(0x3C5, tmp2 | 0x20); /* blank the screen */
+
+ outb(0x3c4, 0x08);
+ sr8 = inb(0x3c5);
+ outb(0x3c5, 0x06);
+ outb(0x3c4, 0x15);
+ sr15 = inb(0x3c5) & ~0x10; /* XXXX ~0x40 and SynthClock /= 2 in s3.c might be better... */
+ outb(0x3c4, 0x18);
+ sr18 = inb(0x3c5) & ~0x80;
+ outb(vgaCRIndex, 0x33);
+ cr33 = (inb(vgaCRReg) & ~0x08) | 0x20;
+
+ if (s3PixelMultiplexing)
+ {
+ /* x64:pixmux */
+ /* pixmux with 16/32 bpp not possible for 864 ==> only 8bit mode */
+ pixmux = 0x10; /* two 8bit pixels per clock */
+ invert_vclk = 2; /* XXXX strange: reserved bit which helps! */
+ sr15 |= 0x10; /* XXXX 0x40? see above! */
+ sr18 |= 0x80;
+ }
+ else
+ {
+ switch (s3InfoRec.bitsPerPixel)
+ {
+ case 8: /* 8-bit color, 1 VCLK/pixel */
+ break;
+
+ case 16: /* 15/16-bit color, 1VCLK/pixel */
+ cr33 |= 0x08;
+ if (s3Weight == RGB16_555)
+ pixmux = 0x30;
+ else
+ pixmux = 0x50;
+ break;
+
+ case 32: /* 32-bit color, 2VCLK/pixel */
+ pixmux = 0xd0;
+ }
+ }
+
+ outb(vgaCRReg, cr33);
+
+ outb(vgaCRIndex, 0x67);
+ outb(vgaCRReg, pixmux | invert_vclk); /* set S3 mux mode */
+
+ outb(0x3c4, 0x15);
+ outb(0x3c5, sr15);
+ outb(0x3c4, 0x18);
+ outb(0x3c5, sr18);
+ outb(0x3c4, 0x08);
+ outb(0x3c5, sr8);
+
+ outb(0x3C4, 1);
+ outb(0x3C5, tmp2); /* unblank the screen */
+ }
+
if (DAC_IS_BT485_SERIES) {
outb(0x3C4, 1);
tmp2 = inb(0x3C5);
@@ -1381,8 +1489,7 @@ s3Init(mode)
outb(vgaCRIndex, 0x65);
if (DAC_IS_TI3025) {
- outb(vgaCRReg, 0x82);
- /* was 0x02 for all, now 0x82 is required on new ones */
+ outb(vgaCRReg, 0);
} else {
/* set s3 reg65 for some unknown reason */
if (s3InfoRec.bitsPerPixel == 32)
@@ -1573,21 +1680,37 @@ s3Init(mode)
s3OutTiIndReg(TI_GENERAL_IO_DATA, 0x00, TI_GID_TI_DAC_6BIT);
}
if (DAC_IS_TI3025) {
- outb(vgaCRIndex, 0x6D); /* set blank delay */
- if (s3InfoRec.bitsPerPixel == 32) {
- outb(vgaCRReg, 0x00);
- } else if (s3InfoRec.bitsPerPixel == 16) {
- if (mode->Flags & V_DBLCLK)
- outb(vgaCRReg, 0x00);
- else
- outb(vgaCRReg, 0x01);
- } else if (s3InfoRec.bitsPerPixel == 8) {
- if (mode->Flags & V_DBLCLK)
- outb(vgaCRReg, 0x01);
+ if (OFLG_ISSET(OPTION_NUMBER_NINE, &s3InfoRec.options)) {
+ outb(vgaCRIndex, 0x6D); /* set blank delay */
+ if (s3InfoRec.bitsPerPixel == 32)
+ if (mode->Flags & V_DBLCLK)
+ outb(vgaCRReg, 0x10);
+ else
+ outb(vgaCRReg, 0x20);
+ else if (s3InfoRec.bitsPerPixel == 16)
+ if (mode->Flags & V_DBLCLK)
+ outb(vgaCRReg, 0x20);
+ else
+ outb(vgaCRReg, 0x31);
else
- outb(vgaCRReg, 0x04);
- }
- }
+ outb(vgaCRReg, 0x20);
+ }
+ else {
+ outb(vgaCRIndex, 0x6D);
+ if (s3Bpp == 1)
+ if (mode->Flags & V_DBLCLK)
+ outb(vgaCRReg, 0x02);
+ else
+ outb(vgaCRReg, 0x03);
+ else if (s3Bpp == 2)
+ if (mode->Flags & V_DBLCLK)
+ outb(vgaCRReg, 0x00);
+ else
+ outb(vgaCRReg, 0x01);
+ else /* (s3Bpp == 4) */
+ outb(vgaCRReg, 0x00);
+ }
+ }
} else {
/* set s3 reg53 to non-parallel addressing by and'ing 0xDF */
outb(vgaCRIndex, 0x53);
@@ -1671,7 +1794,8 @@ s3Init(mode)
if (OFLG_ISSET(OPTION_STB_PEGASUS, &s3InfoRec.options))
/* Blank border comes earlier than display enable. */
outb(vgaCRReg, 0x00);
- else outb(vgaCRReg, 0x20);
+ else if (!S3_TRIOxx_SERIES(s3ChipId))
+ outb(vgaCRReg, 0x20);
outb(vgaCRIndex, 0x34);
outb(vgaCRReg, 0x10); /* 1024 */
outb(vgaCRIndex, 0x35);
@@ -1955,9 +2079,11 @@ s3Init(mode)
* some Diamond Stealth 64 VRAM cards have a problem with VRAM timing,
* increase -RAS low timing from 3.5 MCLKs to 4.5 MCLKs
*/
+ outb(vgaCRIndex, 0x39);
+ outb(vgaCRReg, 0xa5);
outb(vgaCRIndex, 0x68);
tmp = inb(vgaCRReg);
- if (tmp & 0x30 == 0x30) /* 3.5 MCLKs */
+ if ((tmp & 0x30) == 0x30) /* 3.5 MCLKs */
outb(vgaCRReg, tmp & 0xef); /* 4.5 MCLKs */
}
if (OFLG_ISSET(OPTION_S3_964_BT485_VCLK, &s3InfoRec.options)) {
@@ -2026,6 +2152,8 @@ s3Init(mode)
(void) (s3ClockSelectFunc)(mode->SynthClock);
/* fixes the ICS2595 initialisation problems */
+ s3AdjustFrame(s3InfoRec.frameX0, s3InfoRec.frameY0);
+
#ifdef REG_DEBUG
for (i=0; i<10; i++) {
outb(vgaCRIndex, i);
@@ -2241,4 +2369,3 @@ s3Unlock()
outb(vgaCRReg, 0x00);
}
-
diff --git a/xc/programs/Xserver/hw/xfree86/accel/s3/s3misc.c b/xc/programs/Xserver/hw/xfree86/accel/s3/s3misc.c
index 5d863dd30..a9b2544d6 100644
--- a/xc/programs/Xserver/hw/xfree86/accel/s3/s3misc.c
+++ b/xc/programs/Xserver/hw/xfree86/accel/s3/s3misc.c
@@ -1,6 +1,6 @@
-/* $XConsortium: s3misc.c,v 1.4 95/01/06 20:57:23 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3misc.c,v 3.21 1995/01/12 12:03:16 dawes Exp $ */
+/* $XConsortium: s3misc.c,v 1.5 95/01/16 13:16:54 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/s3/s3misc.c,v 3.22 1995/01/23 01:29:30 dawes Exp $ */
/*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
*
@@ -57,6 +57,7 @@ static Bool s3TryAddress();
extern ScreenPtr s3savepScreen;
static PixmapPtr ppix = NULL;
extern Bool s3Localbus;
+extern Bool s3VLB;
extern Bool s3LinearAperture;
extern int s3BankSize;
extern int s3DisplayWidth;
@@ -204,7 +205,9 @@ s3Initialize(scr_index, pScreen, argc, argv)
ErrorF("%s %s: Local bus LAW is 0x%03lXxxxxx\n",
XCONFIG_GIVEN, s3InfoRec.name, (addr >> 20));
} else {
- if (S3_x64_SERIES(s3ChipId)) {
+ if (S3_x64_SERIES(s3ChipId) &&
+ !(S3_TRIO64_SERIES(s3ChipId) &&
+ s3InfoRec.videoRam > 1024 && s3VLB)) {
/* So far, only tested for the PCI ELSA W2000Pro */
unsigned long addr;
@@ -594,12 +597,16 @@ s3AdjustFrame(int x, int y)
int Base, origBase;
unsigned char tmp;
extern int s3AdjustCursorXPos; /* for s3Cursor.c */
+ extern int s3HDisplay;
if (OFLG_ISSET(OPTION_SHOWCACHE, &s3InfoRec.options)) {
if ( debugcache & 1)
y += 512;
}
+ if (x > s3DisplayWidth - s3HDisplay)
+ x = s3DisplayWidth - s3HDisplay;
+
/* so may S3 cards have problems with some odd base addresses,
* to catch them all only even base values will be used.
*/
@@ -616,6 +623,18 @@ s3AdjustFrame(int x, int y)
Base = (Base & ~0x1f) | 0x19;
}
+ if (S3_964_SERIES(s3ChipId) && DAC_IS_TI3025) {
+ int px, py, a;
+ miPointerPosition(&px, &py);
+ if (s3Bpp==1)
+ a = 4-1;
+ else
+ a = 8-1;
+ if (px-x > s3HDisplay/2)
+ Base = ((origBase + a*4) >> 2) & ~1;
+ Base &= ~a;
+ }
+
outb(vgaCRIndex, 0x31);
outb(vgaCRReg, ((Base & 0x030000) >> 12) | s3Port31);
s3Port51 &= ~0x03;
diff --git a/xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c b/xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c
index e857d7ba1..22272233d 100644
--- a/xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c
+++ b/xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c
@@ -1,5 +1,5 @@
-/* $XConsortium: xf86Kbd.c,v 1.4 95/01/06 20:57:36 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c,v 3.3 1994/12/11 10:54:39 dawes Exp $ */
+/* $XConsortium: xf86Kbd.c,v 1.5 95/01/10 14:58:26 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c,v 3.4 1995/01/21 07:15:47 dawes Exp $ */
/*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
*
@@ -243,8 +243,21 @@ xf86KbdGetMapping (pKeySyms, pModMap)
#endif /* !AMOEBA && !MINIX && !__OSF__ */
char type;
int i, j;
+ KeySym *pMap;
#if !defined(AMOEBA) && !defined(MINIX) && !defined(__OSF__)
+ xf86Info.kbdType =
+ ioctl(xf86Info.consoleFd, KDGKBTYPE, &type) != -1 ? type : KB_101;
+ if (xf86Info.kbdType == KB_84)
+ pMap = map84;
+ else
+ pMap = map;
+#else
+ xf86Info.kbdType = 0;
+ pMap = map;
+#endif
+
+#if !defined(AMOEBA) && !defined(MINIX) && !defined(__OSF__)
/*
* use the keymap, which can be gotten from our oringinal vt??.
* ( ttymap(1) !!!! )
@@ -254,7 +267,7 @@ xf86KbdGetMapping (pKeySyms, pModMap)
if (remap[i]) {
- k = map + (remap[i] << 2);
+ k = pMap + (remap[i] << 2);
k[0] = KD_GET_ENTRY(i,0); /* non-shifed */
k[1] = KD_GET_ENTRY(i,1); /* shifted */
@@ -272,7 +285,7 @@ xf86KbdGetMapping (pKeySyms, pModMap)
/*
* Apply the special key mapping specified in XF86Config
*/
- for (k = map, i = MIN_KEYCODE;
+ for (k = pMap, i = MIN_KEYCODE;
i < (NUM_KEYCODES + MIN_KEYCODE);
i++, k += 4) {
switch (k[0]) {
@@ -327,7 +340,7 @@ xf86KbdGetMapping (pKeySyms, pModMap)
for (i = 0; i < MAP_LENGTH; i++)
pModMap[i] = NoSymbol; /* make sure it is restored */
- for (k = map, i = MIN_KEYCODE;
+ for (k = pMap, i = MIN_KEYCODE;
i < (NUM_KEYCODES + MIN_KEYCODE);
i++, k += 4)
@@ -373,15 +386,8 @@ xf86KbdGetMapping (pKeySyms, pModMap)
}
-#if !defined(AMOEBA) && !defined(MINIX) && !defined(__OSF__)
- xf86Info.kbdType =
- ioctl(xf86Info.consoleFd, KDGKBTYPE, &type) != -1 ? type : KB_101;
-#else
- xf86Info.kbdType = 0;
-#endif
-
- pKeySyms->map = map;
+ pKeySyms->map = pMap;
pKeySyms->mapWidth = GLYPHS_PER_KEY;
pKeySyms->minKeyCode = MIN_KEYCODE;
if (xf86Info.serverNumLock)
diff --git a/xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h b/xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h
index 909fbcd57..d7deb52ec 100644
--- a/xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h
+++ b/xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h
@@ -1,5 +1,5 @@
-/* $XConsortium: xf86Keymap.h,v 1.6 95/01/10 16:00:59 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h,v 3.1 1994/12/11 10:54:42 dawes Exp $ */
+/* $XConsortium: xf86Keymap.h,v 1.7 95/01/13 19:22:22 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h,v 3.3 1995/01/23 01:29:46 dawes Exp $ */
/*
* For Scancodes see notes in atKeynames.h !!!!
*/
@@ -146,15 +146,171 @@ static KeySym map[NUM_KEYCODES * GLYPHS_PER_KEY] = {
/* 0x88 */ XK_KP_3, NoSymbol, NoSymbol, NoSymbol,
/* 0x89 */ XK_KP_0, NoSymbol, NoSymbol, NoSymbol,
/* 0x8a */ XK_KP_Decimal, NoSymbol, NoSymbol, NoSymbol,
- /* 0x8b */ XK_KP_Home, NoSymbol, NoSymbol, NoSymbol,
- /* 0x8c */ XK_KP_Up, NoSymbol, NoSymbol, NoSymbol,
- /* 0x8d */ XK_KP_Prior, NoSymbol, NoSymbol, NoSymbol,
- /* 0x8e */ XK_KP_Left, NoSymbol, NoSymbol, NoSymbol,
- /* 0x8f */ XK_KP_Begin, NoSymbol, NoSymbol, NoSymbol,
- /* 0x90 */ XK_KP_Right, NoSymbol, NoSymbol, NoSymbol,
- /* 0x91 */ XK_KP_End, NoSymbol, NoSymbol, NoSymbol,
- /* 0x92 */ XK_KP_Down, NoSymbol, NoSymbol, NoSymbol,
- /* 0x93 */ XK_KP_Next, NoSymbol, NoSymbol, NoSymbol,
- /* 0x94 */ XK_KP_Insert, NoSymbol, NoSymbol, NoSymbol,
- /* 0x95 */ XK_KP_Delete, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8b */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8c */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8d */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8e */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8f */ XK_Begin, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x90 */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x91 */ XK_End, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x92 */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x93 */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x94 */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x95 */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
+};
+
+static KeySym map84[NUM_KEYCODES * GLYPHS_PER_KEY] = {
+ /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
+ /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
+ /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
+ /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
+ /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
+ /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
+ /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
+ /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
+ /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
+ /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
+ /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
+ /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
+ /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x0f */ XK_Tab, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
+ /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
+ /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
+ /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
+ /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
+ /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
+ /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
+ /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
+ /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
+ /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
+ /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
+ /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
+ /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
+ /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
+ /* 0x4c */ NoSymbol, XK_KP_5, NoSymbol, NoSymbol,
+ /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
+ /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
+ /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
+ /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
+ /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
+ /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
+ /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
+ /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
+
+ /* 0x59 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x5a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x5b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x5c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x5d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x5e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x5f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x60 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x61 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x62 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x63 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x64 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x65 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x66 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x67 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x68 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x69 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
+ /* 0x6a */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x6b */ XK_Meta_L, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x6c */ XK_Meta_R, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x6d */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x6e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x6f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x70 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x71 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x72 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x73 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x77 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x79 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x7a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x7b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x7d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x7e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x7f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+
+ /* These are for ServerNumLock handling */
+ /* 0x80 */ XK_KP_7, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x81 */ XK_KP_8, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x82 */ XK_KP_9, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x83 */ XK_KP_4, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x84 */ XK_KP_5, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x85 */ XK_KP_6, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x86 */ XK_KP_1, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x87 */ XK_KP_2, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x88 */ XK_KP_3, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x89 */ XK_KP_0, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8a */ XK_KP_Decimal, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8b */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8c */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8d */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8e */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x8f */ XK_Begin, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x90 */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x91 */ XK_End, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x92 */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x93 */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x94 */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
+ /* 0x95 */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
};
diff --git a/xc/programs/Xserver/hw/xfree86/common/xf86_Option.h b/xc/programs/Xserver/hw/xfree86/common/xf86_Option.h
index ef9b2a677..106d96061 100644
--- a/xc/programs/Xserver/hw/xfree86/common/xf86_Option.h
+++ b/xc/programs/Xserver/hw/xfree86/common/xf86_Option.h
@@ -1,5 +1,5 @@
-/* $XConsortium: xf86_Option.h,v 1.4 95/01/06 20:57:42 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86_Option.h,v 3.18 1995/01/15 10:33:13 dawes Exp $ */
+/* $XConsortium: xf86_Option.h,v 1.5 95/01/16 13:17:04 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86_Option.h,v 3.20 1995/01/20 04:21:00 dawes Exp $ */
/*
* Copyright 1993 by David Wexelblat <dwex@goblin.org>
*
@@ -82,6 +82,7 @@ typedef struct {
#define OPTION_SW_CURSOR 42 /* Turn off HW cursor (Mach32) */
#define OPTION_NO_BITBLT 43 /* Disable hardware bitblt (cirrus) */
#define OPTION_FAVOUR_BITBLT 44 /* Favour use of BitBLT (cirrus) */
+#define OPTION_NO_IMAGEBLT 45 /* Avoid system-to-video BitBLT (cirrus) */
/* RAMDAC options */
#define OPTION_BT485_CURS 50 /* Override Bt485 RAMDAC probe */
@@ -136,6 +137,8 @@ typedef struct {
#define CLOCK_OPTION_ICS2595 6 /* use TI3025 programmable clocks */
#define CLOCK_OPTION_CIRRUS 7 /* use Cirrus programmable clocks */
#define CLOCK_OPTION_CH8391 8 /* use Chrontel 8391 programmable clocks */
+#define CLOCK_OPTION_ICS5342 9 /* use ICS 5342 programmable clocks */
+#define CLOCK_OPTION_S3TRIO 10 /* use S3 Trio32/64 programmable clocks */
/*
* Table to map option strings to tokens.
@@ -179,6 +182,7 @@ OptFlagRec xf86_OptionTab[] = {
{ "no_bitblt", OPTION_NO_BITBLT },
{ "favour_bitblt", OPTION_FAVOUR_BITBLT },
{ "favor_bitblt", OPTION_FAVOUR_BITBLT },
+ { "no_imageblt", OPTION_NO_IMAGEBLT },
{ "bt485_curs", OPTION_BT485_CURS },
{ "ti3020_curs", OPTION_TI3020_CURS },
@@ -232,7 +236,10 @@ OptFlagRec xf86_ClockOptionTab [] = {
{ "s3gendac", CLOCK_OPTION_S3GENDAC }, /* S3 gendac */
{ "s3_sdac", CLOCK_OPTION_S3GENDAC }, /* S3 SDAC */
{ "ics5300", CLOCK_OPTION_S3GENDAC }, /* S3 gendac compatible */
- { "ics5342", CLOCK_OPTION_S3GENDAC }, /* S3 SDAC compatible */
+ { "ics5342", CLOCK_OPTION_ICS5342 }, /* not completely S3 SDAC compatible */
+ { "s3_trio", CLOCK_OPTION_S3TRIO }, /* S3 Trio32/64 */
+ { "s3_trio32", CLOCK_OPTION_S3TRIO }, /* S3 Trio32/64 */
+ { "s3_trio64", CLOCK_OPTION_S3TRIO }, /* S3 Trio32/64 */
{ "ti3025", CLOCK_OPTION_TI3025 }, /* TI3025 */
{ "ics2595", CLOCK_OPTION_ICS2595 }, /* ICS2595 */
{ "cirrus", CLOCK_OPTION_CIRRUS }, /* Cirrus built-in */
diff --git a/xc/programs/Xserver/hw/xfree86/common_hw/Imakefile b/xc/programs/Xserver/hw/xfree86/common_hw/Imakefile
index ff5d5600b..75d3b1d48 100644
--- a/xc/programs/Xserver/hw/xfree86/common_hw/Imakefile
+++ b/xc/programs/Xserver/hw/xfree86/common_hw/Imakefile
@@ -1,14 +1,14 @@
-XCOMM $XConsortium: Imakefile,v 1.3 95/01/05 20:41:28 kaleb Exp kaleb $
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/common_hw/Imakefile,v 3.5 1995/01/15 10:33:35 dawes Exp $
+XCOMM $XConsortium: Imakefile,v 1.4 95/01/16 13:17:07 kaleb Exp kaleb $
+XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/common_hw/Imakefile,v 3.6 1995/01/20 04:21:17 dawes Exp $
#include <Server.tmpl>
SRCS = ICD2061Acal.c ICD2061Aset.c ICD2061Aalt.c xf86_ClkPr.c BUSmemcpy.s \
SC11412.c ATTDac.c S3gendac.c Ti3025clk.c SlowBcopy.s IODelay.s \
- ICS2595.c CirrusClk.c /* Ch8391clk.c */
+ ICS2595.c CirrusClk.c Ch8391clk.c
OBJS = ICD2061Acal.o ICD2061Aset.o ICD2061Aalt.o xf86_ClkPr.o BUSmemcpy.o \
SC11412.o ATTDac.o S3gendac.o Ti3025clk.o SlowBcopy.o IODelay.o \
- ICS2595.o CirrusClk.o /* Ch8391clk.o */
+ ICS2595.o CirrusClk.o Ch8391clk.o
INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86OSSRC) \
-I$(SERVERSRC)/include -I$(INCLUDESRC) -I../accel/s3
diff --git a/xc/programs/Xserver/hw/xfree86/common_hw/xf86_HWlib.h b/xc/programs/Xserver/hw/xfree86/common_hw/xf86_HWlib.h
index 1739080af..bdc7054da 100644
--- a/xc/programs/Xserver/hw/xfree86/common_hw/xf86_HWlib.h
+++ b/xc/programs/Xserver/hw/xfree86/common_hw/xf86_HWlib.h
@@ -1,5 +1,5 @@
-/* $XConsortium: xf86_HWlib.h,v 1.3 95/01/05 20:41:28 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common_hw/xf86_HWlib.h,v 3.5 1995/01/15 10:33:36 dawes Exp $ */
+/* $XConsortium: xf86_HWlib.h,v 1.4 95/01/16 13:17:08 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common_hw/xf86_HWlib.h,v 3.7 1995/01/21 14:07:59 dawes Exp $ */
/*
* Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
* Copyright 1993 by David Wexelblat <dwex@goblin.org>
@@ -151,6 +151,20 @@ extern int S3gendacSetClock(
#endif
);
+extern int ICS5342SetClock(
+#if NeedFunctionPrototypes
+ long,
+ int
+#endif
+);
+
+extern int S3TrioSetClock(
+#if NeedFunctionPrototypes
+ long,
+ int
+#endif
+);
+
/* Ti3025clk.c */
extern void Ti3025SetClock(
#if NeedFunctionPrototypes
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/Bsdi.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/Bsdi.sgml
index 0717b77a9..a0f00cc23 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/Bsdi.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/Bsdi.sgml
@@ -4,11 +4,11 @@
<title> README for XFree86 3.1.1 on BSD/386 1.1
<author> Hans Nasten
-<date> 13 November 1994
+<date> 21 January 1995
<toc>
<sect> What and Where is XFree86? <p>
-XFree86 3.1 is a port of X11R6 that supports several versions of
+XFree86 3.1.1 is a port of X11R6 that supports several versions of
Intel-based Unix. It is derived from X386 1.2, which was the X server
distributed with X11R5. This release consists of many new features
and performance improvements as well as many bug fixes. The release
@@ -16,15 +16,19 @@ is available as source patches against the X Consortium X11R6 code, as
well as binary distributions for many architectures.
The sources for XFree86 are available by anonymous ftp from:
-<verb>
- ftp.XFree86.org:/pub/XFree86/current
-</verb>
+<p>
+<url
+ name="ftp.XFree86.org:/pub/XFree86/current"
+ url="ftp://ftp.XFree86.org/pub/XFree86/current">
+<p>
Binaries for BSD/386 1.1 will be available from:
-<verb>
- ftp.bsdi.com:/contrib/X11/XFree86
-</verb>
-If you're running BSD 1.0, you'll have to build it from the source.
-Building the distribution on BSD/386 1.0 is untested, but belived to
+<p>
+<url
+ name="ftp.XFree86.org:/pub/XFree86/current/binaries/Bsdi"
+ url="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/Bsdi">
+<p>
+If you're running BSD 1.0, you'll have to build it from source.
+Building the distribution on BSD/386 1.0 is untested, but believed to
work correctly. If you run into trouble building on BSD/386 1.0, please
let us know so that we can correct any incompatibilities.
If you've done it and want to share your binaries, please let the Bsdi
@@ -43,7 +47,7 @@ if you have comments or suggestions about this file and we'll revise it.
The binary distribution is composed of a number of tar archives
which contains the executables, servers, fonts, libraries, include files,
man pages, config files, and the server link kit. All tar archives should
-be extraced as root with <tt>/</tt> as the default directory. The full
+be extracted as root with <tt>/</tt> as the default directory. The full
distribution
takes over 40MB of disk space.
@@ -70,6 +74,7 @@ The contents of the archives are:
<tag/XF86_AGX.gz/ the X server for AGX boards
<tag/XF86_Mach8.gz/ the X server for ATI Mach8 boards
<tag/XF86_Mach32.gz/ the X server for ATI Mach32 boards
+ <tag/XF86_Mach64.gz/ the X server for ATI Mach64 boards
<tag/XF86_P9000.gz/ the X server for P9000 based boards
<tag/XF86_S3.gz/ the X server for S3 based boards
<tag/XF86_W32.gz/ the X server for ET4000/W32 based boards
@@ -107,7 +112,7 @@ To unpack and install the archives:
`<tt>umask</tt>' value of 022. Typing `<tt>umask 022</tt>' sets it.
Caution:
If you do not extract the files as user `<tt>root</tt>' with the
- correct umask you may not be able to run XFree86 3.1. The X
+ correct umask you may not be able to run XFree86 3.1.1. The X
server needs special permissions that are only granted to the
root user. You must also cd to <tt>/</tt> before extracting the
archives.
@@ -155,7 +160,8 @@ The <tt>XF86Config</tt> file tells the X server what kind of monitor, video
card and mouse you have.
You <em>must</em> create it to tell the server what specific hardware you have.
-XFree86 3.1 uses a new configuration file format. Consult the
+XFree86 3.1 and later releases uses a new configuration file format.
+Consult the
<tt>XF86Config</tt> man
page and the general <tt>INSTALL</tt> file for instructions.
@@ -168,7 +174,7 @@ it into the new format:
and complete the rest according to the <tt>XF86Config</tt> man page and the
<tt>XF86Config.sample</tt> file as a template.
-In order to protect your hardware from damage, the server no longer will read
+In order to protect your hardware from damage, the server will no longer read
<tt>XF86Config</tt> files from a user's home directory, but requires that it
be in <tt>/etc/XF86Config</tt>, <tt>/usr/X11R6/lib/X11/XF86Config.hostname</tt>
or <tt>/usr/X11R6/lib/X11/XF86Config</tt>.
@@ -303,8 +309,8 @@ instructions on how to build a new kernel.
</verb>
<verb>
-$XConsortium: Bsdi.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Bsdi.sgml,v 3.4 1995/01/15 10:34:11 dawes Exp $
+$XConsortium: Bsdi.sgml,v 1.2 95/01/16 13:17:39 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Bsdi.sgml,v 3.7 1995/01/22 03:06:27 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/Config.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/Config.sgml
index e289abca6..df3b0e94e 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/Config.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/Config.sgml
@@ -86,8 +86,8 @@ The server binaries are:
<tag>XF86_SVGA:</tag>
Super-VGA server. Contains accelerated support for
Cirrus 542{0,2,4,6,8,9}, 543{0,4} and Western
- Digital 90C3{1,3} chipsets, unaccelerated for the
- rest of the supported chipsets.
+ Digital 90C3{1,3} and Oak Technologies Inc. OTI087 chipsets,
+ unaccelerated for the rest of the supported chipsets.
<tag>XF86_Mono:</tag> (S)VGA monochrome, optionally Hercules
or other monochrome hardware support is linked in.
<tag>XF86_VGA16:</tag> Generic VGA 16-color server.
@@ -146,7 +146,7 @@ press.
Note that if the server complains about being unable to open
your mouse device, this is NOT a server problem. It has been a very
-common misconfiguration error on several of the OSs, and 99.999% of the
+common misconfiguration error on several of the OSs, and 99.999&percnt; of the
time it is because the device is not correctly configured in the OS.
Hence don't bug us until after you prove that your OS level support
is correct.
@@ -168,7 +168,8 @@ need is:
<itemize>
<item> Chipset
<item> Amount of video memory
- <item> Dot-clocks available
+ <item> Dot-clocks available or clock chip used (if programmable)
+ <item> Ramdac type (for some servers)
</itemize>
The server, in general, is capable of filling these on its own, but it
is best to fully specify things in the <tt>XF86Config</tt> file, so that no
@@ -304,7 +305,7 @@ you can have an 800x600 display, but a 1280x1024 virtual size). The
Virtual keyword is used to specify this size. Note that many of the new
accelerated server use non-displayed memory for caching. It is not
desirable to use all of your memory for virtual display, as this leaves
-none for caching, and this can cost as much as 30-40% of your server
+none for caching, and this can cost as much as 30-40&percnt; of your server
performance.
The last thing you specify in Display subsection is the display
@@ -518,8 +519,8 @@ installation.
</code>
<verb>
-$XConsortium: Config.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Config.sgml,v 3.2 1995/01/07 05:44:31 dawes Exp $
+$XConsortium: Config.sgml,v 1.2 95/01/16 13:17:40 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Config.sgml,v 3.4 1995/01/21 07:16:30 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml
index 16293b34c..85cda4c89 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml
@@ -3,7 +3,7 @@
<article>
<title> README for XFree86 3.1.1 on FreeBSD 2.0
<author>Rich Murphey, David Dawes
-<date>15 January 1995
+<date>20 January 1995
<toc>
@@ -27,11 +27,11 @@ url="ftp://ftp.XFree86.org/pub/XFree86/current">
Binaries for XFree86 on FreeBSD are available from:
-<url name="ftp.XFree86.org:/pub/XFree86/current/binaries/FreeBSD"
-url="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/FreeBSD">
+<url name="ftp.XFree86.org:/pub/XFree86/current/binaries/FreeBSD-2.0"
+url="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/FreeBSD-2.0">
<p>
-<url name="XFree86.cdrom.com:/pub/XFree86"
-url="ftp://XFree86.cdrom.com/pub/XFree86">
+<url name="XFree86.cdrom.com:/pub/XFree86/current/binaries/FreeBSD-2.0"
+url="ftp://XFree86.cdrom.com/pub/XFree86/current/binaries/FreeBSD-2.0">
Send email to <em/Rich-Murphey@Rice.edu/ or <em/XFree86@XFree86.org/
if you have comments or suggestions about this file and we'll revise
@@ -44,7 +44,7 @@ If you want to save space, first select which archives you want to
unpack. If you can't decide what to pick and you have 52Mb of disk
space, it's safe to unpack everything.
-At a minimum you need to unpack the 'required' <tt/XFree86-3.1.1-*.tar.gz/
+At a minimum you need to unpack the 'required' <tt/X311*.tgz/
archives plus at least one server that matches your vga card. You'll
need 9Mb for the minimum required run-time binaries only.
@@ -52,53 +52,60 @@ need 9Mb for the minimum required run-time binaries only.
<tag/Required (6.7Mb):/
<descrip>
-<tag/bin/
+<tag/X311bin.tgz/
all the executable X client applications and shared libs
-<tag/fonts/
+<tag/X311fnts.tgz/
the misc and 75 dpi fonts
-<tag/lib/
+<tag/X311lib.tgz/
data files needed at runtime
+</descrip>
+
+<tag/Required unless you have already customized your configuration files:
-<tag/xinit-config/
+<descrip>
+<tag/X311xicf.tgz/
customizable xinit runtime configuration file
+
+<tag/X311xdcf.tgz/
+ customizable xdm runtime configuration file
</descrip>
-<tag/Choose one server (~2.3Mb):/
+<tag/Choose at least one server (~2.3Mb):/
<descrip>
-<tag/8514/
+<tag/X3118514.tgz/
8-bit color for IBM 8514 and true compatibles.
-<tag/AGX/
+<tag/X311AGX.tgz/
8-bit color for AGX boards.
-<tag/Mach32/
+<tag/X311Mch3.tgz/
8 and 16-bit color for ATI Mach32 boards.
-<tag/Mach8/
+<tag/X311Mch8.tgz/
8-bit color for ATI Mach8 boards.
-<tag/Mono/
+<tag/X311Mono.tgz/
1-bit monochrome for VGA, Super-VGA, Hercules, and others.
-<tag/P9000/
+<tag/X311P900.tgz/
8, 16, and 24-bit color for Weitek P9000 boards (Diamond Viper).
-<tag/S3/
+<tag/X311S3.tgz/
8, 16 and 24-bit color for S3 boards (&num;9 GXE, Actix GE32, SPEA Mercury, STB Pegasus)
-<tag/SVGA/
+<tag/X311SVGA.tgz/
8-bit color for Super-VGA cards.
-<tag/VGA16/
+<tag/X311VG16.tgz/
4-bit color for VGA and Super-VGA cards
-<tag/W32/
+<tag/X311W32.tgz/
8-bit Color for ET4000/W32, /W32i and /W32p cards.
-<tag/Xnest/
+<tag/X311nest.tgz/
A nested server running as a client window on another display.
</descrip>
@@ -106,34 +113,34 @@ need 9Mb for the minimum required run-time binaries only.
<descrip>
-<tag/doc/
+<tag/X311doc.tgz/
(.5Mb) READMEs and XFree86 specific man pages
-<tag/man/
+<tag/X311man.tgz/
(1.7Mb) man pages except XFree86 specific ones in etc archive
-<tag/fonts-100dpi/
+<tag/X311f100.tgz/
(1.8Mb) 100dpi fonts
-<tag/fonts-scaled/
+<tag/X311fscl.tgz/
(1.6Mb) Speedo and Type1 fonts
-<tag/fonts-non-english/
- (3.3Mb) Japanese, Chinese, etc. fonts
+<tag/X311fnon.tgz/
+ (3.3Mb) Japanese, Chinese and other non-english fonts
-<tag/prog/
- (3.9Mb) config, lib*.a and *.h files needed only for compiling
-
-<tag/fontserver/
+<tag/X311fsrv.tgz/
(.3Mb) the font server and it's man page
-<tag/linkkit/
+<tag/X311prog.tgz/
+ (3.9Mb) config, lib*.a and *.h files needed only for compiling
+
+<tag/X311link.tgz/
(7.8Mb) X server reconfiguration kit
-<tag/pex/
+<tag/X311pex.tgz/
(.5Mb) PEX fonts and shared libs needed by PEX applications.
-<tag/lbx/
+<tag/X311lbx.tgz/
(.2Mb) low bandwidth X proxy server and libraries.
</descrip>
</descrip>
@@ -157,9 +164,9 @@ separate tar balls.
# umask 022
</verb></tscreen>
-<item> If you have 52Mb free in the <tt>/usr</tt> partion ``<tt>cd
+<item> If you have 52Mb free in the <tt>/usr</tt> partition ``<tt>cd
/usr</tt>'' and skip to no. 3.
- Otherwise, create a directory on another partion and sym link it into
+ Otherwise, create a directory on another partition and sym link it into
<tt>/usr</tt>:
<tscreen><verb>
@@ -173,14 +180,14 @@ separate tar balls.
If you are using sh (as root usually does):
<tscreen><verb>
- # for i in XFree86-3.1.1-*.tar.gz; do
+ # for i in X311*.tgz; do
# tar -xzf $i
# done
</verb></tscreen>
Else, if you are using csh:
<tscreen><verb>
- % foreach i (XFree86-3.1.1-*.tar.gz)
+ % foreach i (X311*.tgz)
% tar -xzf $i
% end
</verb></tscreen>
@@ -200,8 +207,8 @@ separate tar balls.
First do numbers 1 and 2 above. Then unpack the required archives:
<tscreen><verb>
- # for i in bin fonts lib xinit-config; do
- # tar -xzf XFree86-3.1.1-$i.tar.gz
+ # for i in bin fnts lib xicf; do
+ # tar -xzf X311$i.tgz
# done
</verb></tscreen>
@@ -211,7 +218,7 @@ sets supported by each server. For example, if you have an ET4000
based card you will use the XF86_SVGA server:
<tscreen><verb>
- # tar -xzf XFree86-3.1.1-SVGA.tar.gz
+ # tar -xzf X311SVGA.tgz
# cd /usr/X11R6/bin; rm X; ln -s XF86_SVGA X
</verb></tscreen>
@@ -240,8 +247,8 @@ If you had already configured <tt>X11R6/lib/X11/xinit/xinitrc</tt> or
<tt/xdm-config/ archive or unpack it separately and merge in your
customizations.
-The <tt/fonts-scaled/ and <tt/fonts-100dpi/ archives are optional and
-can be omitted if you are short on space. The optional <tt/linkkit/
+The <tt/fscl/ and <tt/f100/ archives are optional and
+can be omitted if you are short on space. The optional <tt/link/
archive allows you to reconfigure and customize a X server binary.
The optional <tt/prog/ archive is needed only for writing or compiling X
applications. The optional <tt/pex/ archive contains pex clients and
@@ -288,8 +295,8 @@ to ``off'' or build another kernel with more VTs as described below.
The display manager makes your PC look like an X terminal. That is, it
presents you with a login screen that runs under X.
-The easiest way to automaticly start the display manager on boot is to
-add a line in <tt>/etc/ttys</tt> to start it on one of the unocupied
+The easiest way to automatically start the display manager on boot is to
+add a line in <tt>/etc/ttys</tt> to start it on one of the unoccupied
virtual terminals:
<tscreen><verb>
@@ -301,7 +308,7 @@ link to the Xserver that matches your video card or edit the file
Xservers in <tt>/usr/X11R6/lib/X11/xdm</tt> to specify the pathname of
the X server.
-The change to <tt>/etc/ttys</tt> won't take effect untill you either
+The change to <tt>/etc/ttys</tt> won't take effect until you either
reboot or ``<tt/kill -HUP 1/'' to force initd to reread
<tt>/etc/ttys</tt>. You can also test the display manager manually by
loging in as root on the console and typing ``<tt/xdm -nodaemon/''.
@@ -310,7 +317,7 @@ loging in as root on the console and typing ``<tt/xdm -nodaemon/''.
<sect>Configuring X for Your Hardware
<p>
The <tt/XF86Config/ file tells the X server what kind of monitor, video card
-and mouse you have. You <em/must/ create it to tell the xerver what
+and mouse you have. You <em/must/ create it to tell the server what
specific hardware you have.
XFree86 3.1 uses a new configuration file format. Consult the
@@ -449,7 +456,7 @@ name="README.FreeBSD">
file there for complete installation instructions.
The XFree86 servers include support for the MIT-SHM extension. The
-GENERIC kenrel does not support this, so if you want to make use of
+GENERIC kernel does not support this, so if you want to make use of
this, you will need a kernel configured with SYSV shared memory
support. To do this, add the following line to your kernel config
file:
@@ -464,7 +471,7 @@ If you are using a SoundBlaster 16 on IRQ 2 (9), then you need a patch for
sb16_dsp.c. Otherwise a kernel configured with the SoundBlaster driver will
claim interrupt 9 doesn't exist and X server will lock up.
-S3 cards and serial port COM 4 cannot be installed togeather on a
+S3 cards and serial port COM 4 cannot be installed together on a
system because the I/O port addresses overlap.
@@ -524,7 +531,7 @@ On FreeBSD 1.0 and earlier systems, to avoid the ``Virtual memory
exhausted'' message from cc while compiling, increase the data and
stack size limits (in csh type ``<tt/limit datasize 32M/'' and
``<tt/limit stacksize 16M/''). This is not needed on FreeBSD 2.0 and
-later since the defauls are ample.
+later since the defaults are ample.
<bf/Note:/ Starting with XFree86 2.1 and FreeBSD 1.1, the symbol
<bf/__386BSD__/ no longer gets defined either by the compiler or via the
@@ -563,8 +570,8 @@ Many thanks to:
</itemize>
<verb>
-$XConsortium: FreeBSD.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml,v 3.5 1995/01/05 10:34:13 dawes Exp $
+$XConsortium: FreeBSD.sgml,v 1.2 95/01/16 13:17:41 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml,v 3.8 1995/01/21 10:44:19 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/INSTALL.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/INSTALL.sgml
index 459795b58..96b5d9d30 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/INSTALL.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/INSTALL.sgml
@@ -22,7 +22,7 @@ We highly recommend using GCC-2 to build XFree86. Do not use version
2.6.0 or 2.4.x versions prior to 2.4.5 due to bugs that cause either
build or execution failures. Most of the XFree86 3.1.1 binary kits are
built with GCC 2.4.5, 2.5.8 or 2.6.3. Use of GCC's -m486 option will yield
-approximately 5% better performance on a 486, with no degradation (other
+approximately 5&percnt; better performance on a 486, with no degradation (other
than larger binaries) on a 386. (gcc-2 is available from prep.ai.mit.edu
and other sites archiving GNU source.)
@@ -30,7 +30,7 @@ and other sites archiving GNU source.)
<item>You need the following:
<itemize>
- <item> X Consortium X11R6 distribution with fixes 01-11 applied.
+ <item> X Consortium X11R6 distribution with fixes 01-10 applied.
<item> <tt/XFree86-3.1.1.diff.gz/
@@ -99,7 +99,7 @@ and other sites archiving GNU source.)
</verb></tscreen>
</itemize>
-<item> If you are starting from the stock X Consortium PL11 distribution,
+<item> If you are starting from the stock X Consortium PL10 distribution,
go to the
directory above your <tt/xc/ directory, and run:
@@ -294,8 +294,8 @@ details of how to do this, please refer to the <url url="LinKit.html"
name="README.LinkKit"> file.
<verb>
-$XConsortium: INSTALL.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/INSTALL.sgml,v 3.3 1995/01/15 10:34:14 dawes Exp $
+$XConsortium: INSTALL.sgml,v 1.2 95/01/16 13:17:42 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/INSTALL.sgml,v 3.4 1995/01/19 05:22:45 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile b/xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile
index e1411f376..5ceff40ef 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile
@@ -1,5 +1,5 @@
-XCOMM $XConsortium: $
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile,v 3.3 1994/12/25 12:27:17 dawes Exp $
+XCOMM $XConsortium: Imakefile,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
+XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile,v 3.4 1995/01/19 05:22:47 dawes Exp $
#include <Server.tmpl>
#include <lnxdoc.rules>
@@ -46,6 +46,7 @@ LinuxDocReadmeTarget(SVR4)
#endif
/* Hardware docs */
+LinuxDocReadmeTarget(Oak)
LinuxDocReadmeTarget(P9000)
LinuxDocReadmeTarget(Video7)
LinuxDocReadmeTarget(S3)
@@ -62,6 +63,7 @@ LinuxDocTargetLong(CPYRIGHT.sgml,COPYRIGHT,COPYRIGHT)
LinuxDocReadmeTarget(Config)
LinuxDocTarget(INSTALL)
LinuxDocTarget(README)
+LinuxDocTarget(DocIndex)
/* Other docs */
LinuxDocReadmeTarget(LinkKit)
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml
index fccb4fd5a..112a1e315 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml
@@ -11,13 +11,13 @@
XFree86 has been tested with Linux version 1.1.49. It should work
with any version since 1.0 without change. The binaries and libraries are
based on the 4.5.26 DLL C libraries, and the 1.4.4 dynamic linker
-<tt>ld.so</tt>.
+<tt>ld.so</tt> (libc-4.5.26 or newer is *REQUIRED* !).
The DLL X libraries are produced with the 2.16 DLL-tools by Eric Youngdale.
<sect> Backwards Compatibility <p>
X11R6 is considered a major update from X11R5, so the shared
libraries in XFree86 3.1 and later are not compatible with XFree86 2.1.1
-and older libraries. To continue to run X11R5 applictions, you must keep
+and older libraries. To continue to run X11R5 applications, you must keep
the old libraries somewhere on your machine. They can be moved from
<tt>/usr/X386/lib</tt> elsewhere, but <tt>/etc/ld.so.conf</tt> must be updated.
All X11R5 applications should work with the X11R6 servers without problems.
@@ -42,7 +42,7 @@ and old X11R5 binaries can be removed. The shared libraries must be
retained in order to run dynamically-linked X11R5 binaries.
Each binary distribution of XFree86 3.X comes with a detailed
-installation document relevent to that release. The most up-to-date
+installation document relevant to that release. The most up-to-date
information is kept there, while this document describes basic features
of XFree86 3.X on Linux and how to compile the sources.
@@ -92,7 +92,7 @@ the same way it works under the XFree86 server.
When the server is exited, it will return to the original VT it was
started from, unless it dies unexpectedly, when the switch must be done
-manually. There still seem to be wierd combinations of graphic cards and
+manually. There still seem to be weird combinations of graphic cards and
motherboards that have problems to restore the textfont when returning from
XFree86 to the text mode. In these cases using the <tt>runx</tt> script from
the <bf>svgalib</bf> distribution might help.
@@ -105,7 +105,7 @@ all keys are bound: kernel-specific, multiple keysym, and dead keys are not
handled by the server. All others are translated to their X equivalents.
Note that the XFree86 server only allows for four modifier maps: unshifted,
shifted, modeswitch unshifted and modeswitch shifted. Depending on what
-the modeswitch key is (it is settable in your <tt>XF86Config</tt> and defaults
+the modeswitch key is (it is configurable in your <tt>XF86Config</tt> and defaults
to Alt),
XFree86 will read those tables into its keymaps. This means if you use
certain keys, like left-Control, for Linux modeswitch, that will not be
@@ -175,8 +175,8 @@ about Linux support or the Linux distribution should be made to
<it>orestz@eskimo.com.</it>
<verb>
-$XConsortium: $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml,v 3.1 1994/12/26 11:03:27 dawes Exp $
+$XConsortium: Linux.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml,v 3.4 1995/01/23 01:30:03 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml
index d6508239c..09df70430 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml
@@ -17,15 +17,15 @@
<sect>README for XFree86 3.1 on Mach<p>
<bf>NOTE:</bf> THIS TEXT WILL LOOK A LOT LIKE THE README.MACH FOR XFREE86 2.1,
-BECAUSE NOT MUCH HAS CHANGED FROM THE MACH OS PRESPECTIVE. ON THE
-OTHERHAND, THERE ARE SIGNIFICANT DIFFERENCES IN THE BUILD INSTRUCTIONS.
+BECAUSE NOT MUCH HAS CHANGED FROM THE MACH OS PERSPECTIVE. ON THE
+OTHER HAND, THERE ARE SIGNIFICANT DIFFERENCES IN THE BUILD INSTRUCTIONS.
BE CAREFUL TO FOLLOW THEM.<p>
All XFree86 client binaries should work with not only the Mach 2.5
kernel but also the Mach 3.0 kernel. Mach 2.5 kernels should support
both the traditional SVGA/VGA servers and the newer accelerator
servers. The Mach 3.0 kernel MK83 has a fix necessary for Mach 3.0 to
-support the new accelerator servers and for Superprobe; this change
+support the new accelerator servers and for SuperProbe; this change
allows the full 64K of I/O ports to be accessed. <bf>THUS, IF YOU USE
MACH 3.0, YOU MUST RUN MACH 3.0 Kernel RELEASE MK83 OR LATER TO USE
ANY ACCELERATOR SERVER</bf>. The XF86_SVGA server, XF86_VGA16 server, and
@@ -171,8 +171,8 @@ necessary for Mach is that the X servers be able to open <tt>/dev/iopl</tt>
read/write. There are many ways to achieve this effect.
<verb>
-$XConsortium: $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml,v 3.1 1994/12/26 11:03:29 dawes Exp $
+$XConsortium: Mach.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml,v 3.2 1995/01/21 10:44:24 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml
index 556239e23..338b19c8a 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml
@@ -7,7 +7,7 @@ David Dawes,
Marc Wandschneider,
Mark Weaver,
Matthieu Herrb
-<Date>15 January 1995
+<Date>19 January 1995
<toc>
@@ -45,7 +45,7 @@ url="ftp://ftp.eecs.umich.edu/BSD/XFree86">
If you're still running NetBSD 0.9, you'll have to build it from the source.
If you've done it and want to share your binaries, please let us know.
-This release has also been tested on NetBSD-current of January, 1st 1995 with
+This release has also been tested on NetBSD-current of January, 11th 1995 with
<tt/option "COMPAT_10"/ in the kernel config file.
XFree86 now also builds on NetBSD/sparc. See section <ref id="sparc"
@@ -65,10 +65,10 @@ this file and we'll revise it.
The binary distribution is composed of a number of split tar archives
which are the executables, servers, fonts, libraries, include files,
man pages, config files, and the server link kit. The full distribution
-takes over 40MB of disk space. The large archives are split into
+takes over 55MB of disk space. The large archives are split into
smaller chunks.
-All archives are now made using the NetBSD package tools. We recommand
+All archives are now made using the NetBSD package tools. We recommend
that you install these tools first. All packages can be installed
using <tt/pkg_add/.
@@ -142,7 +142,8 @@ You can remove individual parts once they are cat'd together.
</verb></tscreen>
If you don't have enough room in /usr/X11R6 you can specify another
directory by using the <tt/-p/ option to <tt/pkg_add/. See
-<em/pkg_add(8)/ for details.
+<em/pkg_add(8)/ for details. Then make a symbolic link
+<tt>/usr/X11R6</tt> to this directory.
</enum>
@@ -282,7 +283,7 @@ the console entry in <tt>/etc/ttys</tt>:
<p>
The <tt/XF86Config/ file tells the X server what kind of monitor, video card
-and mouse you have. You <em/must/ create it to tell the xerver what
+and mouse you have. You <em/must/ create it to tell the server what
specific hardware you have.
If you plan to fine tune the screen size or position on your monitor
@@ -293,7 +294,7 @@ If your mouse does not work try using kermit or tip to connect to the
mouse serial port and verify that it does indeed generate characters.
If you've been running a previous version of XFree86, you can get the
-video card and monitor information from your previous <tt/XConfig/
+video card and monitor information from your previous <tt/Xconfig/
file. Don't forget to update the font and RGB paths.
@@ -353,7 +354,7 @@ in your kernel config file, and rebuild and install your kernel.
Syscons and codrv are not bundled with NetBSD 1.0. They are
available by anonymous FTP from a number of sites.
-If using pccons you get the mesage:
+If using pccons you get the message:
<tscreen><verb>
> XFree86 Version 3.1.1 / X Window System
@@ -483,14 +484,41 @@ You should configure the distribution by editing
<tt>xc/config/cf/xf86site.def</tt> before compiling. To compile the
sources, invoke ``<tt/make World/'' in the xc directory.
+<sect1>Console drivers
+
+<p>
+XFree86 3.1.0C has now a configuration option to select the console
+drivers to use in <tt/xf86site.def/:
+<itemize>
+<item> if you're using pccons put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DPCCONS_SUPPORT
+</verb></tscreen>
+<item> if you're using pcvt put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DPCVT_SUPPORT
+</verb></tscreen>
+<item> if you're using syscons put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DSYSCONS_SUPPORT
+</verb></tscreen>
+<item> if you're running codrv put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DCODRV_SUPPORT
+</verb></tscreen>
+</itemize>
+If you don't define <bf/XFree86ConsoleDefines/ in <tt/xf86site.def/ the
+pccons, pcvt and syscons drivers will be supported.
+
<sect1>console.h and ioctl_pc.h files:
<p>
-If you don't already have the header files <tt/console.h/ and
-<tt/ioctl_pc.h/ installed in <tt>/usr/include/machine</tt>, then install the
-copies that are supplied in <tt>lib/Server/etc</tt> (or in
-<tt>xc/programs/Xserver/hw/xfree86/etc</tt> if you got the full source
-distribution). If you run NetBSD-current you probably want to install
+If you want to build a server supporting syscons or codrv and you
+don't already have the corresponding header files <tt/console.h/ and
+<tt/ioctl_pc.h/ installed in <tt>/usr/include/machine</tt>, then
+install the copies that are supplied in
+<tt>xc/programs/Xserver/hw/xfree86/etc</tt>.
+If you run NetBSD-current you probably want to install
them in <tt>/usr/src/sys/arch/i386/include</tt> too, so that they get
reinstalled each time you make install in <tt>/usr/src/include</tt>.
@@ -530,7 +558,8 @@ modifications to <tt/xf86site.def/ are needed:
defined at the end of <tt/NetBSD.cf/.)
<item> Set <bf/ServerToInstall/ to the sun server of your
choice. (Xsun or XsunMono).
-<item> Look at other applicable options in the <em/INSTALL/ document.
+<item> Look at other applicable options in the <url name="INSTALL document"
+url="INSTALL.html">.
</itemize>
Problems with this port should be reported to the
@@ -581,7 +610,7 @@ Another note: If you get the message:
at run-time, you've stumbled on a semantic weakness of NetBSD 1.0
dynamic linker. Applications that use libXmu also need libXt. If the
-client uses a standard <tt/Imakefile/, this dependancy will probably by
+client uses a standard <tt/Imakefile/, this dependency will probably by
included in the Makefile automagically -- you'll not see the
problem. Otherwise, just add ``<tt/-lXt/'' to your library list in the
Imakefile or Makefile and relink.
@@ -600,8 +629,8 @@ and many others.
</itemize>
<verb>
-$XConsortium: NetBSD.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml,v 3.4 1995/01/15 10:34:15 dawes Exp $
+$XConsortium: NetBSD.sgml,v 1.2 95/01/16 13:17:43 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml,v 3.6 1995/01/21 10:44:26 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/P9000.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/P9000.sgml
index 6ba9cd9d5..1e77f9f74 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/P9000.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/P9000.sgml
@@ -46,7 +46,7 @@
drawing mode. Appears the rect mode does not update the CINDEX
register correctly. Changed the color to 1 (black) from 0. (Chris)
<item>
- Added p9000QuadAlu. When drawing a quad, the p9000 equivilant to X's
+ Added p9000QuadAlu. When drawing a quad, the p9000 equivalent to X's
source is the foreground mask. When bliting/pixel8ing/pixel1ing,
it is the p9000 source mask and the p9000alu lookup table should be
used. (Chris Mason)
@@ -151,7 +151,7 @@ I've started adding in support for other cards and for acceleration.
Due to its untested nature, it is disabled. A define at the top of
<tt>p9000.h</tt> controls all of these features. The Viper PCI code is
untested and probably won't work the first time! The Orchid P9000
-code is incomplete and is waiting for a few mods by Harry to chage the
+code is incomplete and is waiting for a few mods by Harry to change the
way it deals with the clock. The acceleration code has been started
on but probably won't work. It's provided more to give our developers
a common base to start from. Notice the new global variable
@@ -215,12 +215,12 @@ or test drivers for them on. The docs I have says the P9100 has a
different interface than the P9000. As a result, they may need an
entirely new server. If you need support for one of these cards, you
should look into XInside's AcceleratedX. It's a commercial product
-that costs about &dollar;199. Send email to <it>info@xinside.com</it>
+that costs about &dollar;99. Send email to <it>info@xinside.com</it>
for more information. Their P9000 server is also much faster than
ours at present (but then this server is free :-)
<sect> Acceleration <p>
-Some of the accelration code is working, but
+Some of the acceleration code is working, but
there are probably still bugs. Only a very small number of
accelerated features have been implemented. Before working on any
acceleration, please contact <it>nygren@mit.edu</it> so we don't duplicate
@@ -256,7 +256,7 @@ Example problems:
24 bpp mode when compiled with -DRS6000 and when
run with ``<tt>-dither color</tt>''
<tag/xpaint 2.1/ Works great in both modes but has a bug in the
- color requestor for the selection tool.
+ color requester for the selection tool.
I think later versions may have fixed this.
</descrip>
@@ -274,7 +274,7 @@ to 135 MHz with a warning printed over 110 MHz. Diamond claims that
this is the max in their docs, but examination has shown some Viper's
to contain 110 MHz bt485's. Without 135 MHz, it is not possible for
people to with large monitors to run at 1280x1024. Diamond claims
-that all Vipers have 135MHz bt485's or compatables. If you have
+that all Vipers have 135MHz bt485's or compatibles. If you have
something slower, call their tech support and they will send you
a RMA to get the board replaced.
@@ -284,7 +284,7 @@ high memory should work. This should include Linux, FreeBSD, SVR4,
and more.
<sect1> NetBSD <p>
-If you have NetBSD, you will need to install the aperature driver.
+If you have NetBSD, you will need to install the aperture driver.
Extract the file <tt>apNetBSD.shar</tt>
(in <tt>xc/programs/Xserver/hw/xfree86/etc/apNetBSD.shar</tt>) and read
the <tt>README</tt> contained therein.
@@ -312,12 +312,12 @@ of the <tt>XF86Config</tt> file are:
<tag/Orchid P9000:/ 0xC0000000 or 0xD0000000 or
0xE0000000
(this MUST be set to correspond to the jumpers)
- <tag/Viper PCI:/ any value coresponding to the output
+ <tag/Viper PCI:/ any value corresponding to the output
of <tt>PCIDUMP.EXE</tt>
</descrip>
<tag/IOBase/
<descrip>
- <tag/Viper PCI:/ any value coresponding to the output
+ <tag/Viper PCI:/ any value corresponding to the output
of <tt>PCIDUMP.EXE</tt>
<tag/Others:/ unused
</descrip>
@@ -361,8 +361,8 @@ Section "Device"
Identifier "ViperVLB"
VendorName "Diamond"
BoardName "Viper VLB"
- Videoram 2048 # This is manditory
- Membase 0x80000000 # This is manditory on non-ViperVLB's
+ Videoram 2048 # This is mandatory
+ Membase 0x80000000 # This is mandatory on non-ViperVLB's
IOBase 0xe000 # Use this ONLY on ViperPCI's
EndSection
@@ -414,8 +414,8 @@ During the course of the next few months, people will be working on
acceleration, etc. Please send any patches to me (<it>nygren@mit.edu</it>).
<verb>
-$XConsortium: P9000.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/P9000.sgml,v 3.1 1995/01/15 10:34:17 dawes Exp $
+$XConsortium: P9000.sgml,v 1.2 95/01/16 13:17:44 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/P9000.sgml,v 3.6 1995/01/21 10:44:27 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml
index 813fcf331..4cc727a11 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml
@@ -29,16 +29,20 @@ The following items have been added since XFree86 3.1 was released in
October 1994:
<enum>
<item> XFree86 3.1.1 includes the X Consortium's recently released
- public patches (up to fix-11). The XFree86 Project, Inc has
+ public patches (up to fix-10). The XFree86 Project, Inc has
worked with the X Consortium to have much of XFree86 3.1.1
- included in the X Consortium's fix-11.
+ included in the X Consortium's fix-10.
<item> A new accelerated server for Mach64 boards.
+ <item> Support for the S3 Trio32 and Trio64 chipsets.
+ <item> Support in the S3 server for the Chrontel 8391 clock chip.
+ <item> Support for SPEA Mercury P64 and MIRO Crystal 40SV.
<item> Bug fixes and some performance improvements for most of the
accelerated servers.
<item> Support for `double scan' video modes (most servers).
<item> New chipset support for the SVGA server. This includes the
Avance Logic 2228/2301, Chips &amp; Technology 655xx, Cirrus Logic
- 6440, and improved support for the Oak OTI-087.
+ 6440, and Oak OTI-087. Accelerated support is included for the
+ OTI-087.
<item> Support for FreeBSD 2.0.
<item> Preliminary support for OS/2 (client-only at this stage; this
is still under development).
@@ -47,12 +51,12 @@ October 1994:
url="S3.html" name="README.S3"> for details).
<item> Support for ISC's SVR3 (only tested for 3.x and 4.x).
<item> The `xf86config' utility for generating XF86Config files has
- been improved and how uses a database of video cards.
+ been improved and now uses a database of video cards.
<item> The X server LinkKit has been updated to include support for LBX.
- <item> The slow X server startup time on machine without hardware
+ <item> The slow X server startup time on machines without hardware
floating point has been improved.
</enum>
-Plus a number of other small. Refer to the CHANGELOG file in the
+Plus a number of other small items. Refer to the CHANGELOG file in the
source distribution for full details.
<sect> What's new in XFree86 3.1?
@@ -161,7 +165,8 @@ At this time, XFree86 3.1.1 supports the following accelerated chipsets:
CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429,
CLGD5430, CLGD5434
<tag/S3 /
- 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964
+ 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964,
+ 86C732, 86C764
<tag/Western Digital /
WD90C31, WD90C33
<tag/Weitek /
@@ -172,7 +177,7 @@ At this time, XFree86 3.1.1 supports the following accelerated chipsets:
ET4000/W32, ET4000/W32i, ET4000/W32p
</DESCRIP>
-The Cirrus and Western Digital accelerators are supported in the SVGA
+The Cirrus, Western Digital and Oak accelerators are supported in the SVGA
server; the other chipsets each have their own server. A list of some
cards which the accelerated servers have been tested is included in the
files AccelCards, Devices, and some of the chipset-specific <tt>README</tt> files.
@@ -221,9 +226,9 @@ the exception of the Advance Logic, MX, Chips &amp; Technology and Video 7
chipsets, which are only
supported in 256 color mode.
-Refer to the chipset-specific <tt>README</tt> files (currently for Cirrus, Tseng,
-Western Digital, ATI, Trident and Video 7) for more information about using
-those chipsets.
+Refer to the chipset-specific <tt>README</tt> files (currently for Cirrus,
+Tseng, Western Digital, ATI, Trident, Oak and Video 7) for more
+information about using those chipsets.
The monochrome server also supports generic VGA cards, using 64k of video
memory in a single bank, the Hercules monochrome card, the Hyundai HGC1280,
@@ -237,8 +242,7 @@ about 1600x1200 (with 1MB of video memory). For other chipsets the display
size is limited to approximately 800x600.
-<bf> Note:</bf>
-<quote>
+<bf>Note:</bf>
The Diamond SpeedStar 24 (and possibly recent SpeedStar+) boards are
NOT supported, even though they use the ET4000. The Stealth 32 which
uses the ET4000/W32p is also not supported. Most other Diamond boards
@@ -248,7 +252,6 @@ size is limited to approximately 800x600.
agreed to provide The XFree86 Project, Inc. with detailed information
about Diamond products. This should permit us to better support
these in future versions of XFree86.
-</quote>
<sect><heading><label id="Changes">Important Changes</>
@@ -267,7 +270,7 @@ The old <tt>Xconfig</tt> file has been replaced in XFree86 3.1 by an
This is more than just a name change.
The new <tt>XF86Config</tt> file uses a format that is quite different
from the old <tt>Xconfig</tt> file.
-The new format is more structured, logical, and extendable than the
+The new format is more structured, logical, and extensible than the
old format.
We realise that the transition to this new format won't be without
problems.
@@ -420,7 +423,7 @@ XFree86 support was integrated into the base X11R6 distribution by:
</itemize>
<tag/ISC SVR3 support by: /
<itemize>
- <item> Michael Rohleder <it>&lt;michael.rohleder%iktffm.uucp@germany.eu.net&gt</it>
+ <item> Michael Rohleder <it>&lt;michael.rohleder&percnt;iktffm.uucp@germany.eu.net&gt</it>
</itemize>
<tag/Linux shared libraries by: /
<itemize>
@@ -477,6 +480,10 @@ XFree86 support was integrated into the base X11R6 distribution by:
<item> Mike Tierney <it>&lt;floyd@pepsi.eng.umd.edu&gt;</it>,
<item> Bill Conn <it>&lt;conn@bnr.ca&gt;</it>
</itemize>
+<tag/Oak Technologies Inc. accelerated code by: /
+<itemize>
+ <item> Jorge Delgado <it>&lt;ernar@dit.upm.es&gt;</it>,
+</itemize>
<tag/16 color VGA server by: /
<itemize>
@@ -584,7 +591,7 @@ The XFree86 Project, Inc, has been founded to accomplish two major goals:
X Consortium, Inc, the organization responsible for the
design, development, and release of The X Window System.
<item> To provide some basic funding for acquisition of facilities for
- ongoing XFree86 development, largly to consist of new video
+ ongoing XFree86 development, largely to consist of new video
hardware and basic computing facilities.
</enum>
The first of these was the primary motivation. We have held discussions
@@ -605,7 +612,7 @@ is still being determined.
An additional benefit of this incorporation is that The XFree86 Project,
Inc has obtained outside financial support for our work. This will
-hopefully give us the freedom to be more proactive in obtaining new
+hopefully give us the freedom to be more pro-active in obtaining new
video hardware, and enable us to release better products more quickly,
as we will be able to go and get what we need, and get it into the hands
of the people who can do the work.
@@ -666,12 +673,14 @@ involvement in X11R6.
<item> <url url="http://www.infomagic.com/"
name="InfoMagic">, Rocky Hill, NJ
<item> LunetIX Softfair, Berlin, Germany
+ <item> MIRO Computer Products AG, Braunschweig, Germany
<item> Rich &amp; Amy Murphey
<item> Brett Neumeier
<item> Number Nine, Lexington, MA
<item> Kazuyuki Okamoto, Japan
<item> Prime Time Freeware, San Bruno, CA
<item> Red Hat Software, Chapel Hill, NC
+ <item> SPEA Software AG, Starnberg, Germany
<item> Clifford M Stein
<item> Joel Storm
<item> S.u.S.E, GmbH, Fuerth, Germany
@@ -679,8 +688,9 @@ involvement in X11R6.
<item> Jim Tsillas
<item> Trans-Ameritech Enterprises, Inc., Santa Clara, CA
<item> Unifix Software GmbH, Braunschweig, Germany
- <item> Vixie Enterprises, La Honda, CA
- <item> <url url="//www.cdrom.com/"
+ <item> <url url="http://www.vix.com/"
+ name="Vixie Enterprises">, La Honda, CA
+ <item> <url url="http://www.cdrom.com/"
name="Walnut Creek CDROM">, Concord, CA
<item> Xtreme s.a.s., Livorno, Italy
</itemize>
@@ -693,7 +703,7 @@ information, contact The XFree86 Project, Inc, at
<sect>Source and binary archive sites
<p>
-Source patches are available to upgrade X11R6 PL11 from the X Consortium
+Source patches are available to upgrade X11R6 PL10 from the X Consortium
to XFree86 3.1.1. They and binaries for many OSs are available via anonymous
FTP from:
@@ -741,7 +751,10 @@ and the following mirror sites:
name="ftp.gwdg.de:/pub/Xfree86">
(source and binaries)
<item> <url url="ftp://ftp.uni-stuttgart.de/pub/X11/Xfree86"
- name="ftp.uni-stuttgart.de:/Pub/X11/Xfree86">
+ name="ftp.uni-stuttgart.de:/pub/X11/Xfree86">
+ (source and binaries)
+<item> <url url="ftp://fvkma.tu-graz.ac.at/pub/XFree86/3.1.1"
+ name="fvkma.tu-graz.ac.at:/pub/X11/XFree86/3.1.1">
(source and binaries)
<item> <url url="ftp://ftp.funet.fi/pub/X11/XFree86"
name="ftp.funet.fi:/pub/X11/XFree86">
@@ -797,8 +810,8 @@ file that describes what files you need to take from the archive, and which
compile-time option selections were made when building the distribution.
<verb>
-$XConsortium: README.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.7 1995/01/15 10:34:19 dawes Exp $
+$XConsortium: README.sgml,v 1.2 95/01/16 13:17:45 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.14 1995/01/23 01:30:05 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/S3.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/S3.sgml
index 5dc240c91..b4c1598dd 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/S3.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/S3.sgml
@@ -8,17 +8,21 @@
<sect> Supported hardware
<p>
-The current S3 Server supports all available S3 chipsets: 911, 924,
-801/805, 928, 864, and 964. Nevertheless, this is not enough to
-support every board using one of these chipsets. The following list
-contains some data points on boards that are known to work. If your
-card is similar to one of the described ones, chances are good it
-might work for you, too.
+The current S3 Server supports the following S3 chipsets: 911, 924,
+801/805, 928, 732 (Trio32), 764 (Trio64), 864, and 964. The S3 server
+will also recognise the 866, 868 and 968, but it has not been tested
+these chipsets. If you have any problems or success with these, please
+report it to us.
+
+Nevertheless, this is not enough to support every board using one of these
+chipsets. The following list contains some data points on boards that are
+known to work. If your card is similar to one of the described ones,
+chances are good it might work for you, too.
<descrip>
<tag>S3 801/805, AT&amp;T 20C490 (or similar) RAMDAC</tag>
<itemize>
- <item> Orchid Farenheit 1280+ VLB
+ <item> Orchid Fahrenheit 1280+ VLB
<item> Actix GE32
</itemize>
@@ -84,7 +88,7 @@ might work for you, too.
Note: the AT&amp;T20C490 RAMDAC is not automatically detected by
the server. You need to provide a `<tt/Ramdac "att20c490"/'
- entry in your XF86Config. Also, the server's RAMDAC probe
+ entry in your <tt/XF86Config/. Also, the server's RAMDAC probe
reportedly causes problems with some of these boards, and a
RamDac entry should be used to avoid the probe.
@@ -110,7 +114,7 @@ might work for you, too.
D-step (or below) chips cannot be used with a line width of
1152; hence the most effective mode for a 1 MB board is about
- 1088x800x8 (similiar to 2 MB, 1088x800x16).
+ 1088x800x8 (similar to 2 MB, 1088x800x16).
<tag>S3 928, Bt9485 RAMDAC, ICD2061A Clockchip</tag>
@@ -167,10 +171,23 @@ might work for you, too.
The <tt/"dac_8_bit"/ option is recommended.
+<tag>S3 864, AT&amp;T20c498, ICS2494 Clockchip</tag>
+ <itemize>
+ <item> MIRO 20SD (BIOS 1.xx)
+ </itemize>
+
+ The ICS2494 is a fixed frequency clockchip, you have to use
+ X -probeonly (without a Clocks line in XF86Config) to get the
+ correct clock values.
+
+ 8, 15/16 and 24(32) bpp
+
+
<tag>S3 864, AT&amp;T20c498 or STG1700 RAMDAC, ICD2061A or ICS9161 Clockchip</tag>
<itemize>
<item> Elsa Winner1000PRO VLB
<item> Elsa Winner1000PRO PCI
+ <item> MIRO 20SD (BIOS 2.xx)
</itemize>
8, 15/16 and 24(32) bpp
@@ -201,6 +218,30 @@ might work for you, too.
Mirage P64 with BIOS 4.xx uses the S3 SDAC.
+<tag>S3 864, S3 86C716 SDAC RAMDAC and Clockchip</tag>
+ <itemize>
+ <item> Elsa Winner1000PRO
+ <item> MIRO 20SD (BIOS 3.xx)
+ <item> SPEA MirageP64 2MB DRAM (BIOS 4.xx)
+ <item> Diamond Stealth 64 DRAM
+ </itemize>
+
+ 8, 15/16 and 24 bpp
+
+ ClockChip <TT/"s3_sdac"/ (should be detected automatically)
+
+
+<tag>S3 864, ICS5342 RAMDAC and Clockchip</tag>
+ <itemize>
+ <item> Diamond Stealth 64 DRAM (only some cards)
+ </itemize>
+
+ 8, 15/16 and 24 bpp
+
+ ClockChip <TT/"ics5342"/
+ RAMDAC <TT/"ics5342"/
+
+
<tag>S3 864, AT&amp;T21C498-13 RAMDAC, ICD2061A Clockchip</tag>
<itemize>
<item> &num;9 GXE64 - PCI
@@ -214,7 +255,7 @@ might work for you, too.
<tag>S3 964, AT&amp;T 20C505 RAMDAC, ICD2061A Clockchip</tag>
<itemize>
- <item> Miro Crystal 20SV PCI
+ <item> Miro Crystal 20SV
</itemize>
8, 15/16, 24(32) bpp
@@ -248,6 +289,7 @@ might work for you, too.
<tag>S3 964, Ti3025 RAMDAC, Ti3025 Clockchip</tag>
<itemize>
+ <item> Miro Crystal 40SV
<item> &num;9 GXE64 Pro VLB
<item> &num;9 GXE64 Pro PCI
</itemize>
@@ -266,12 +308,24 @@ might work for you, too.
known at this stage whether the GXE64Pro-1600 will work with
XFree86 3.1.
+<tag>S3 764 (Trio64)</tag>
+ <itemize>
+ <item> SPEA Mirage P64 (BIOS 5.xx)
+ <item> Diamond Stealth 64 DRAM
+ <item> &num;9 GXE64 Trio64
+ </itemize>
+
+ 8/15/16/24 bpp
+
+ Note: there are some display wrapping problems with the Trio64 at
+ 8bpp which have not yet been fixed.
+
</descrip>
<sect> 16bpp and 32bpp
<p>
-On 801/805 + AT&amp;T490 Cards (like the Farenheit 1280+ VLB) only 15 and
+On 801/805 + AT&amp;T490 Cards (like the Fahrenheit 1280+ VLB) only 15 and
16bpp are supported. 32bpp isn't available on this type of
chips. (There is a 24 bit mode under MS Windows, but it's not a 32bpp
sparse mode but a real 3 bytes/pixel mode -- implementing this in
@@ -282,14 +336,14 @@ XFree86 isn't easy).
<tscreen><verb>
ICD2061A ==> ClockChip "icd2061a"
-ICS9161A (ICD2061A compatible) ==> ClockChip "icd2061a"
-DCS2824-0 (ICD2061A compatible) ==> ClockChip "icd2061a"
+ICS9161A (ICD2061A compatible) ==> ClockChip "ics9161a"
+DCS2824-0 (Diamond, ICD2061A comp.) ==> ClockChip "dcs2824"
S3 86c708 GENDAC ==> ClockChip "s3gendac"
-ICS5300 GENDAC (86c708 compatible) ==> ClockChip "s3gendac"
+ICS5300 GENDAC (86c708 compatible) ==> ClockChip "ics5300"
S3 86c716 SDAC ==> ClockChip "s3_sdac"
-ICS5342 GENDAC (86c716 compatible) ==> ClockChip "s3_sdac"
+ICS5342 GENDAC ==> ClockChip "ics5342"
Sierra SC11412 ==> ClockChip "sc11412"
ICS2595 ==> ClockChip "ics2595"
@@ -302,8 +356,8 @@ If you have a RAMDAC that is not listed here, be VERY careful not to
overdrive it using XF86_S3. Better contact the XFree86 team first to
verify that running XF86_S3 will not damage your board.
-If you feel adventerous you could also open up your computer and have
-a peek at your RAMDAC. The RAMDAC is usually ome the larger chips
+If you feel adventurous you could also open up your computer and have
+a peek at your RAMDAC. The RAMDAC is usually one the larger chips
(second or third largest chip that is NOT an EPROM) on the board. The
markings on it are usually
@@ -349,9 +403,85 @@ the mode have a back porch of at least 80 pixel-clock cycles. A
symptom of this not being correct is the HW cursor being chopped off
when positioned close to the right edge of the screen.
+<sect> How to to avoid "snowing" display while graphics operations
+<p>
+
+For cards with S3 Vision864 chip there is a automatic correction which
+depends on the pixel clock and the memory clock MCLK at which the S3 chip
+operates. For most clock chips this value can't be read (only the S3 SDAC
+allows reading the MCLK value so far), so this value has to be estimated
+and specified by the user (the default is 60 [MHz]).
+
+With the new `<tt/s3MCLK/' entry for your <tt/XF86Config/ file now you can
+specify e.g.
+
+ <tscreen><verb>
+ s3MCLK 55
+ </verb></tscreen>
+
+for a 55 MHz MCLK which will reduce snowing. Smaller MCLK values will reduce
+performance a bit so you shouldn't use a too low value (55 or 50 should be a
+good guess in most cases).
+
+Below is a small shell script which might be useful to determine the
+approximate value for MCLK (about +/- 1-2 MHz error). Before running
+this script you have to add the line
+
+ <tscreen><verb>
+ s3MNadjust -31 255
+ </verb></tscreen>
+
+to the device section in your <tt/XF86Config/ file and restart X Windows.
+With this option (which is for testing and debugging only) you'll get
+lots of disastrous display flickering and snowing, so it should be removed
+again immediately after running the test script below.
+
+Running this script will use xbench and/or x11perf to run a test to determine
+the MLCK value, which is printed in MHz. Up to 4 tests are run, so you'll
+get up to 4 estimates (where the first might be the most accurate one).
+
+<code>
+#!/bin/sh
+
+exec 2> /dev/null
+
+scale=2
+
+calc() {
+ m=`awk 'BEGIN{printf "%.'$scale'f\n",'"( $1 + $2 ) / $3; exit}" `
+ [ -z "$m" ] && m=` echo "scale=$scale; ( $1 + $2 ) / $3" | bc `
+ [ -z "$m" ] && m=` echo "$scale $1 $2 + $3 / pq" | dc `
+ echo $m
+}
+
+run_xbench() {
+ r=` ( echo 1; echo 2; echo 3; echo 4 ) | xbench -only $1 | grep rate `
+ [ -z "$r" ] && return
+ cp="$2 $3"
+ set $r
+ calc $3 $cp
+}
+
+run_x11perf() {
+ r=` x11perf $1 | grep trep | tr '(/)' ' ' `
+ [ -z "$r" ] && return
+ cp="$2 $3"
+ set $r
+ calc `calc 1000 0 $4` $cp
+}
+
+run_x11perf "-rect500 -rop GXxor" 3.86 5.53 # 0 1 # 4.11 5.52 #
+run_xbench invrects500 4.63 5.48 # 0 1 # 4.69 5.48 #
+
+run_x11perf "-rect500 -rop GXcopy" -16.42 13.90 # 0 1 # -14.99 13.88 #
+run_xbench fillrects500 -7.81 13.57 # 0 1 # -8.53 13.58 #
+
+exit
+</code>
+
<verb>
-$XConsortium: S3.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/S3.sgml,v 3.4 1995/01/15 10:34:20 dawes Exp $
+$XConsortium: S3.sgml,v 1.2 95/01/16 13:17:46 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/S3.sgml,v 3.9 1995/01/23 01:30:07 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml
index 1de74fe66..9d7744a26 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml
@@ -48,7 +48,7 @@ This file may not be present if the upgrade is too substantial
<tag/XFXXX-lkit.tz/ The server link kit (all drivers + PEX).
<tag/XFXXX-util.tz/ Lots of PD utilities provided as is.
<tag/XFXXX-pex.tz/ All files relating to PEX including libraries
- and header files. The likkit is required to
+ and header files. The LinkKit is required to
obtain servers capable of running PEX.
</descrip></quote>
@@ -131,7 +131,7 @@ mapping in high memory when accessing the card. The dmmap driver comes in
two forms, a binary archive which is supplied with the full binary
distribution and a source archive which is located in
<tt>/usr/X11R6/lib/X11/etc</tt>.
-Both distributions provide instuctions for installation/removal within the
+Both distributions provide instructions for installation/removal within the
<tt>README file</tt>. <p>
<sect>Switching Consoles<p>
@@ -140,7 +140,7 @@ XFree86 uses similar console switching keys as the SCO R4 and R5
servers. That is, <tt>Ctrl-PrntScr</tt> takes you to the next console along
from the one X is running on. If this is the last console it will take
you to console 1. Those interested in modifying the console switching
-should look in <tt>mit/server/ddx/x386/common/x386Events.c</tt>.
+should look in <tt>xc/programs/Xserver/hw/xfree86/common/xf86Events.c</tt>.
<sect>Setting up Man Pages<p>
@@ -309,7 +309,7 @@ Compiling XFree86,
<itemize>
<item>Compress is used instead of pack for compressing the man pages.
<item>The default compile line will contain <tt>-D_NO_PROTOTYPE</tt> instead
- of <tt>-DNO_PROTOTYP</tt>E as this is what 3.2.4 expects.
+ of <tt>-DNO_PROTOTYPE</tt> as this is what 3.2.4 expects.
</itemize>
<item> If you have problems with <tt>mkshlib</tt> reporting an error like
<verb>
@@ -395,17 +395,17 @@ been debugged.<p>
</quote>
<tag/Problem:/
<quote>
- <tt>x386install</tt> does not work.
+ <tt>xf86install</tt> does not work.
</quote>
<tag/Causes:/
<quote>
- You should not be running <tt>x386install</tt> when using the
+ You should not be running <tt>xf86install</tt> when using the
XFree86 server
under SCO. It is used for Interactive (ISC) installations.
</quote>
<tag/Problem:/
<quote>
- The server starts but the screen is not aligned correctly or is shakey
+ The server starts but the screen is not aligned correctly or is shaky
and impossible to view.
</quote>
<tag/Causes:/
@@ -582,7 +582,7 @@ for providing an
ftp site for the binary distribution.
<verb>
-$XConsortium: SCO.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml,v 3.2 1995/01/15 10:34:22 dawes Exp $
+$XConsortium: SCO.sgml,v 1.2 95/01/16 13:17:47 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml,v 3.4 1995/01/21 10:44:32 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml
index 27dbcb6ae..5bfaf1af0 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml
@@ -75,7 +75,7 @@ The structure for the Link Kit is presented below.
<tag>site.def</tag>
Local configuration customization
<tag>xf86site.def</tag>
- XFree86 local configuration custonization
+ XFree86 local configuration customization
</descrip>
<tag>xc/programs/Xserver/hw/xfree86/</tag>
@@ -342,7 +342,7 @@ For a chipset with only one bank, all three will be declared as entry points
to the same function (see the ``tvga8900'' driver for an example).
The functions are fairly simple - the bank number is passed to the function
-in register %al. The function will shift, bitmask, etc - whatever is
+in register &percnt;al. The function will shift, bitmask, etc - whatever is
required to put the bank number into the correct form - and then write
it to the correct I/O port. For chipsets where the two banks are read-only
HERE
@@ -708,9 +708,9 @@ mode.
<sect1> The FbInit() function <p>
The <bf>FbInit()</bf> function is required for drivers with accelerated graphics
support. It is used to replace default cfb.banked functions with
-accelerated chip-specific versions. cfbLowlevFuncs is a struct containing
+accelerated chip-specific versions. vga256LowlevFuncs is a struct containing
a list of functions which can be replaced. This struct defined in
-cfbfuncs.h. Examples of <bf>FbInit()</bf> functions can be found in the et4000,
+vga256.h. Examples of <bf>FbInit()</bf> functions can be found in the et4000,
pvga1 and cirrus drivers.
If you do NOT need this function, simply don't define it, and put `NoopDDA'
@@ -903,8 +903,8 @@ Sunnyvale, CA 94086 <newline>
</descrip>
<verb>
-$XConsortium: VGADriv.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml,v 3.1 1995/01/10 10:55:30 dawes Exp $
+$XConsortium: VGADriv.sgml,v 1.2 95/01/16 13:17:49 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml,v 3.4 1995/01/21 10:44:34 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml
index c5d6ddcd8..af3218e51 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml
@@ -36,7 +36,7 @@ on Fixing Problems. This will enlighten you on ways to tweak the timing
numbers to achieve particular effects.
XFree86 allows you to hot-key between different modes defined in XF86Config
-(see XF86Config.man for details). Use this capabilty to save yourself
+(see XF86Config.man for details). Use this capability to save yourself
hassles! When you want to test a new mode, give it a unique mode
label and add it to the <em/end/ your hot-key list. Leave a
known-good mode as the default to fall back on if the test mode
@@ -194,7 +194,7 @@ possible configurations. It may affect your display's visual quality (esp.
sharpness for fine details).
Your monitor's video bandwidth should be included on the manual's spec page.
-If it's not, look at the monitor's higest rated resolution. As a rule of
+If it's not, look at the monitor's highest rated resolution. As a rule of
thumb, here's how to translate these into bandwidth estimates (and thus into
rough upper bounds for the dot clock you can use):
@@ -499,7 +499,7 @@ the example above). But before you try this "overdriving" maneuver, if you
do, make *sure* that your monitor electron guns can sync up to 76 Hz vertical.
(the popular NEC 4D, for instance, cannot. It goes only up to 75 Hz VSF).
-So far, most of this is simple arithematic and basic facts about raster
+So far, most of this is simple arithmetic and basic facts about raster
displays. Hardly any black magic at all!
<sect> Black Magic and Sync Pulses
@@ -509,7 +509,7 @@ refresh rate acceptable, and checked that you have enough VRAM. Now for the
real black magic -- you need to know when and where to place synchronization
pulses.
-The sync pulses actually control the horizontal and vertical scan frequebcies
+The sync pulses actually control the horizontal and vertical scan frequencies
of the monitor. The HSF and VSF you've pulled off the spec sheet are nominal,
approximate maximum sync frequencies. The sync pulse in the signal from the
adapter card tells the monitor how fast to actually run.
@@ -564,7 +564,7 @@ You'll have to do a little trial and error for this part. But most of the
time, we can safely assume that a sync pulse is about 3.5 to 4.0 microsecond
in length.
-For concretness again, let's take HSP to be 3.8 microseconds (which btw, is not
+For concreteness again, let's take HSP to be 3.8 microseconds (which btw, is not
a bad value to start with when experimenting).
Now, using the 65Mhz clock timing above, we know HSP is equivalent to 247 clock
@@ -628,7 +628,7 @@ comfortable with a VGT of 0 (no guard time) and we'll use that in this
example. A few need two or three ticks of guard time, and it usually doesn't
hurt to add that.
-Returning to the example: since by the defintion of frame length, a vertical
+Returning to the example: since by the definition of frame length, a vertical
tick is the time for tracing a complete HORIZONTAL frame, therefore in our
example, it is 1232/65Mhz=18.95us.
@@ -659,7 +659,7 @@ section contains the number of dots per line which will be illuminated to form
the picture (what we've called HR). The second field of the section indicates
at which dot the horizontal sync pulse will begin. The third field indicates
at which dot the horizontal sync pulse will end. The fourth field specifies
-the toal horzontal frame length (HFL).
+the total horizontal frame length (HFL).
The vertical section also contains four fields. The first field contains the
number of visible lines which will appear on the display (VR). The second
@@ -742,7 +742,7 @@ done.
Q. The example you gave is not a standard screen size, can I use
it?
- A. Why not? There is NO reason whatsover why you have to use 640x480,
+ A. Why not? There is NO reason whatsoever why you have to use 640x480,
800x600, or even 1024x768. XFree86 driver lets you config your hardware with a
lot of freedom. It usually takes two to three minutes to come up the right
one. The important thing to shoot for is high refresh rate with reasonable
@@ -758,7 +758,7 @@ nasty video hash, but nothing you do can actually damage a multi-sync monitor
(unless you somehow force your card to clock it at way above its bandwidth ---
if you stick reasonably close to the highest resolution the monitor is
documented to support this can't happen).
- Beware fixed-frequency monitors! This kind ofhacking around *can* damage
+ Beware fixed-frequency monitors! This kind of hacking around *can* damage
them.
Q. You just mentioned two standard resolutions. In Xconfig, there are many
@@ -766,7 +766,7 @@ standard resolutions available, can you tell me whether there's any point in
tinkering with timings?
A. Absolutely! Take, for example, the "standard" 640x480 listed in the
-current Xconfig. It employes 25Mhz driving frequency, frame lengths are 800
+current Xconfig. It employs 25Mhz driving frequency, frame lengths are 800
and 525 => refresh rate ~ 59.5Hz. Not too bad. But 28Mhz is a commonly
available driving frequency from many SVGA boards. If we use it to drive
640x480, following the procedure we discussed above, you would get frame
@@ -1146,8 +1146,8 @@ Finally, remember that increasing either frame length will decrease your
refresh rate, and vice-versa.
<verb>
-$XConsortium: $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml,v 3.1 1994/12/25 08:38:41 dawes Exp $
+$XConsortium: VidModes.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml,v 3.3 1995/01/21 10:44:37 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml
index 304db4ce0..a2dd85f3e 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml
@@ -18,6 +18,7 @@ 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, and w32p chips. For
a complete list, see the sign-on message printed by <tt>XF86_W32</tt>.
+The server supports only 8bpp operation at present.
Just as with <tt>XF86_SVGA</tt>, you can specify a virtual world that has
a width that is a multiple of four.
@@ -85,8 +86,8 @@ listed below:
<!-- moved author name to title page. -->
<verb>
-$XConsortium: $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml,v 3.1 1994/12/26 11:03:41 dawes Exp $
+$XConsortium: W32.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/W32.sgml,v 3.2 1995/01/20 05:21:46 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/agx.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/agx.sgml
index 0b0790cfd..230fb903b 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/agx.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/agx.sgml
@@ -5,7 +5,7 @@
<title>Notes on the AGX Server
<author>Henry Worth
-<date>13 December 1994
+<date>21 January 1995
<!-- Table of contents -->
<toc>
@@ -28,11 +28,11 @@
Graphite series, and Sierra RAMDACs (15025 and 15021), and
generic VGA RAMDAC.
<p>
- The current driver has some basic acceleration routines:
- solid zero-width lines (except AGX-014), bitblt fill's,
- tiles, and stipples, and a basic font cache. Performance is
- not yet impressive, but there is quite of bit of potential for
- future versions of the driver.
+ The current driver has a number of acceleration routines:
+ solid and dashed zero-width lines (except AGX-014), bitblt
+ fill's, tiles, and stipples, solid arc and polygon fills,
+ and font cache. Performance for local-bus boards using the
+ AGX-015 and AGX-016 is in the high 70 to low 80 kxstone range.
<p>
Boards that have had some testing include ISA and VLB
versions of most of the Hercules Graphite series, Spider
@@ -59,20 +59,11 @@
and erase lines. Seems to have been reduced after some
recent fixes to the mi/cfb code.<p>
-<item> The AGX-016 adds support for additional virtual width's,
- the current server does not support these.<p>
-
<item> The video memory probe has been problematic, recent fixes
- haven't failed yet, but earler versions showed promise too...<p>
+ haven't failed yet, but earlier versions showed promise too...<p>
-<item> Needs more testing.<p>
+<item> As in all software, needs more testing.<p>.<p>
-<item> Sometimes running with -probeonly option under Linux
- results in corruption of the lower-order characters of
- the font (most noticable are the blanks). This is
- difficult to reproduce (I've only seen once myself),
- one fix was made hours before 3.1 release that may have
- fixed it, but ... <p>
</itemize>
<sect> ToDo
<p>
@@ -83,7 +74,7 @@
improvements. Many existing acceleration routines are Q&amp;D
adaptations of existing routines from other servers that support
graphics chips that differ significantly, architecturally, from
- that XGA and are undoubtly less than optimal.<p>
+ that XGA and are undoubtedly less than optimal.<p>
<item> Support other pixel depths.<p>
@@ -189,7 +180,7 @@ Entries and Options Currently Supported:
Not supported by the HG210 Graphite.
</descrip>
-<tag/Ramdac relatated Option Flags:/
+<tag/Ramdac related Option Flags:/
<descrip>
<tag/&dquot;dac_8_bit&dquot;/
@@ -304,11 +295,11 @@ Set or clear CPU access wait state, default is the POST setting.
use of any of the unused CRTC line's memory. CRTC line
width is restricted by the following rules:
<p><quote>
- <bf>AGX-014 :</bf> 1024 and 2048.
+ <bf>AGX-014 :</bf> 512, 1024 and 2048.
</quote><quote>
- <bf>AGX-015 :</bf> 1024, 1280, and 2048.
+ <bf>AGX-015 :</bf> 512, 1024, 1280, and 2048.
</quote><quote>
- <bf>AGX-016 :</bf> 600, 800, 1024, 1280, and 2048.
+ <bf>AGX-016 :</bf> 512, 600, 800, 1024, 1280, and 2048.
</quote>
<p>
When panning I occasionally get streaks if the virtual
@@ -413,13 +404,11 @@ Set or clear CPU access wait state, default is the POST setting.
supported but have had very little testing.
<p>
The doublescan flag is now supported, however the minimum
- clock supported is generally 25Mhz so resolutions of less
+ clock supported is generally 25Mhz, so resolutions of less
than 400x300 are not likely to be supported by most monitors.
In creating doublescan mode timings, the vertical timings
- will have to be for the doubled values, e.g. for 400x300
- the timings will actually be 400x600. The common XFree86
- config routines may eventually take care of this automatically,
- but not yet.
+ will match the apparent resolutions, e.g. for 400x300
+ the timings should describe 300 lines, not 600.
<tag/Examples:/
@@ -471,14 +460,11 @@ Set or clear CPU access wait state, default is the POST setting.
still producing XGA clones for the (E)ISA, VESA, or even PCI
bus, let me know. Some bits of crude POS probe code exist,
but have proved useless for AGX based boards and are currently
- disabled.
+ disabled. A few people have made attempts to use XGA cards,
+ but no one has reported success.
<p>
To attempt using an XGA compatible board, you will need to
- specify at least the XGA instance number (typically 0 for chips
- integrated on the motherboard and 1 for the first expansion
- card based adapter). However, you may need to explicitly
- specify other information. The accel section parms that may
- be of use are:
+ specify several parms:
<p>
<descrip>
<tag/Instance nn/ XGA instance number, this is the
@@ -497,6 +483,23 @@ Set or clear CPU access wait state, default is the POST setting.
where ext_mem_address is the high
order 4-bits of POS register 2
(the server assumes zero).
+
+<tag/POSbase nnnn/ While this was intend to override the POS register
+ base address, until someone with an
+ XGA card can complete and test POS
+ register probing, it will be used to
+ specify the value of POS register 4.
+ POS register 4 contains bits
+ 31-25 of the XGA's video memory
+ system address. The value is shifted
+ one place to the left so that it
+ is contained in bits 7-1 of POS register
+ 4. Bit 0 of the register is not used by
+ this server as the XGA's linear
+ aperture is not used (however,
+ the graphics engine must be
+ configured with this address).
+
</descrip>
<p> The XGA-2 has programmable clocks up to 90Mhz, this, and
the XGA color table code are the most notable areas
@@ -507,13 +510,12 @@ Set or clear CPU access wait state, default is the POST setting.
specify programmable clocks for the XGA-2, specify any of the
programmable clock option values on the clocks line (e.g.
"icd2061a", doesn't matter which). Standard XGA-1 clock
- values, switching, and probing can also be used with the
- XGA-2.
+ values can also be used with the XGA-2.
<p>
<verb>
-$XConsortium: agx.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/agx.sgml,v 3.2 1995/01/11 09:47:56 dawes Exp $
+$XConsortium: agx.sgml,v 1.2 95/01/16 13:17:51 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/agx.sgml,v 3.5 1995/01/23 01:30:08 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml
index 107c40955..bd0da0d7f 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml
@@ -33,7 +33,7 @@ chipsets by Cirrus Logic are supported:
the "<tt>noaccel</tt>" option.
<tag>CL-GD6420/6440</tag>
These chipsets are not compatible with the 542x series, but is
- supported by a seperate driver (cl64xx). It is used in
+ supported by a separate driver (cl64xx). It is used in
recent laptops, and bears some similarity to old Cirrus
chipsets (5410/AVGA2). The driver may also work for other
64xx chips. The configuration identifiers for this driver are
@@ -122,7 +122,7 @@ If graphics redrawing goes wrong, first try the
<tt>&dquot;no_bitblt&dquot;</tt>
option if your chip has the BitBLT engine, if that doesn't work, try the
<tt>&dquot;noaccel&dquot</tt>; option, which disables all accelerated
-functions.
+functions. The <tt>&dquot;no_imageblt&dquot;</tt> option may be sufficient.
In order to be able to run at a depth of 16bpp and 32bpp, and to improve
performance at 8bpp, linear addressing must be enabled. This is generally
@@ -222,6 +222,17 @@ Option &dquot;no_bitblt&dquot;
have), while retaining some acceleration. This will be useful for
problems related to functions that use the BitBLT engine.
<tag>
+Option &dquot;no_imageblt&dquot;
+</tag>
+ This option, when used with a 5426/28/29/3x, will have the effect of
+ disabling the use of BitBLT functions that go from system memory
+ to video memory. This is useful for problems relating to image
+ write, such as a little white line at the top left corner of the
+ screen, or a skewed image after a console switch back to the
+ server, which have been observed on some configurations,
+ especially VLB 5426 and 5434 with a fast CPU. Note that this
+ option results in reduced performance.
+<tag>
chipset &dquot;clgd54xx&dquot;
</tag>
Force detection of the given chipset. Useful if you have a supported
@@ -439,7 +450,7 @@ framebuffer code can be very slow for monochrome stipples and bitmaps.
In the <tt>XF86Config</tt> <tt>"Screen"</tt> section, a
<tt>"Display"</tt> subsection must be
-defined for each depth that you want to run, with seperates Modes
+defined for each depth that you want to run, with separates Modes
and virtual screen size. Example (2Mb of video memory):
<tscreen><verb>
Section "screen"
@@ -553,7 +564,7 @@ Chipset is not detected.
Incorrect little lines (mostly white) appear occasionally
</tag>
This may be related to a problem with system-to-video-memory BitBLT
- operations. Try <tt>"no_bitblt"</tt> if it annoys you.
+ operations. Try the <tt>"no_imageblt"</tt> option if it annoys you.
<tag>
Textmode is not properly restored
</tag>
@@ -603,8 +614,8 @@ New features in XFree86 3.1.1:
</itemize>
<verb>
-$XConsortium: cirrus.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml,v 3.5 1995/01/15 10:34:26 dawes Exp $
+$XConsortium: cirrus.sgml,v 1.2 95/01/16 13:17:52 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml,v 3.7 1995/01/21 07:16:51 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/tseng.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/tseng.sgml
index 143fb39d2..d180665a5 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/tseng.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/tseng.sgml
@@ -11,6 +11,8 @@
The Tseng chipsets supported by XFree86 are ET3000, ET4000, and
ET4000/W32. At this time, the accelerated features of the ET4000/W32
are not supported; the chipset is treated as a standard ET4000.
+For details about the accelerated ET4000/W32 server, refer to
+<url name="README.W32" url="W32.html">.
<sect> Clock selection problems with some ET4000 boards <p>
XFree86 has some problems getting the clock selection right with some
@@ -46,14 +48,14 @@ is printed, put the following in the SVGA, VGA16 and VGA2 sections of your
<sect> Text mode restore problems <p>
In XFree86 1.3, an option flag ``force_bits'' was provided as an experiment
-to attempt to alleviate text-restoral problems that some people experienced.
+to attempt to alleviate text-restoration problems that some people experienced.
We have now made the behavior of this option the default, hence the flag
-has been removed. Hopefully the past text-restoral problems are alleviated
+has been removed. Hopefully the past text-restoration problems are alleviated
in XFree86 2.0.
<verb>
-$XConsortium: $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/tseng.sgml,v 3.0 1994/12/20 11:33:48 dawes Exp $
+$XConsortium: tseng.sgml,v 1.1 95/01/06 20:29:55 kaleb Exp kaleb $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/tseng.sgml,v 3.3 1995/01/21 10:44:40 dawes Exp $
</verb>
</article>
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/ati_driver.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/ati_driver.c
index 7379e55f2..df75e21af 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/ati_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/ati_driver.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/ati_driver.c,v 3.18 1995/01/12 12:06:13 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/ati_driver.c,v 3.19 1995/01/22 03:07:34 dawes Exp $ */
/*
* Copyright 1994 and 1995 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca
*
@@ -364,7 +364,7 @@ static unsigned Probe_IOPorts[] =
/* 8514/A registers */
ERR_TERM, GP_STAT,
- RD_MASK, CUR_X, CUR_Y, PIX_TRANS, FRGD_COLOR,
+ WRT_MASK, RD_MASK, CUR_X, CUR_Y, PIX_TRANS, FRGD_COLOR,
/* Mach8 registers */
ROM_ADDR_1, DESTX_DIASTP, CONFIG_STATUS_1, EXT_FIFO_STATUS,
@@ -1009,54 +1009,30 @@ probe_clocks:
vga256InfoRec.clocks = Number_Of_Clocks;
/*
- * Reject certain obviously wrong clocks lines, even though
- * specified by the user. This includes the standard VGA
- * clocks, and clock lines that could have been used with the
- * pre-2.1.1 ati driver.
+ * Attempt to match clocks to a known specification.
*/
- if (ATIMatchClockLine(InvalidClockLine,
- Number_Of_Clocks, -1, 0))
- vga256InfoRec.clocks = 0;
- else
+ ATIClock =
+ ATIMatchClockLine(ClockLine,
+ Number_Of_Documented_Clocks, -1, 0);
+
+ if (ATIClock == ATI_CLOCK_NONE)
{
/*
- * Attempt to match clocks to a known specification.
+ * Reject certain clock lines that are obviously wrong.
+ * This includes the standard VGA clocks, and clock
+ * lines that could have been used with the pre-2.1.1
+ * driver.
*/
- ATIClock =
- ATIMatchClockLine(ClockLine,
- Number_Of_Documented_Clocks,
- Calibration_Clock_Number, 0);
-
+ if (ATIMatchClockLine(InvalidClockLine,
+ Number_Of_Clocks, -1, 0))
+ vga256InfoRec.clocks = 0;
+ else
/*
- * Ensure crystals are not matched to clock chips, and
- * vice versa.
+ * Check for clocks that are specified in the wrong
+ * order. This is meant to catch those who are trying
+ * to use the clock order intended for the accelerated
+ * servers.
*/
- if (ATIBoard <= ATI_BOARD_V4)
- {
- if (ATIClock > ATI_CLOCK_CRYSTALS)
- vga256InfoRec.clocks = 0;
- }
- else
- {
- if (ATIClock == ATI_CLOCK_CRYSTALS)
- vga256InfoRec.clocks = 0;
- }
- }
-
- if (!vga256InfoRec.clocks)
- {
- ErrorF("Invalid or obsolete XF86Config clocks line "
- "rejected.\nClocks will be probed. See "
- "README.ati for more information.\n");
- goto probe_clocks;
- }
-
- /*
- * Now, check for clocks that are specified in the wrong order.
- * This is meant to catch people trying to use the clock order
- * intended for the accelerated servers.
- */
- if (!ATIClock)
for (Clock_Map = 1;
Clock_Map < Number_Of_Documented_Clocks;
Clock_Map++)
@@ -1064,13 +1040,37 @@ probe_clocks:
Number_Of_Documented_Clocks,
-1, Clock_Map))
{
- ErrorF("XF86Config clocks order "
- "incorrect. Clocks will be "
- "probed.\nSee README.ati for "
- "more information.\n");
+ ErrorF("XF86Config clocks ordering"
+ " incorrect. Clocks will be"
+ " probed.\nSee README.ati for"
+ " more information.\n");
vga256InfoRec.clocks = 0;
goto probe_clocks;
- }
+ }
+ }
+ else
+ /*
+ * Ensure crystals are not matched to clock chips, and vice
+ * versa.
+ */
+ if (ATIBoard <= ATI_BOARD_V4)
+ {
+ if (ATIClock > ATI_CLOCK_CRYSTALS)
+ vga256InfoRec.clocks = 0;
+ }
+ else
+ {
+ if (ATIClock == ATI_CLOCK_CRYSTALS)
+ vga256InfoRec.clocks = 0;
+ }
+
+ if (!vga256InfoRec.clocks)
+ {
+ ErrorF("Invalid or obsolete XF86Config clocks line"
+ " rejected.\nClocks will be probed. See"
+ " README.ati for more information.\n");
+ goto probe_clocks;
+ }
}
switch (ATIClock)
@@ -1206,7 +1206,7 @@ short X, Y;
Colour Pixel_Colour;
/* Wait for idle engine */
- WaitIdleEmpty();
+ ProbeWaitIdleEmpty();
/* Set up engine for pixel read */
ATIWaitQueue(7);
@@ -1224,7 +1224,7 @@ short X, Y;
/* Read pixel colour */
Pixel_Colour = inw(PIX_TRANS);
- WaitIdleEmpty();
+ ProbeWaitIdleEmpty();
return Pixel_Colour;
}
@@ -1240,7 +1240,8 @@ short X, Y;
Colour Pixel_Colour;
{
/* Set up engine for pixel write */
- ATIWaitQueue(8);
+ ATIWaitQueue(9);
+ outw(WRT_MASK, (unsigned short)(~0));
outw(DP_CONFIG, FG_COLOR_SRC_FG | DRAW | READ_WRITE);
outw(ALU_FG_FN, MIX_FN_PAINT);
outw(FRGD_COLOR, Pixel_Colour);
@@ -1325,7 +1326,7 @@ ATIMach32videoRam(void)
AllPixelsOK = TRUE;
ForEachTestPixel
if (ATIMach32ReadPixel(TestPixel.x, TestPixel.y) !=
- saved_Pixel[Pixel_Number])
+ Test_Pixel[Pixel_Number])
{
AllPixelsOK = FALSE;
break;
@@ -1356,7 +1357,7 @@ ATIMach32videoRam(void)
outw(CLOCK_SEL, saved_CLOCK_SEL & ~DISABPASSTHRU);
/* Wait for activity to die down */
- WaitIdleEmpty();
+ ProbeWaitIdleEmpty();
/* Tell ATIProbe the REAL story */
return Test_Case[Case_Number].videoRamSize;
@@ -1385,7 +1386,7 @@ ATIProbe()
int VGAWondervideoRam = 0;
unsigned char ChipType[2] = {0, 0};
unsigned short int ChipClass = 0, ChipRevision = 0;
- unsigned char ATIVGABoard;
+ unsigned char ATIVGABoard = ATI_BOARD_NONE;
const int videoRamSizes[] =
{0, 256, 512, 1024, 2*1024, 4*1024, 6*1024, 8*1024, 12*1024,
8*1024, 0};
@@ -1443,263 +1444,246 @@ ATIProbe()
xf86EnableIOPorts(vga256InfoRec.scrnIndex);
/*
- * Determine if a Mach64 is present, making sure it's not in some wierd
- * state.
+ * Determine if an 8514-compatible accelerator is present, making sure
+ * it's not in some wierd state.
*/
- IO_Value = inl(BUS_CNTL);
- outl(BUS_CNTL, (IO_Value &
- ~(BUS_ROM_DIS | BUS_FIFO_ERR_INT_EN | BUS_HOST_ERR_INT_EN)) |
- BUS_FIFO_ERR_INT | BUS_HOST_ERR_INT);
- outl(GEN_TEST_CNTL, 0);
- outl(GEN_TEST_CNTL, GEN_GUI_EN);
-
- IO_Value = inl(SCRATCH_REG0);
- outl(SCRATCH_REG0, 0x55555555); /* Test odd bits */
- if (inl(SCRATCH_REG0) == 0x55555555)
+ outw(SUBSYS_CNTL, GPCTRL_RESET | CHPTEST_NORMAL);
+ outw(SUBSYS_CNTL, GPCTRL_ENAB | CHPTEST_NORMAL);
+
+ /*
+ * Don't leave any Mach8 or Mach32 in 8514/A mode.
+ */
+ IO_Value = inw(CLOCK_SEL);
+ outw(CLOCK_SEL, IO_Value);
+ ProbeWaitIdleEmpty();
+
+ IO_Value = inw(ERR_TERM);
+ outw(ERR_TERM, 0x5A5A);
+ ProbeWaitIdleEmpty();
+ if (inw(ERR_TERM) == 0x5A5A)
{
- outl(SCRATCH_REG0, 0xAAAAAAAA); /* Test even bits */
- if (inl(SCRATCH_REG0) == 0xAAAAAAAA)
- {
- /* A Mach64 has been detected */
- IO_Value2 = inl(CONFIG_STATUS_0);
- if ((IO_Value2 & (CFG_VGA_EN | CFG_CHIP_EN)) !=
- (CFG_VGA_EN | CFG_CHIP_EN))
- {
- ErrorF("Mach64 detected but VGA Wonder "
- "capability cannot be enabled.\n");
- outl(SCRATCH_REG0, IO_Value);
- xf86DisableIOPorts(vga256InfoRec.scrnIndex);
- return (FALSE);
- }
- ATIChip = ATI_CHIP_88800;
- ATIBoard = ATI_BOARD_MACH64;
- ATIDac = (IO_Value2 & CFG_INIT_DAC_TYPE) >> 9;
- MachvideoRam =
- videoRamSizes[(inl(MEM_INFO) & CTL_MEM_SIZE) +
- 2];
- IO_Value2 = inl(CONFIG_CHIP_ID);
- ChipType[0] = (IO_Value2 & CFG_CHIP_TYPE1) >> 8;
- ChipType[1] = (IO_Value2 & CFG_CHIP_TYPE0) ;
- ChipClass = (IO_Value2 & CFG_CHIP_CLASS) >> 16;
- ChipRevision = (IO_Value2 & CFG_CHIP_REV ) >> 24;
+ outw(ERR_TERM, 0x2525);
+ ProbeWaitIdleEmpty();
+ if (inw(ERR_TERM) == 0x2525)
+ ATIBoard = ATI_BOARD_MACH8;
+ }
+ outw(ERR_TERM, IO_Value);
- /*
- * Set up extended register addressing.
- */
- PutReg(GRAX, 0x50, 0xCE);
- PutReg(GRAX, 0x51, 0x81);
+ if (ATIBoard != ATI_BOARD_NONE)
+ {
+ /* Some kind of 8514/A detected */
+ ATIBoard = ATI_BOARD_NONE;
+
+ IO_Value = inw(ROM_ADDR_1);
+ outw(ROM_ADDR_1, 0x5555);
+ ProbeWaitIdleEmpty();
+ if (inw(ROM_ADDR_1) == 0x5555)
+ {
+ outw(ROM_ADDR_1, 0x2A2A);
+ ProbeWaitIdleEmpty();
+ if (inw(ROM_ADDR_1) == 0x2A2A)
+ ATIBoard = ATI_BOARD_MACH8;
}
+ outw(ROM_ADDR_1, IO_Value);
}
- outl(SCRATCH_REG0, IO_Value);
- if (ATIBoard == ATI_BOARD_NONE)
+ if (ATIBoard != ATI_BOARD_NONE)
{
- /*
- * Get out if signature is not in the right spot.
- */
- if (Signature_Found != BIOS_Signature)
+ /* ATI accelerator detected */
+ outw(DESTX_DIASTP, 0xAAAA);
+ ProbeWaitIdleEmpty();
+ if (inw(READ_SRC_X) == 0x02AA)
+ ATIBoard = ATI_BOARD_MACH32;
+
+ outw(DESTX_DIASTP, 0x5555);
+ ProbeWaitIdleEmpty();
+ if (inw(READ_SRC_X) == 0x0555)
{
- xf86DisableIOPorts(vga256InfoRec.scrnIndex);
- return (FALSE);
+ if (ATIBoard != ATI_BOARD_MACH32)
+ ATIBoard = ATI_BOARD_NONE;
}
+ else
+ {
+ if (ATIBoard != ATI_BOARD_MACH8)
+ ATIBoard = ATI_BOARD_NONE;
+ }
+ }
+ if (ATIBoard != ATI_BOARD_NONE)
+ Chip_Has_SUBSYS_CNTL = TRUE;
+ else
+ {
/*
- * Pick up extended register index I/O port number.
+ * Determine if a Mach64 is present, making sure it's not in
+ * some wierd state.
*/
- ATIExtReg = *((short *)(BIOS_Data + 0x10));
-
- if (!(BIOS_Data[0x44] & 0x40))
+ IO_Value = inl(BUS_CNTL);
+ outl(BUS_CNTL, (IO_Value &
+ ~(BUS_ROM_DIS | BUS_FIFO_ERR_INT_EN |
+ BUS_HOST_ERR_INT_EN)) |
+ BUS_FIFO_ERR_INT | BUS_HOST_ERR_INT);
+ outl(GEN_TEST_CNTL, 0);
+ outl(GEN_TEST_CNTL, GEN_GUI_EN);
+
+ IO_Value = inl(SCRATCH_REG0);
+ outl(SCRATCH_REG0, 0x55555555); /* Test odd bits */
+ if (inl(SCRATCH_REG0) == 0x55555555)
{
- /* An 8514/A compatible accelerator detected */
-
- /*
- * Reset the 8514/A and disable all interrupts.
- */
- outw(SUBSYS_CNTL, GPCTRL_RESET | CHPTEST_NORMAL);
- outw(SUBSYS_CNTL, GPCTRL_ENAB | CHPTEST_NORMAL);
-
- /*
- * Don't leave any Mach8 or Mach32 in 8514/A mode.
- */
- IO_Value = inw(CLOCK_SEL);
- outw(CLOCK_SEL, IO_Value);
-
- IO_Value = inw(ERR_TERM);
- outw(ERR_TERM, 0x5A5A);
- ProbeWaitIdleEmpty();
- if (inw(ERR_TERM) == 0x5A5A)
+ outl(SCRATCH_REG0, 0xAAAAAAAA); /* Test even bits */
+ if (inl(SCRATCH_REG0) == 0xAAAAAAAA)
{
- outw(ERR_TERM, 0x2525);
- ProbeWaitIdleEmpty();
- if (inw(ERR_TERM) == 0x2525)
- ATIBoard = ATI_BOARD_MACH8;
- }
- outw(ERR_TERM, IO_Value);
-
- if (ATIBoard != ATI_BOARD_NONE)
- {
- /* Some kind of 8514/A detected */
- ATIBoard = ATI_BOARD_NONE;
-
- IO_Value = inw(ROM_ADDR_1);
- outw(ROM_ADDR_1, 0x5555);
- ProbeWaitIdleEmpty();
- if (inw(ROM_ADDR_1) == 0x5555)
+ /* A Mach64 has been detected */
+ IO_Value2 = inl(CONFIG_STATUS_0);
+ if ((IO_Value2 & (CFG_VGA_EN | CFG_CHIP_EN)) !=
+ (CFG_VGA_EN | CFG_CHIP_EN))
{
- outw(ROM_ADDR_1, 0x2A2A);
- ProbeWaitIdleEmpty();
- if (inw(ROM_ADDR_1) == 0x2A2A)
- ATIBoard = ATI_BOARD_MACH8;
- }
- outw(ROM_ADDR_1, IO_Value);
- }
-
- if (ATIBoard != ATI_BOARD_NONE)
- {
- /* ATI accelerator detected */
- outw(DESTX_DIASTP, 0xAAAA);
- ProbeWaitIdleEmpty();
- if (inw(READ_SRC_X) == 0x02AA)
- ATIBoard = ATI_BOARD_MACH32;
-
- outw(DESTX_DIASTP, 0x5555);
- ProbeWaitIdleEmpty();
- if (inw(READ_SRC_X) == 0x0555)
- {
- if (ATIBoard != ATI_BOARD_MACH32)
- ATIBoard = ATI_BOARD_NONE;
- }
- else
- {
- if (ATIBoard != ATI_BOARD_MACH8)
- ATIBoard = ATI_BOARD_NONE;
- }
- }
-
- if (ATIBoard == ATI_BOARD_NONE)
- {
- xf86DisableIOPorts(vga256InfoRec.scrnIndex);
- return (FALSE);
- }
-
- Chip_Has_SUBSYS_CNTL = TRUE;
-
- if (ATIBoard == ATI_BOARD_MACH32)
- {
- IO_Value = inw(CONFIG_STATUS_1);
- if (IO_Value & (_8514_ONLY | CHIP_DIS))
- {
- ErrorF("Mach32 detected but VGA Wonder"
- " capability cannot be"
+ ErrorF("Mach64 detected but VGA"
+ " Wonder capability cannot be"
" enabled.\n");
+ outl(SCRATCH_REG0, IO_Value);
xf86DisableIOPorts(
vga256InfoRec.scrnIndex);
return (FALSE);
}
+ ATIChip = ATI_CHIP_88800;
+ ATIBoard = ATI_BOARD_MACH64;
+ ATIDac = (IO_Value2 & CFG_INIT_DAC_TYPE) >> 9;
+ MachvideoRam =
+ videoRamSizes[(inl(MEM_INFO) &
+ CTL_MEM_SIZE) + 2];
+ IO_Value2 = inl(CONFIG_CHIP_ID);
+ ChipType[0] =
+ (IO_Value2 & CFG_CHIP_TYPE1) >> 8;
+ ChipType[1] =
+ (IO_Value2 & CFG_CHIP_TYPE0) ;
+ ChipClass =
+ (IO_Value2 & CFG_CHIP_CLASS) >> 16;
+ ChipRevision =
+ (IO_Value2 & CFG_CHIP_REV ) >> 24;
- IO_Value2 = inw(CHIP_ID);
- switch (IO_Value2 & (CHIP_CODE_0 | CHIP_CODE_1))
- {
- case 0x0000:
- ATIChip = ATI_CHIP_68800_3;
- break;
-
- case 0x02F7:
- ATIChip = ATI_CHIP_68800_6;
- break;
+ /*
+ * Set up extended register addressing.
+ */
+ PutReg(GRAX, 0x50, 0xCE);
+ PutReg(GRAX, 0x51, 0x81);
+ }
+ }
+ outl(SCRATCH_REG0, IO_Value);
+ }
- case 0x0177:
- ATIChip = ATI_CHIP_68800LX;
- break;
+ if (ATIBoard == ATI_BOARD_MACH32)
+ {
+ IO_Value = inw(CONFIG_STATUS_1);
+ if (IO_Value & (_8514_ONLY | CHIP_DIS))
+ {
+ ErrorF("Mach32 detected but VGA Wonder capability"
+ " cannot be enabled.\n");
+ xf86DisableIOPorts(vga256InfoRec.scrnIndex);
+ return (FALSE);
+ }
- case 0x0017:
- ATIChip = ATI_CHIP_68800AX;
- break;
+ IO_Value2 = inw(CHIP_ID);
+ switch (IO_Value2 & (CHIP_CODE_0 | CHIP_CODE_1))
+ {
+ case 0x0000:
+ ATIChip = ATI_CHIP_68800_3;
+ break;
- default:
- ATIChip = ATI_CHIP_68800;
- break;
- }
+ case 0x02F7:
+ ATIChip = ATI_CHIP_68800_6;
+ break;
- ATIDac = (IO_Value & DACTYPE) >> 9;
- ChipType[0] =
- ((IO_Value2 & CHIP_CODE_1) >> 5) + 0x41;
- ChipType[1] =
- ((IO_Value2 & CHIP_CODE_0) ) + 0x41;
- ChipClass = ((IO_Value2 & CHIP_CLASS) >> 10);
- ChipRevision = ((IO_Value2 & CHIP_REV) >> 12);
- MachvideoRam =
- videoRamSizes[((inw(MISC_OPTIONS) &
- MEM_SIZE_ALIAS) >> 2) + 2];
+ case 0x0177:
+ ATIChip = ATI_CHIP_68800LX;
+ break;
- /*
- * The 68800-6 doesn't necessarily report the
- * correct video memory size.
- */
- if ((ATIChip == ATI_CHIP_68800_6) &&
- (MachvideoRam == 1024))
- MachvideoRam = ATIMach32videoRam();
+ case 0x0017:
+ ATIChip = ATI_CHIP_68800AX;
+ break;
- }
+ default:
+ ATIChip = ATI_CHIP_68800;
+ break;
}
- if (ATIBoard != ATI_BOARD_MACH32)
+ ATIDac = (IO_Value & DACTYPE) >> 9;
+ ChipType[0] = ((IO_Value2 & CHIP_CODE_1) >> 5) + 0x41;
+ ChipType[1] = ((IO_Value2 & CHIP_CODE_0) ) + 0x41;
+ ChipClass = ((IO_Value2 & CHIP_CLASS) >> 10);
+ ChipRevision = ((IO_Value2 & CHIP_REV) >> 12);
+ MachvideoRam =
+ videoRamSizes[((inw(MISC_OPTIONS) & MEM_SIZE_ALIAS) >>
+ 2) + 2];
+
+ /*
+ * The 68800-6 doesn't necessarily report the correct video
+ * memory size.
+ */
+ if ((ATIChip == ATI_CHIP_68800_6) && (MachvideoRam == 1024))
+ MachvideoRam = ATIMach32videoRam();
+
+ }
+
+ if ((ATIBoard <= ATI_BOARD_MACH8) &&
+ (Signature_Found == BIOS_Signature))
+ {
+ /* This is a Mach8 or VGA Wonder board of some kind */
+ if ((BIOS_Data[0x43] >= '1') && (BIOS_Data[0x43] <= '6'))
+ ATIChip = BIOS_Data[0x43] - '0';
+
+ switch (ATIChip)
{
- /* This is a Mach8 or VGA Wonder board of some kind */
- if ((BIOS_Data[0x43] >= '1') &&
- (BIOS_Data[0x43] <= '6'))
- ATIChip = BIOS_Data[0x43] - '0';
+ case ATI_CHIP_18800:
+ ATIVGABoard = ATI_BOARD_V3;
+ /* Reset a few things for V3 boards */
+ ATI.ChipSetRead = ATIV3SetRead;
+ ATI.ChipSetWrite = ATIV3SetWrite;
+ ATI.ChipSetReadWrite = ATIV3SetReadWrite;
+ ATI.ChipUse2Banks = FALSE;
+# if !defined(MONOVGA) && !defined(XF86VGA16)
+ ATI.ChipRounding = 8;
+# endif
+ break;
- switch (ATIChip)
- {
- case ATI_CHIP_18800:
- ATIVGABoard = ATI_BOARD_V3;
- /* Reset a few things for V3 boards */
- ATI.ChipSetRead = ATIV3SetRead;
- ATI.ChipSetWrite = ATIV3SetWrite;
- ATI.ChipSetReadWrite =
- ATIV3SetReadWrite;
- ATI.ChipUse2Banks = FALSE;
-# if !defined(MONOVGA) && \
- !defined(XF86VGA16)
- ATI.ChipRounding = 8;
-# endif
- break;
-
- case ATI_CHIP_18800_1:
- if (BIOS_Data[0x42] & 0x10)
- ATIVGABoard = ATI_BOARD_V5;
- else
- ATIVGABoard = ATI_BOARD_V4;
- /* Reset a few things for V4 and V5
- boards */
- ATI.ChipSetRead = ATIV4V5SetRead;
- ATI.ChipSetWrite = ATIV4V5SetWrite;
- ATI.ChipSetReadWrite =
- ATIV4V5SetReadWrite;
- break;
-
- case ATI_CHIP_28800_2:
- case ATI_CHIP_28800_4:
- case ATI_CHIP_28800_5:
- case ATI_CHIP_28800_6:
- ATIVGABoard = ATI_BOARD_PLUS;
- if (BIOS_Data[0x44] & 0x80)
- {
- ATIVGABoard = ATI_BOARD_XL;
- ATIDac = ATI_DAC_SC11483;
- }
- break;
- }
+ case ATI_CHIP_18800_1:
+ if (BIOS_Data[0x42] & 0x10)
+ ATIVGABoard = ATI_BOARD_V5;
+ else
+ ATIVGABoard = ATI_BOARD_V4;
+ /* Reset a few things for V4 and V5 boards */
+ ATI.ChipSetRead = ATIV4V5SetRead;
+ ATI.ChipSetWrite = ATIV4V5SetWrite;
+ ATI.ChipSetReadWrite = ATIV4V5SetReadWrite;
+ break;
- if (ATIBoard == ATI_BOARD_NONE)
- ATIBoard = ATIVGABoard;
+ case ATI_CHIP_28800_2:
+ case ATI_CHIP_28800_4:
+ case ATI_CHIP_28800_5:
+ case ATI_CHIP_28800_6:
+ ATIVGABoard = ATI_BOARD_PLUS;
+ if (BIOS_Data[0x44] & 0x80)
+ {
+ ATIVGABoard = ATI_BOARD_XL;
+ ATIDac = ATI_DAC_SC11483;
+ }
+ break;
}
+
+ if (ATIBoard == ATI_BOARD_NONE)
+ ATIBoard = ATIVGABoard;
}
/*
* Set up extended register addressing.
*/
+ if ((ATIBoard < ATI_BOARD_MACH64) &&
+ (Signature_Found == BIOS_Signature))
+ {
+ /*
+ * Pick up extended register index I/O port number.
+ */
+ ATIExtReg = *((short *)(BIOS_Data + 0x10));
+ }
ATI_IOPorts[0] = ATIExtReg;
ATI_IOPorts[1] = ATIExtReg + 1;
@@ -1730,8 +1714,10 @@ ATIProbe()
ErrorF("%s graphics controller detected.\n", ChipNames[ATIChip]);
if (ATIBoard >= ATI_BOARD_MACH32)
- ErrorF("Chip type %c%c, class %d, revision %d.\n",
- ChipType[0], ChipType[1], ChipClass, ChipRevision);
+ ErrorF("Chip type %02X%02X (%.1s%.1s), class %d,"
+ " revision %d.\n",
+ ChipType[0], ChipType[1], ChipType + 1, ChipType,
+ ChipClass, ChipRevision);
ErrorF("%s or similar RAMDAC detected.\n", DACNames[ATIDac]);
ErrorF("This is a %s video adapter.\n", BoardNames[ATIBoard]);
@@ -1776,7 +1762,7 @@ ATIProbe()
/*
* Find out how much video memory the VGA Wonder side thinks it has.
*/
- if (ATIBoard < ATI_BOARD_PLUS)
+ if (ATIChip < ATI_CHIP_28800_2)
{
IO_Value = ATIGetExtReg(0xBB);
if (IO_Value & 0x20)
@@ -1813,15 +1799,20 @@ ATIProbe()
* necessarily agree depending on whether or where the memory
* boundary is configured.
*/
- if (MachvideoRam > VGAWondervideoRam)
- if (ATIBoard < ATI_BOARD_PLUS)
- ATIPutExtReg(0xBB, IO_Value | 0x20);
+ if (MachvideoRam != VGAWondervideoRam)
+ if (ATIChip < ATI_CHIP_28800_2)
+ {
+ IO_Value &= 0xDF;
+ if (MachvideoRam >= 512)
+ IO_Value |= 0x20;
+ ATIPutExtReg(0xBB, IO_Value);
+ }
else
{
IO_Value &= 0xE7;
if (MachvideoRam >= 1024)
IO_Value |= 0x08;
- else
+ else if (MachvideoRam >= 512)
IO_Value |= 0x10;
ATIPutExtReg(0xB0, IO_Value);
}
@@ -2010,7 +2001,7 @@ Bool enter;
}
/* Wait for all activity to die down */
- WaitIdleEmpty();
+ ProbeWaitIdleEmpty();
}
else if (ATIBoard == ATI_BOARD_MACH64)
{
@@ -2179,7 +2170,7 @@ Bool enter;
}
/* Wait for all activity to die down */
- WaitIdleEmpty();
+ ProbeWaitIdleEmpty();
}
else if (ATIBoard == ATI_BOARD_MACH64)
{
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/chips/ct_driver.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/chips/ct_driver.c
index 772e23da8..2dafeffe6 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/chips/ct_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/chips/ct_driver.c
@@ -1,23 +1,23 @@
-/* $XConsortium: ct_driver.c,v 1.2 95/01/06 20:58:32 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/chips/ct_driver.c,v 3.6 1995/01/11 04:35:03 dawes Exp $ */
+/* $XConsortium: ct_driver.c,v 1.3 95/01/16 13:18:05 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/chips/ct_driver.c,v 3.7 1995/01/20 04:22:37 dawes Exp $ */
/*
* Copyright 1993 by Jon Block <block@frc.com>
- * Modified by Mike Hollick <hollick@>
+ * Modified by Mike Hollick <hollick@graphics.cis.upenn.edu>
* Modified 1994 by Régis Cridlig <cridlig@dmi.ens.fr>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Jon Block not be used in
+ * documentation, and that the name of the authors not be used in
* advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Jon Block makes no representations
+ * specific, written prior permission. The authors makes no representations
* about the suitability of this software for any purpose. It is provided
* "as is" without express or implied warranty.
*
- * JON BLOCK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL JON BLOCK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
@@ -29,8 +29,8 @@
* several people. It is NOT a stable or complete driver.
*
* It has only one time been verified to work for the Chips & Technologies
- * 65530 chipset in 640x480x256 mode. It does not work correctly for higher
- * resolutions.
+ * 65530 chipset in 640x480x256 mode. It does not correctly handle dot-clocks
+ * other than 25 and 28 MHz.
*
* The driver code has much obsolete excluded code and has some suspect
* bits. Notably the extended registers do not seem to ever be unlocked
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_bltC.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_bltC.c
index 63a57e5ea..05b8232f3 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_bltC.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_bltC.c
@@ -1,5 +1,5 @@
-/* $XConsortium: cir_bltC.c,v 1.3 94/10/13 13:21:46 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_bltC.c,v 3.5 1994/12/05 03:47:59 dawes Exp $ */
+/* $XConsortium: cir_bltC.c,v 1.4 95/01/05 20:47:57 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_bltC.c,v 3.6 1995/01/18 06:14:32 dawes Exp $ */
/*
@@ -165,7 +165,7 @@ CirrusDoBitbltCopy(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
else
if (CHECKSCREEN(pdstBase)) /* Mem -> Screen */
{
- if(NoCirrus || !HAVEBITBLTENGINE())
+ if(NoCirrus || !HAVEBITBLTENGINE() || cirrusAvoidImageBLT)
/* ImageWrite seems prone to pixel errors. Probably
* caused by other function -- ImageWrite is used all
* the time by the cursor.
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.c
index a47d97b29..a560bf23e 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.c
@@ -1,5 +1,5 @@
-/* $XConsortium: cir_driver.c,v 1.4 95/01/06 20:58:37 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.c,v 3.28 1995/01/15 10:35:22 dawes Exp $ */
+/* $XConsortium: cir_driver.c,v 1.5 95/01/16 13:18:07 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.c,v 3.31 1995/01/21 07:18:04 dawes Exp $ */
/*
* cir_driver.c,v 1.10 1994/09/14 13:59:50 scooper Exp
*
@@ -117,6 +117,7 @@ Bool cirrusMMIOFlag = FALSE;
unsigned char *cirrusMMIOBase = NULL;
Bool cirrusUseLinear = FALSE;
Bool cirrusFavourBLT = FALSE;
+Bool cirrusAvoidImageBLT = FALSE;
int cirrusDRAMBandwidth;
int cirrusDRAMBandwidthLimit;
int cirrusReprogrammedMCLK = 0;
@@ -1091,6 +1092,7 @@ cirrusProbe()
OFLG_SET(OPTION_NO_2MB_BANKSEL, &CIRRUS.ChipOptionFlags);
OFLG_SET(OPTION_NO_BITBLT, &CIRRUS.ChipOptionFlags);
OFLG_SET(OPTION_FAVOUR_BITBLT, &CIRRUS.ChipOptionFlags);
+ OFLG_SET(OPTION_NO_IMAGEBLT, &CIRRUS.ChipOptionFlags);
}
#ifdef CIRRUS_SUPPORT_MMIO
if (cirrusChip == CLGD5434 || cirrusChip == CLGD5430 ||
@@ -1165,12 +1167,17 @@ cirrusFbInit()
cirrusUseBLTEngine = FALSE;
else {
if (cirrusChip == CLGD5429 && cirrusChipRevision == 0) {
- ErrorF("%s %s: %s: CL-GD5429 Rev A detected, BitBLT disabled\n",
+ ErrorF("%s %s: %s: CL-GD5429 Rev A detected\n",
XCONFIG_GIVEN, vga256InfoRec.name, vga256InfoRec.chipset);
- cirrusUseBLTEngine = FALSE;
+ cirrusAvoidImageBLT = TRUE;
}
}
- }
+ if (OFLG_ISSET(OPTION_NO_IMAGEBLT, &vga256InfoRec.options))
+ cirrusAvoidImageBLT = TRUE;
+ if (xf86Verbose && cirrusAvoidImageBLT)
+ ErrorF("%s %s: %s: Not using system-to-video BitBLT\n",
+ XCONFIG_GIVEN, vga256InfoRec.name, vga256InfoRec.chipset);
+ }
#endif
@@ -1365,9 +1372,17 @@ nolinear:
vga256TEOps1Rect.PolyGlyphBlt = CirrusPolyGlyphBlt;
vga256TEOps.PolyGlyphBlt = CirrusPolyGlyphBlt;
- vga256LowlevFuncs.teGlyphBlt8 = CirrusImageGlyphBlt;
- vga256TEOps1Rect.ImageGlyphBlt = CirrusImageGlyphBlt;
- vga256TEOps.ImageGlyphBlt = CirrusImageGlyphBlt;
+ /*
+ * If using the BitBLT engine but avoiding image blit,
+ * prefer the framebuffer routines for ImageGlyphBlt.
+ * The color-expand text functions would be allowable, but
+ * the use of "no_imageblt" generally implies a fast host bus.
+ */
+ if (!cirrusAvoidImageBLT) {
+ vga256LowlevFuncs.teGlyphBlt8 = CirrusImageGlyphBlt;
+ vga256TEOps1Rect.ImageGlyphBlt = CirrusImageGlyphBlt;
+ vga256TEOps.ImageGlyphBlt = CirrusImageGlyphBlt;
+ }
}
CirrusInvalidateShadowVariables();
@@ -1382,16 +1397,20 @@ nolinear:
}
else {
- if (xf86Verbose)
+ if (xf86Verbose) {
ErrorF("%s %s: %s: Using BitBLT engine\n",
XCONFIG_PROBED, vga256InfoRec.name, vga256InfoRec.chipset);
+ }
+
#ifdef CIRRUS_INCLUDE_COPYPLANE1TO8
- if (vgaBitsPerPixel == 8)
+ if (vgaBitsPerPixel == 8 && !cirrusAvoidImageBLT)
vga256LowlevFuncs.copyPlane1to8 = CirrusCopyPlane1to8;
#endif
if (vgaBitsPerPixel == 16) {
- cfb16TEOps1Rect.ImageGlyphBlt = CirrusImageGlyphBlt;
- cfb16TEOps.ImageGlyphBlt = CirrusImageGlyphBlt;
+ if (!cirrusAvoidImageBLT) {
+ cfb16TEOps1Rect.ImageGlyphBlt = CirrusImageGlyphBlt;
+ cfb16TEOps.ImageGlyphBlt = CirrusImageGlyphBlt;
+ }
cfb16TEOps1Rect.CopyArea = Cirrus16CopyArea;
cfb16NonTEOps1Rect.CopyArea = Cirrus16CopyArea;
cfb16TEOps.CopyArea = Cirrus16CopyArea;
@@ -1399,8 +1418,10 @@ nolinear:
/* xf86Info.currentScreenCopyWindow = CirrusCopyWindow; */
}
if (vgaBitsPerPixel == 32) {
- cfb32TEOps1Rect.ImageGlyphBlt = CirrusImageGlyphBlt;
- cfb32TEOps.ImageGlyphBlt = CirrusImageGlyphBlt;
+ if (!cirrusAvoidImageBLT) {
+ cfb32TEOps1Rect.ImageGlyphBlt = CirrusImageGlyphBlt;
+ cfb32TEOps.ImageGlyphBlt = CirrusImageGlyphBlt;
+ }
cfb32TEOps1Rect.CopyArea = Cirrus32CopyArea;
cfb32NonTEOps1Rect.CopyArea = Cirrus32CopyArea;
cfb32TEOps.CopyArea = Cirrus32CopyArea;
@@ -1430,9 +1451,11 @@ nolinear:
if (vgaBitsPerPixel == 8) {
vga256TEOps1Rect.PolyGlyphBlt = CirrusMMIOPolyGlyphBlt;
vga256TEOps.PolyGlyphBlt = CirrusMMIOPolyGlyphBlt;
- vga256LowlevFuncs.teGlyphBlt8 = CirrusMMIOImageGlyphBlt;
- vga256TEOps1Rect.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
- vga256TEOps.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ if (!cirrusAvoidImageBLT) {
+ vga256LowlevFuncs.teGlyphBlt8 = CirrusMMIOImageGlyphBlt;
+ vga256TEOps1Rect.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ vga256TEOps.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ }
/* These functions need to be initialized in the GC handling */
/* of vga256. */
vga256TEOps1Rect.FillSpans = CirrusFillSolidSpansGeneral;
@@ -1459,8 +1482,10 @@ nolinear:
}
else
if (vgaBitsPerPixel == 16) {
- cfb16TEOps1Rect.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
- cfb16TEOps.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ if (!cirrusAvoidImageBLT) {
+ cfb16TEOps1Rect.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ cfb16TEOps.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ }
cfb16TEOps1Rect.FillSpans = CirrusFillSolidSpansGeneral;
cfb16TEOps.FillSpans = CirrusFillSolidSpansGeneral;
cfb16NonTEOps1Rect.FillSpans = CirrusFillSolidSpansGeneral;
@@ -1477,8 +1502,10 @@ nolinear:
#endif
}
else { /* vgaBitsPerPixel == 32 */
- cfb32TEOps1Rect.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
- cfb32TEOps.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ if (!cirrusAvoidImageBLT) {
+ cfb32TEOps1Rect.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ cfb32TEOps.ImageGlyphBlt = CirrusMMIOImageGlyphBlt;
+ }
cfb32TEOps1Rect.FillSpans = CirrusFillSolidSpansGeneral;
cfb32TEOps.FillSpans = CirrusFillSolidSpansGeneral;
cfb32NonTEOps1Rect.FillSpans = CirrusFillSolidSpansGeneral;
@@ -2063,6 +2090,7 @@ cirrusInit(mode)
new->SRF |= 0x20; /* Enable 64 byte FIFO. */
}
+#ifndef MONOVGA
if (cirrusChip == CLGD5424 || cirrusChip == CLGD5426 ||
cirrusChip == CLGD5428 || cirrusChip == CLGD5429 ||
cirrusChip == CLGD5434 || cirrusChip == CLGD5430)
@@ -2141,6 +2169,7 @@ cirrusInit(mode)
new->SR16 |= threshold - fifoshift_5430;
} /* endelse */
} /* endif */
+#endif
if (cirrusChip == CLGD5430
&& !OFLG_ISSET(OPTION_NO_2MB_BANKSEL, &vga256InfoRec.options))
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.h b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.h
index e521d652e..83dcd75c2 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.h
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.h
@@ -1,5 +1,5 @@
-/* $XConsortium: cir_driver.h,v 1.3 95/01/05 20:47:57 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.h,v 3.12 1995/01/04 04:42:24 dawes Exp $ */
+/* $XConsortium: cir_driver.h,v 1.4 95/01/06 20:58:40 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_driver.h,v 3.13 1995/01/18 06:14:40 dawes Exp $ */
/*
*
* Copyright 1993 by Simon P. Cooper, New Brunswick, New Jersey, USA.
@@ -180,6 +180,7 @@ extern Bool cirrusUseBLTEngine;
extern Bool cirrusUseMMIO;
extern Bool cirrusUseLinear;
extern Bool cirrusFavourBLT;
+extern Bool cirrusAvoidImageBLT;
extern Bool cirrusMMIOFlag;
extern Bool cirrusDoBackgroundBLT;
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_imblt.s b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_imblt.s
index 35eff18b0..27eb8fc50 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_imblt.s
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_imblt.s
@@ -1,5 +1,5 @@
-/* $XConsortium: cir_imblt.s,v 1.1 94/10/05 13:52:22 kaleb Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_imblt.s,v 3.3 1994/08/31 04:44:27 dawes Exp $ */
+/* $XConsortium: cir_imblt.s,v 1.3 94/10/13 13:21:46 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_imblt.s,v 3.4 1995/01/21 07:18:08 dawes Exp $ */
/*
*
* Copyright 1993 by H. Hanemaayer, Utrecht, The Netherlands
@@ -153,8 +153,9 @@ GLNAME(CirrusImageWriteTransfer):
JE (.two_bytes_remaining)
/* Three bytes remaining. */
- MOV_L (REGOFF(-1,ESI),EAX)
- SHR_L (CONST(8),EAX)
+ MOV_B (REGOFF(2,ESI),AL)
+ SHL_L (CONST(16),EAX)
+ MOV_W (REGIND(ESI),AX)
ADD_L (CONST(0x03),ESI)
MOV_L (EAX,REGIND(EDI)) /* Write dword. */
JMP (.line_finished)
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_teblt8.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_teblt8.c
index 2f2680eb6..39160b5a9 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_teblt8.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_teblt8.c
@@ -1,5 +1,5 @@
-/* $XConsortium: cir_teblt8.c,v 1.4 95/01/05 20:47:57 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_teblt8.c,v 3.11 1994/12/25 12:35:12 dawes Exp $ */
+/* $XConsortium: cir_teblt8.c,v 1.5 95/01/06 20:58:44 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_teblt8.c,v 3.12 1995/01/18 06:14:42 dawes Exp $ */
/*
* TEGblt - ImageText expanded glyph fonts only. For
* 8 bit displays, in Copy mode with no clipping.
@@ -134,7 +134,8 @@ void CirrusImageGlyphBlt(pDrawable, pGC, xInit, yInit, nglyph, ppci, pglyphBase)
/* We only accelerate fonts 32 or less pixels wide. */
/* Let cfb handle writing into offscreen pixmap. */
- if (vgaBitsPerPixel == 8 && (!CHECKSCREEN(pdstBase) || !xf86VTSema)) {
+ if (vgaBitsPerPixel == 8 && (pDrawable->type != DRAWABLE_WINDOW ||
+ !xf86VTSema)) {
cfbImageGlyphBlt8(pDrawable, pGC, xInit, yInit, nglyph, ppci,
pglyphBase);
return;
@@ -180,9 +181,7 @@ void CirrusImageGlyphBlt(pDrawable, pGC, xInit, yInit, nglyph, ppci, pglyphBase)
bbox.y1 = y;
bbox.y2 = y + h;
- switch ((*pGC->pScreen->RectIn)(
- ((cfbPrivGC *)(pGC->devPrivates[cfbGCPrivateIndex].ptr))
- ->pCompositeClip, &bbox))
+ switch (RECT_IN_REGION(pGC->pScreen, cfbGetCompositeClip(pGC), &bbox))
{
case rgnPART:
switch (vgaBitsPerPixel) {
@@ -350,7 +349,7 @@ void CirrusPolyGlyphBlt(pDrawable, pGC, xInit, yInit, nglyph, ppci, pglyphBase)
PolyGlyph = NULL;
- if (HAVEBITBLTENGINE())
+ if (HAVEBITBLTENGINE() && !cirrusAvoidImageBLT)
fontwidthlimit = 32; /* BitBLT transfer function used. */
else
fontwidthlimit = 16; /* Color expansion function used. */
@@ -386,8 +385,7 @@ void CirrusPolyGlyphBlt(pDrawable, pGC, xInit, yInit, nglyph, ppci, pglyphBase)
bbox.y1 = y;
bbox.y2 = y + h;
- switch ((*pGC->pScreen->RectIn)(
- ((cfbPrivGC *)(pGC->devPrivates[cfbGCPrivateIndex].ptr))->pCompositeClip, &bbox))
+ switch (RECT_IN_REGION(pGC->pScreen, cfbGetCompositeClip(pGC), &bbox))
{
case rgnPART:
if (pGC->alu == GXcopy)
@@ -402,7 +400,7 @@ void CirrusPolyGlyphBlt(pDrawable, pGC, xInit, yInit, nglyph, ppci, pglyphBase)
/* Allocate list of pointers to glyph bitmaps. */
glyphp = (unsigned long **)ALLOCATE_LOCAL(nglyph * sizeof(unsigned long *));
- if (HAVEBITBLTENGINE()) {
+ if (HAVEBITBLTENGINE() && !cirrusAvoidImageBLT) {
/* On the 543x, we can use BitBLT text transfer for
* transparent text. This is because on the 543x,
* transparency in the BitBLT engine is 'fixed' to be
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c
index 9d9abb5d8..860279166 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c
@@ -1,5 +1,5 @@
-/* $XConsortium: oak_driver.c,v 1.4 95/01/06 20:58:54 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c,v 3.10 1995/01/10 02:11:09 dawes Exp $ */
+/* $XConsortium: oak_driver.c,v 1.5 95/01/16 13:18:20 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c,v 3.12 1995/01/21 07:18:44 dawes Exp $ */
/*
* Copyright 1994 by Jorge Delgado <ernar@dit.upm.es>
*
@@ -27,9 +27,9 @@
* This is a oak SVGA driver for XFree86.
*
* Built from Xfree86 1.3 stub file.
- * 9/1/93 Initial version Steve Goldman sgoldman@encore.com
- * 10/9/94 Revamped 067/077 version with added support for
- * 087 chipset by Jorge Delgado ernar@dit.upm.es
+ * 9/ 1/93 Initial version Steve Goldman sgoldman@encore.com
+ * 10/ 9/94 Revamped 067/077 version with added support for
+ * 087 chipset by Jorge Delgado ernar@dit.upm.es
* 24/10/94 New version by Jorge Delgado with support for
* 2MB of DRAM in 087 chipsets with extended bank
* switching, and ported to X11R6 structure, adding ALPHA linear
@@ -39,6 +39,11 @@
* 23/12/94 Okay, now linear addressing is cleaner, and more
* efficient, Membase has been set at 0xE00000 (14Mb) and
* aperture is selected matching video memory.
+ * 18/ 1/95 Yabadabadoo!!! I found an undocumented way of setting
+ * linear addressing above 16Mbytes for OTI087 VLB cards, activating
+ * the 64Mbyte pin of my VLB card. Thanks must be given to
+ * the people that wrote the README.cirrus, it gave me the clue.
+ * okay for all you there..voila!! >16Mb linear addressing.
*
* This one file can be used for both the color and monochrome servers.
* Remember that the monochrome server is actually using a 16-color mode,
@@ -393,6 +398,7 @@ vgaVideoChipRec OAK = {
static int OTI_chipset;
static Bool OTI_2mb_bank = FALSE;
static Bool OTI_linear = FALSE;
+static Bool OTI_vlb = FALSE;
static unsigned OAK_ExtPorts[] = { OTI_INDEX, OTI_R_W };
static int Num_OAK_ExtPorts = (sizeof(OAK_ExtPorts)/sizeof(OAK_ExtPorts[0]));
@@ -707,66 +713,78 @@ OAKProbe()
}
}
}
- if (vga256InfoRec.videoRam == 2048) {
- ErrorF("%s %s: oti087: 2MB supported, but not tested!!!\n",
- XCONFIG_PROBED, vga256InfoRec.name);
- ErrorF("%s %s: oti087: use 'VideoRam 1024' in XF86Config file\n",
- XCONFIG_PROBED, vga256InfoRec.name);
- ErrorF("%s %s: oti087: if you find any problem. Or mail me\n",
- XCONFIG_PROBED, vga256InfoRec.name);
- ErrorF("%s %s: oti087: at ernar@dit.upm.es \n",
- XCONFIG_PROBED, vga256InfoRec.name);
- }
- /* HERE WE KNOW THE CHIPSET SO WE CHANGE THE BANKING ROUTINES, AND
- * THE STRUCTURE, ALLOWING FOR LINEAR FRAMEBUFFER
- */
+ if (OTI_chipset == OTI87) {
+
+ /* Now we perform other detections, such as RAMDAC and
+ * the like.
+ */
+
+ outb(OTI_INDEX,OTI87_CONFIG_1);
+ temp2 = ( inb(OTI_R_W) & 0x06);
+ switch ( temp2 )
+ {
+ case 0x00 :
+ ErrorF("%s %s: oti087: VLB card integrated in MotherBoard. \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: MemBase for Linear Addressing will be\n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: set at 0x4E00000 (the 78Mbyte mark). \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ OTI_vlb = TRUE;
+ break;
+ case 0x02 :
+ ErrorF("%s %s: oti087: VLB card in a 32-bit VESA slot. \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: MemBase for Linear Addressing will be. \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: set at 0x4E00000 (the 78Mbyte mark). \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ OTI_vlb = TRUE;
+ break;
+ case 0x04 :
+ ErrorF("%s %s: oti087: ISA card integrated in MotherBoard. \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: MemBase for Linear Addressing will be. \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: set at 0xE00000 (the 14Mbyte mark). \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ OTI_vlb = FALSE;
+ break;
+ case 0x06 :
+ ErrorF("%s %s: oti087: ISA card in a 16-bit AT-BUS slot. \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: MemBase for Linear Addressing will be. \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ ErrorF("%s %s: oti087: set at 0xE00000 (the 14Mbyte mark). \n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ OTI_vlb = FALSE;
+ break;
+ }
+
+ outb(OTI_INDEX,OTI87_CONFIG_2);
+ temp2 = ( inb(OTI_R_W) & 0x0C);
+ switch (temp2 )
+ {
+ case 0x00 :
+ ErrorF("%s %s: oti087: BT476, SC11487, IMSG174 or equivalent RAMDAC.\n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ break;
+ case 0x04 :
+ ErrorF("%s %s: oti087: MU9C1715 or equivalent RAMDAC.\n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ break;
+ case 0x08 :
+ ErrorF("%s %s: oti087: BT484 or equivalent RAMDAC.\n",
+ XCONFIG_PROBED, vga256InfoRec.name);
+ break;
+ }
+ }
- /* Now we perform other detections, such as RAMDAC and
- * the like.
+ /* Here we know the chipset so we change the banking routines, and
+ * the structure, allowing for "Linear Framebuffer"
*/
-
- outb(OTI_INDEX,OTI87_CONFIG_1);
- temp2 = ( inb(OTI_R_W) & 0x06);
- switch ( temp2 )
- {
- case 0x00 :
- ErrorF("%s %s: oti087: VLB card integrated in MotherBoard. \n",
- XCONFIG_PROBED, vga256InfoRec.name);
- break;
- case 0x02 :
- ErrorF("%s %s: oti087: VLB card in a 32-bit VESA slot. \n",
- XCONFIG_PROBED, vga256InfoRec.name);
- break;
- case 0x04 :
- ErrorF("%s %s: oti087: ISA card integrated in MotherBoard. \n",
- XCONFIG_PROBED, vga256InfoRec.name);
- break;
- case 0x06 :
- ErrorF("%s %s: oti087: ISA card in a 16-bit AT-BUS slot. \n",
- XCONFIG_PROBED, vga256InfoRec.name);
- break;
- }
-
- outb(OTI_INDEX,OTI87_CONFIG_2);
- temp2 = ( inb(OTI_R_W) & 0x0C);
- switch (temp2 )
- {
- case 0x00 :
- ErrorF("%s %s: oti087: BT476, SC11487, IMSG174 or equivalent RAMDAC.\n",
- XCONFIG_PROBED, vga256InfoRec.name);
- break;
- case 0x04 :
- ErrorF("%s %s: oti087: MU9C1715 or equivalent RAMDAC.\n",
- XCONFIG_PROBED, vga256InfoRec.name);
- break;
- case 0x08 :
- ErrorF("%s %s: oti087: BT484 or equivalent RAMDAC.\n",
- XCONFIG_PROBED, vga256InfoRec.name);
- break;
- }
-
-
+
if (OTI_chipset == OTI87)
{
OAK.ChipSetRead = OTI87SetRead ;
@@ -777,9 +795,16 @@ OAKProbe()
if (OFLG_ISSET(OPTION_LINEAR, &vga256InfoRec.options))
{
OAK.ChipUseLinearAddressing = TRUE ;
- OAK.ChipLinearBase = 0xE00000 ; /* This is a default, just in case */
+ if (OTI_vlb)
+ {
+ OAK.ChipLinearBase=0x4E00000 ;/* This is a hack ;), but works */
+ }
+ else
+ {
+ OAK.ChipLinearBase=0xE00000 ;/* This is a default, just in case*/
+ }
OAK.ChipLinearSize = vga256InfoRec.videoRam * 1024 ;
-
+ OTI_linear = TRUE; /* Don't take this out, it is needed */
#if 0
OAK.ChipHas16bpp = TRUE ;
OAK.ChipHas32bpp = TRUE ;
@@ -1321,7 +1346,7 @@ OAKInit(mode)
if (OFLG_ISSET(OPTION_FIFO_CONSERV, &vga256InfoRec.options)) {
new->oti87FIFODepth = 0xE ;
- ErrorF ("%s %s: oti087: FIFO set to 15. \n", XCONFIG_GIVEN,
+ ErrorF ("%s %s: oti087: FIFO set to 14. \n", XCONFIG_GIVEN,
vga256InfoRec.name);
} else if (OFLG_ISSET(OPTION_FIFO_AGGRESSIVE, &vga256InfoRec.options)) {
new->oti87FIFODepth = 0x2 ;
@@ -1401,24 +1426,54 @@ OAKInit(mode)
vga256InfoRec.name);
}
- if (OTI_linear)
+ if (OTI_linear)
{
- switch(vga256InfoRec.videoRam)
- {
- case 256:
- new -> oti87Mapping = 0xE1;
- break;
- case 512:
- new -> oti87Mapping = 0xE5;
- break;
- case 1024:
- new -> oti87Mapping = 0xE9;
- break;
- case 2048:
- new -> oti87Mapping = 0xED;
- break;
- }
-
+ if (OTI_vlb)
+ {
+
+ /* This is an undocumented option of the board. Disabling DMA tranasfers
+ * the 64MB (0x4000000) address mark pin is enabled, allowing higher-than
+ * 16Mbyte-mark addressing, I must thank the people who did the
+ * README.cirrus for the clue, and the binaries of the OTI087 MS-Windoze
+ * drivers for allowing me to do some diff's :), it was a hell to find
+ * and debug, but at last....it's here (and I will be able to buy another
+ * 4 Mbytes of RAM and be allowed linear addressing)
+ */
+
+ switch(vga256InfoRec.videoRam)
+ {
+ case 256:
+ new -> oti87Mapping = 0xE3;
+ break;
+ case 512:
+ new -> oti87Mapping = 0xE7;
+ break;
+ case 1024:
+ new -> oti87Mapping = 0xEB;
+ break;
+ case 2048:
+ new -> oti87Mapping = 0xEF;
+ break;
+ }
+ }
+ else
+ {
+ switch(vga256InfoRec.videoRam)
+ {
+ case 256:
+ new -> oti87Mapping = 0xE1;
+ break;
+ case 512:
+ new -> oti87Mapping = 0xE5;
+ break;
+ case 1024:
+ new -> oti87Mapping = 0xE9;
+ break;
+ case 2048:
+ new -> oti87Mapping = 0xED;
+ break;
+ }
+ }
ErrorF ("%s %s: oti087: linear framebuffer enabled. \n", XCONFIG_GIVEN,
vga256InfoRec.name);
ErrorF ("%s %s: oti087: base address is set at 0x%X.\n", XCONFIG_GIVEN,
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgaBitBlt.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgaBitBlt.c
index 26d062079..863d6a010 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgaBitBlt.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgaBitBlt.c
@@ -1,5 +1,5 @@
-/* $XConsortium: pvgaBitBlt.c,v 1.2 94/10/13 13:26:38 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgaBitBlt.c,v 3.1 1995/01/14 10:48:59 dawes Exp $ */
+/* $XConsortium: pvgaBitBlt.c,v 1.3 95/01/16 13:18:22 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgaBitBlt.c,v 3.2 1995/01/18 11:00:12 dawes Exp $ */
/*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
*
@@ -127,9 +127,9 @@ wd90c31BitBlt(unsigned char *psrcBase, unsigned char *pdstBase,
WAIT_BLIT;
SET_BLT_SRC_LOW ((psrc & 0xFFF));
- SET_BLT_SRC_HGH (((psrc >> 12) & 0xFF));
+ SET_BLT_SRC_HGH ((psrc >> 12));
SET_BLT_DST_LOW ((pdst & 0xFFF));
- SET_BLT_DST_HGH (((pdst >> 12) & 0xFF));
+ SET_BLT_DST_HGH ((pdst >> 12));
SET_BLT_ROW_PTCH (widthDst);
SET_BLT_DIM_X (w);
SET_BLT_DIM_Y (h);
diff --git a/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgablt.c b/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgablt.c
index 7731f6bb0..16ed18b89 100644
--- a/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgablt.c
+++ b/xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgablt.c
@@ -1,5 +1,5 @@
-/* $XConsortium: pvgablt.c,v 1.4 95/01/13 20:07:41 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgablt.c,v 3.1 1995/01/14 10:49:00 dawes Exp $ */
+/* $XConsortium: pvgablt.c,v 1.5 95/01/16 13:18:23 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/pvga1/pvgablt.c,v 3.2 1995/01/19 05:25:20 dawes Exp $ */
/*
* cfb copy area
*/
@@ -218,6 +218,8 @@ pvgacfbDoBitbltCopy(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
switch (WDchipset)
{
case WD90C31:
+#if 0
+ /* Not sure why this causes problems (DHD) */
wd90c31BitBlt((unsigned char *)psrcBase, (unsigned char *)pdstBase,
widthSrc, widthDst,
pptSrc->x, pptSrc->y,
@@ -228,6 +230,32 @@ pvgacfbDoBitbltCopy(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
planemask,
BLT_SRC_COLR,
0);
+#else
+ if (xdir == -1 || ydir == -1)
+ {
+ dstaddr = (pbox->y1+h-1)*widthDst + pbox->x1+w-1;
+ srcaddr = (pptSrc->y+h-1)*widthSrc + pptSrc->x+w-1;
+ }
+ else
+ {
+ dstaddr = pbox->y1*widthDst + pbox->x1;
+ srcaddr = pptSrc->y*widthSrc + pptSrc->x;
+ }
+
+ /** handle the blit, this could actually handle and ROP **/
+ WAIT_BLIT;
+ SET_BLT_SRC_LOW ((srcaddr & 0xFFF));
+ SET_BLT_SRC_HGH (((srcaddr >> 12) & 0xFF));
+ SET_BLT_DST_LOW ((dstaddr & 0xFFF));
+ SET_BLT_DST_HGH (((dstaddr >> 12) & 0xFF));
+ SET_BLT_ROW_PTCH (widthDst);
+ SET_BLT_DIM_X (w);
+ SET_BLT_DIM_Y (h);
+ SET_BLT_MASK ((planemask & 0xFF));
+ SET_BLT_RAS_OP (ROP_SRC);
+ SET_BLT_CNTRL2 (0x00);
+ SET_BLT_CNTRL1 ((BLT_ACT_STAT | BLT_PACKED | BLT_SRC_COLR | blit_dir));
+#endif
break;
case WD90C33:
wd90c33BitBlt((unsigned char *)psrcBase, (unsigned char *)pdstBase,
diff --git a/xc/programs/Xserver/hw/xfree86/xf86Version.h b/xc/programs/Xserver/hw/xfree86/xf86Version.h
index 2af08d427..96865a314 100644
--- a/xc/programs/Xserver/hw/xfree86/xf86Version.h
+++ b/xc/programs/Xserver/hw/xfree86/xf86Version.h
@@ -1,4 +1,4 @@
-/* $XConsortium: xf86Version.h,v 1.4 95/01/06 21:02:29 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 3.62 1995/01/15 10:28:56 dawes Exp $ */
+/* $XConsortium: xf86Version.h,v 1.5 95/01/16 13:16:09 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 3.68 1995/01/23 01:28:10 dawes Exp $ */
-#define XF86_VERSION " 3.1.0C "
+#define XF86_VERSION " 3.1.1 "
diff --git a/xc/programs/Xserver/hw/xfree86/xf86config/Cards b/xc/programs/Xserver/hw/xfree86/xf86config/Cards
index 2e3ff38ef..0a4823b77 100644
--- a/xc/programs/Xserver/hw/xfree86/xf86config/Cards
+++ b/xc/programs/Xserver/hw/xfree86/xf86config/Cards
@@ -18,8 +18,8 @@
# The majority of entries are just a binding of a model name to a
# chipset/server and untested.
#
-# $XConsortium: Cards,v 1.1 95/01/06 20:53:10 kaleb Exp kaleb $
-# $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/Cards,v 3.3 1995/01/15 10:35:52 dawes Exp $
+# $XConsortium: Cards,v 1.2 95/01/16 13:18:29 kaleb Exp kaleb $
+# $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/Cards,v 3.6 1995/01/23 01:33:04 dawes Exp $
# Cirrus Logic
@@ -129,6 +129,14 @@ NAME VI720
CHIPSET CL-GD5434
SEE Cirrus Logic GD543x
+NAME Cirrus Logic GD62xx (laptop)
+CHIPSET CL-GD6205/15/25/35
+SERVER SVGA
+
+NAME Cirrus Logic GD64xx (laptop)
+CHIPSET CL-GD6420/6440
+SERVER SVGA
+
# S3 801/805
NAME S3-801/805 (generic)
@@ -178,7 +186,7 @@ LINE #Probable clocks:
LINE #Clocks 25.20 28.32 32.50 0.00 40.00 44.90 50.40 65.00
LINE #Clocks 78.00 56.70 63.10 75.10 80.00 89.90 100.90 31.50
-NAME Orchid Farenheit-1280+
+NAME Orchid Fahrenheit-1280+
CHIPSET S3-801/805
SERVER S3
RAMDAC att20C490
@@ -187,6 +195,7 @@ LINE Option "dac_8_bit"
LINE #Probable clocks:
LINE #Clocks 25.20 28.32 40.0 0.0 50.10 77.0 36.10 45.0
LINE #Clocks 130.0 120.20 80.0 31.50 110.30 65.0 75.0 94.60
+
NAME Diamond Stealth 24
SEE S3-801/805 (generic)
@@ -215,10 +224,21 @@ RAMDAC s3_sdac
CLOCKCHIP s3_sdac
NOCLOCKPROBE
-NAME S3-864 with S3-Trio64 chip
+NAME S3-864 with ATT 20C498 or 21C498
+CHIPSET S3-864
+SERVER S3
+RAMDAC att20c498
+LINE Option "dac_8_bit"
+
+NAME S3-Trio64 (generic)
CHIPSET S3-Trio64
-SERVER VGA16
-UNSUPPORTED
+SERVER S3
+NOCLOCKPROBE
+
+NAME S3-Trio32 (generic)
+CHIPSET S3-Trio32
+SERVER S3
+NOCLOCKPROBE
NAME Genoa Phantom 64i with S3-SDAC
DACSPEED 135
@@ -232,15 +252,15 @@ LINE Chipset "mmio_928"
LINE Option "number_nine"
LINE Option "dac_8_bit"
-NAME Number Nine GXE64 with S3-Trio64 chip
-SEE S3-864 with S3-Trio64 chip
+NAME Number Nine GXE64 with S3-Trio64
+SEE S3-Trio64 (generic)
NAME Diamond Stealth 64 DRAM with S3-SDAC
DACSPEED 135
SEE S3-864 with SDAC (86C716)
-NAME Diamond Stealth 64 DRAM with S3-Trio64 chip
-SEE S3-864 with S3-Trio64 chip
+NAME Diamond Stealth 64 DRAM with S3-Trio64
+SEE S3-Trio64 (generic)
NAME Actix GE64
SEE S3-864 (generic)
@@ -263,13 +283,22 @@ LINE # the following settings should be detected and set automaticly by XF86
LINE # if the serial number of the ELSA card is printed correctly:
LINE #ClockChip "icd2061a"
-NAME Miro Crystal 20SD
-DACSPEED 135
+NAME Miro Crystal 20SD with ICS2494 (BIOS 1.xx)
+SEE S3-864 with ATT 20C498 or 21C498
+
+NAME Miro Crystal 20SD with ICD2061A (BIOS 2.xx)
+CLOCKCHIP icd2061a
+SEE S3-864 with ATT 20C498 or 21C498
+
+NAME Miro Crystal 20SD with S3-SDAC (BIOS 3.xx)
SEE S3-864 with SDAC (86C716)
NAME SPEA/V7 Mirage P64
SEE S3-864 (generic)
+NAME SPEA/V7 Mirage P64 with S3-Trio64
+SEE S3-Trio64 (generic)
+
NAME VideoMagic PCI V864
SEE S3-864 (generic)
@@ -304,6 +333,12 @@ SERVER S3
CLOCKCHIP icd2061a
LINE Option "dac_8_bit"
+NAME Miro Crystal 40SV
+CHIPSET S3-964
+SERVER S3
+CLOCKCHIP ti3025
+LINE Option "dac_8_bit"
+
NAME Elsa Winner 2000 Pro 4Mb
CHIPSET S3-964
SERVER S3
@@ -331,16 +366,6 @@ LINE # if the serial number of the ELSA card is printed correctly:
LINE #ClockChip "icd2061a"
LINE #Membase 0xf8000000
-NAME Elsa Winner 1000 Pro with AT&T or STG RAMDAC
-CHIPSET S3-928
-SERVER S3
-LINE Option "dac_8_bit"
-LINE # the following settings should be detected and set automaticly by XF86_S3
-LINE # if the serial number of the ELSA card is printed correctly:
-LINE #
-LINE # ClockChip "icd2061a"
-LINE # Membase 0xf3000000
-
NAME Elsa Winner 2000
SEE S3-928 (generic)
@@ -573,6 +598,16 @@ NAME Diamond SpeedStar 24X
CHIPSET WD90C31
SERVER SVGA
+NAME WD 90C24 (laptop) (wd90c30 compatible)
+CHIPSET WD90C24
+SERVER SVGA
+LINE Chipset "wd90c30"
+
+NAME WD 90C24A (laptop) (wd90c31 compatible)
+CHIPSET WD90C24A
+SERVER SVGA
+LINE Chipset "wd90c31"
+
# Avance Logic
NAME Avance Logic (generic)
diff --git a/xc/programs/Xserver/hw/xfree86/xf86config/cards.c b/xc/programs/Xserver/hw/xfree86/xf86config/cards.c
index 40934cd91..b9e5307f0 100644
--- a/xc/programs/Xserver/hw/xfree86/xf86config/cards.c
+++ b/xc/programs/Xserver/hw/xfree86/xf86config/cards.c
@@ -1,5 +1,5 @@
-/* $XConsortium: cards.c,v 1.1 95/01/06 20:53:10 kaleb Exp kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/cards.c,v 3.1 1995/01/12 12:06:39 dawes Exp $ */
+/* $XConsortium: cards.c,v 1.2 95/01/16 13:18:30 kaleb Exp kaleb $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/cards.c,v 3.2 1995/01/23 01:33:07 dawes Exp $ */
/*
* Functions to manipulate card database.
@@ -79,6 +79,10 @@ static char *s3_comment =
"# Use Option \"nolinear\" if the server doesn't start up correctly\n"
"# (this avoids the linear framebuffer probe). If that fails try\n"
"# option \"nomemaccess\".\n"
+"#\n"
+"# Use Option \"sw_cursor\" if the server completely locked up\n"
+"# several times while you're moving the mouse.\n"
+"#\n"
"# Refer to /usr/X11R6/lib/doc/README.S3, and the XF86_S3 man page.\n";
static char *cirrus_comment =
@@ -91,23 +95,25 @@ static char *cirrus_comment =
int parse_database() {
FILE *f;
char buf[128];
- int i;
+ int i, lineno;
f = fopen(CARD_DATABASE_FILE, "r");
if (f == NULL)
return -1;
lastcard = -1;
+ lineno = 0;
for (;;) {
if (getline(f, buf))
break;
+ lineno++;
if (buf[0] == '#')
/* Comment. */
continue;
if (strncmp(buf, "END", 3) == 0)
/* End of database. */
break;
- if (strncmp(buf, "LINE", 4) == 0) {
+ if (strncmp(buf, "LINE", 4) == 0 && lastcard>=0) {
/* Line of Device comment. */
char *lines;
/* Append to existing lines. */
@@ -118,7 +124,16 @@ int parse_database() {
* The following keywords require the trailing newline
* to be deleted.
*/
- buf[strlen(buf) - 1] = '\0';
+ i = strlen(buf);
+ buf[--i] = '\0';
+
+ /* remove trailing spaces or tabs */
+ for(--i; i>=0 && (buf[i] == ' ' || buf[i] == '\011'); i--) ;
+ if (i>=0)
+ buf[i+1] = '\0';
+ else
+ continue; /* skip empty lines */
+
if (strncmp(buf, "NAME", 4) == 0) {
/* New entry. */
lastcard++;
@@ -132,6 +147,8 @@ int parse_database() {
card[lastcard].lines = "";
continue;
}
+ if (lastcard < 0) /* no NAME line found yet */
+ continue;
if (strncmp(buf, "SEE", 3) == 0) {
/* Reference to another entry. */
int i;
@@ -177,6 +194,7 @@ int parse_database() {
/* Clockchip indentifier. */
card[lastcard].clockchip = malloc(strlen(buf + 10) + 1);
strcpy(card[lastcard].clockchip, buf + 10);
+ card[lastcard].flags |= NOCLOCKPROBE;
continue;
}
if (strncmp(buf, "DACSPEED", 8) == 0) {
@@ -196,14 +214,16 @@ int parse_database() {
/* test for missing required fields */
if (card[lastcard].server == NULL) {
fprintf(stderr, "Warning SERVER specification missing "
- "in Card database entry %s.\n",
- card[lastcard].name);
- card[lastcard].server = "unknown";
+ "in Card database entry %s (line %d).\n",
+ card[lastcard].name, lineno);
+ keypress();
+ card[lastcard].server = "unknown";
}
if (card[lastcard].chipset == NULL) {
fprintf(stderr, "Warning CHIPSET specification missing "
- "in Card database entry %s.\n",
- card[lastcard].name);
+ "in Card database entry %s (line %d).\n",
+ card[lastcard].name, lineno);
+ keypress();
card[lastcard].chipset = "unknown";
}
}
diff --git a/xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c b/xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c
index 6d06f94c1..f842f5ca3 100644
--- a/xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c
+++ b/xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c,v 3.6 1995/01/11 03:53:11 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c,v 3.8 1995/01/23 01:33:09 dawes Exp $ */
/*
* This is a configuration program that will create a base XF86Config
@@ -842,19 +842,22 @@ static char *clockchipcomment_text =
"Choose from the following list:\n"
"\n";
-#define NU_CLOCKCHIPS 6
+#define NU_CLOCKCHIPS 8
static char *clockchip_name[] = {
+ "Chrontel 8391 (uncertain at the time of writing)",
"ICD2061A and compatibles (ICS9161A, DCS2824)",
"ICS2595",
+ "ICS5342 (similar to SDAC, but not completely compatible)",
"S3 GenDAC (86C708) and ICS5300 (autodetected)",
- "S3 SDAC (86C716) and ICS5342 (autodetected)",
+ "S3 SDAC (86C716)",
"Sierra SC11412",
"TI 3025",
};
static char *clockchip_id[] = {
- "icd2061a", "ics2595", "s3gendac", "s3_sdac", "sc11412", "ti3025"
+ "ch8391", "icd2061a", "ics2595", "ics5342", "s3gendac", "s3_sdac",
+ "sc11412", "ti3025"
};
static char *deviceclockscomment_text =
@@ -1438,11 +1441,16 @@ static char *XF86Config_firstchunk_text =
"# Multiple FontPath entries are allowed (which are concatenated together),\n"
"# as well as specifying multiple comma-separated entries in one FontPath\n"
"# command (or a combination of both methods)\n"
+"# \n"
+"# If you don't have a floating point coprocessor and emacs, Mosaic or other\n"
+"# programs take long to start up, try moving the Type1 and Speedo directory\n"
+"# to the end of this list (or comment them out).\n"
+"# \n"
"\n"
" FontPath \"/usr/X11R6/lib/X11/fonts/misc/\"\n"
-" FontPath \"/usr/X11R6/lib/X11/fonts/Type1/\"\n"
-" FontPath \"/usr/X11R6/lib/X11/fonts/Speedo/\"\n"
-" FontPath \"/usr/X11R6/lib/X11/fonts/75dpi/\"\n"
+" FontPath \"/usr/X11R6/lib/X11/fonts/Type1/\"\n"
+" FontPath \"/usr/X11R6/lib/X11/fonts/Speedo/\"\n"
+" FontPath \"/usr/X11R6/lib/X11/fonts/75dpi/\"\n"
" FontPath \"/usr/X11R6/lib/X11/fonts/100dpi/\"\n"
"\n"
"EndSection\n"