From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ondrej Zajicek Subject: fbdev driver for S3 Trio/Virge Date: Wed, 6 Dec 2006 11:06:01 +0100 Message-ID: <20061206100601.GA1408@localhost.localdomain> Reply-To: linux-fbdev-devel@lists.sourceforge.net Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from sc8-sf-mx1-b.sourceforge.net ([10.3.1.91] helo=mail.sourceforge.net) by sc8-sf-list1-new.sourceforge.net with esmtp (Exim 4.43) id 1Grtfp-00069f-FT for linux-fbdev-devel@lists.sourceforge.net; Wed, 06 Dec 2006 02:06:45 -0800 Received: from smtp1.kolej.mff.cuni.cz ([195.113.24.4]) by mail.sourceforge.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.44) id 1Grtfo-0005dt-46 for linux-fbdev-devel@lists.sourceforge.net; Wed, 06 Dec 2006 02:06:45 -0800 Content-Disposition: inline List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-fbdev-devel-bounces@lists.sourceforge.net Errors-To: linux-fbdev-devel-bounces@lists.sourceforge.net To: James Simmons Cc: linux-fbdev-devel@lists.sourceforge.net Hello This patch adds driver for S3 Trio / S3 Virge. Driver is tested with most versions of S3 Trio and with S3 Virge/DX, on i386. It is tested both as compiled-in and module. It is against linux-2.6.19. Signed-off-by: Ondrej Zajicek diff -uprN -X linux-2.6.19/Documentation/dontdiff linux-2.6.19/Documentation/fb/s3fb.txt linux-2.6.19-s3fb/Documentation/fb/s3fb.txt --- linux-2.6.19/Documentation/fb/s3fb.txt 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.19-s3fb/Documentation/fb/s3fb.txt 2006-12-05 23:19:22.000000000 +0100 @@ -0,0 +1,75 @@ + + s3fb - fbdev driver for S3 Trio/Virge chips + =========================================== + + +Supported Hardware +================== + + S3 Trio32 + S3 Trio64 (and variants V+, UV+, V2/DX, V2/GX) + S3 Virge (and variants VX, DX, GX and GX2+) + S3 Plato/PX (completely untested) + S3 Aurora64V+ (completely untested) + + - only PCI bus supported + - only BIOS initialized VGA devices supported + - probably not working on big endian + +I tested s3fb on Trio64 (plain, V+ and V2/DX) and Virge DX, all on i386. + + +Supported Features +================== + + * 4 bpp pseudocolor modes (with 18bit palette, two variants) + * 8 bpp pseudocolor mode (with 18bit palette) + * 16 bpp truecolor modes (RGB 555 and RGB 565) + * 32 bpp truecolor mode (RGB 888) + * text mode (activated by bpp = 0) + * interlaced mode variant (not available in text mode) + * doublescan mode variant (not available in text mode) + * panning in both directions + * DPMS support + +Text mode is supported even in higher resolutions, but there is limitation +to lower pixclocks (maximum between 50-60 MHz, depending on specific hardware). +This limitation is not enforced by driver. Text mode supports 8bit wide fonts +only (hardware limitation) and 16bit tall fonts (driver limitation). + +There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with +packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode +with interleaved planes (1 byte interleave), MSB first. Both modes support +8bit wide fonts only (driver limitation). + + +Missing Features +================ +(alias TODO list) + + * secondary (not initialized by BIOS) device support + * suspend/resume support + * big endian support + * Zorro bus support + * MMIO support + * 24 bpp mode support + * support for fontwidths != 8 in 4 bpp modes + * support for fontheight != 16 in text mode + * composite and external sync (is anyone able to test this?) + * hardware cursor + * video overlay support + * vsync synchronization + * feature connector support + * acceleration support (8514-like 2D, Virge 3D, busmaster transfers) + * better values for some magic registers (performance issues) + + +Known bugs +========== + + * cursor disable in text mode doesn't work + * there is some small (but larger than usual) difference between + requested and used timings + +-- +Ondrej Zajicek diff -uprN -X linux-2.6.19/Documentation/dontdiff linux-2.6.19/drivers/video/Kconfig linux-2.6.19-s3fb/drivers/video/Kconfig --- linux-2.6.19/drivers/video/Kconfig 2006-11-29 22:57:37.000000000 +0100 +++ linux-2.6.19-s3fb/drivers/video/Kconfig 2006-12-05 23:42:15.000000000 +0100 @@ -85,6 +85,14 @@ config FB_CFB_IMAGEBLIT blitting. This is used by drivers that don't provide their own (accelerated) version. +config FB_SVGALIB + tristate + depends on FB + default n + ---help--- + Common utility functions useful to fbdev drivers of VGA-based + cards. + config FB_MACMODES tristate depends on FB @@ -1143,6 +1151,17 @@ config FB_S3TRIO help If you have a S3 Trio say Y. Say N for S3 Virge. +config FB_S3 + tristate "S3 Trio/Virge support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_TILEBLITTING + select FB_SVGALIB + ---help--- + Driver for graphics boards with S3 Trio / S3 Virge chip. + config FB_SAVAGE tristate "S3 Savage support" depends on FB && PCI && EXPERIMENTAL @@ -1183,6 +1202,7 @@ config FB_SAVAGE_ACCEL the resulting framebuffer console has bothersome glitches, then choose N here. + config FB_SIS tristate "SiS/XGI display support" depends on FB && PCI @@ -1330,6 +1350,7 @@ config FB_TRIDENT_ACCEL This will compile the Trident frame buffer device with acceleration functions. + config FB_PM3 tristate "Permedia3 support" depends on FB && PCI && BROKEN diff -uprN -X linux-2.6.19/Documentation/dontdiff linux-2.6.19/drivers/video/Makefile linux-2.6.19-s3fb/drivers/video/Makefile --- linux-2.6.19/drivers/video/Makefile 2006-11-29 22:57:37.000000000 +0100 +++ linux-2.6.19-s3fb/drivers/video/Makefile 2006-12-05 23:45:59.000000000 +0100 @@ -17,6 +17,7 @@ obj-$(CONFIG_SYSFS) += backlight/ obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o obj-$(CONFIG_FB_CFB_COPYAREA) += cfbcopyarea.o obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o +obj-$(CONFIG_FB_SVGALIB) += svgalib.o obj-$(CONFIG_FB_MACMODES) += macmodes.o obj-$(CONFIG_FB_DDC) += fb_ddc.o @@ -54,6 +55,7 @@ obj-$(CONFIG_FB_S3TRIO) += S3t obj-$(CONFIG_FB_FM2) += fm2fb.o obj-$(CONFIG_FB_CYBLA) += cyblafb.o obj-$(CONFIG_FB_TRIDENT) += tridentfb.o +obj-$(CONFIG_FB_S3) += s3fb.o vgastate.o obj-$(CONFIG_FB_STI) += stifb.o obj-$(CONFIG_FB_FFB) += ffb.o sbuslib.o obj-$(CONFIG_FB_CG6) += cg6.o sbuslib.o diff -uprN -X linux-2.6.19/Documentation/dontdiff linux-2.6.19/drivers/video/s3fb.c linux-2.6.19-s3fb/drivers/video/s3fb.c --- linux-2.6.19/drivers/video/s3fb.c 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.19-s3fb/drivers/video/s3fb.c 2006-12-06 09:59:46.000000000 +0100 @@ -0,0 +1,1251 @@ +/* +* linux/drivers/video/s3fb.c -- Frame buffer device driver for S3 Trio32/64 +* +* Copyright (c) 2006 Ondrej Zajicek +* +* This file is subject to the terms and conditions of the GNU General Public +* License. See the file COPYING in the main directory of this archive for +* more details. +* +* Code is based on David Boucher's viafb (http://davesdomain.org.uk/viafb/) +* which is based on the code of neofb. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include /* Why should fb driver call console functions? strange ...*/ +#include