Commit a268422d authored by Ondrej Zajicek's avatar Ondrej Zajicek Committed by Linus Torvalds
Browse files

[PATCH] fbdev driver for S3 Trio/Virge



Add a driver for S3 Trio / S3 Virge.  Driver is tested with most versions
of S3 Trio and with S3 Virge/DX, on i386.

(akpm: We kind-of have support for this hardware already, but...

virgefb.c
  - amiga/zorro specific,
  - broken (according to Kconfig),
  - uses obsolete/nonexistent interface (struct display_switch)
  - recent Adrian Bunk's patch removes this driver

S3triofb.c
  - ppc/openfirmware specific
  - minimal functionality
  - broken (according to Kconfig),
  - uses obsolete/nonexistent interface (struct display_switch)
)

Signed-off-by: default avatarOndrej Zajicek <santiago@crfreenet.org>
Cc: James Simmons <jsimmons@infradead.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 59ae6c6b
Loading
Loading
Loading
Loading
+78 −0
Original line number Diff line number Diff line

	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 (plain, VX, 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)
	* 24 bpp truecolor mode (RGB 888) on (only on Virge VX)
	* 32 bpp truecolor mode (RGB 888) on (not on Virge VX)
	* 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
	* suspend/resume support
	* 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).

Suspend/resume works on systems that initialize video card during resume and
if device is active (for example used by fbcon).


Missing Features
================
(alias TODO list)

	* secondary (not initialized by BIOS) device support
   	* big endian support
	* Zorro bus support
	* MMIO support
	* 24 bpp mode support on more cards
	* 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

--
Ondrej Zajicek <santiago@crfreenet.org>
+19 −0
Original line number Diff line number Diff line
@@ -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
@@ -1147,6 +1155,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
+2 −0
Original line number Diff line number Diff line
@@ -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) += S3triofb.o
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
Loading