Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fa68eae authored by Knut Petersen's avatar Knut Petersen Committed by Linus Torvalds
Browse files

[PATCH] framebuffer: new driver for cyberblade/i1 graphics core



This is a framebuffer driver for the Cyberblade/i1 graphics core.

Currently tridenfb claims to support the cyberblade/i1 graphics core.  This
is of very limited truth.  Even vesafb is faster and provides more working
modes and a much better quality of the video signal.  There is a great
number of bugs in tridentfb ...  but most often it is impossible to decide
if these bugs are real bugs or if fixing them for the cyberblade/i1 core
would break support for one of the other supported chips.

Tridentfb seems to be unmaintained,and documentation for most of the
supported chips is not available.  So "fixing" cyberblade/i1 support inside
of tridentfb was not an option, it would have caused numerous
if(CYBERBLADEi1) else ...  cases and would have rendered the code to be
almost unmaintainable.

A first version of this driver was published on 2005-07-31.  A fix for a
bug reported by Jochen Hein was integrated as well as some changes
requested by Antonino A.  Daplas.

A message has been added to tridentfb to inform current users of tridentfb
to switch to cyblafb if the cyberblade/i1 graphics core is detected.

This patch is one logical change, but because of the included documentation
it is bigger than 70kb.  Therefore it is not sent to lkml and
linux-fbdev-devel,

Signed-off-by: default avatarKnut Petersen <Knut_Petersen@t-online.de>
Cc: Muli Ben-Yehuda <mulix@mulix.org>
Acked-by: default avatarAntonino Daplas <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6062bfa1
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
Bugs
====

I currently don't know of any bug. Please do send reports to:
 - linux-fbdev-devel@lists.sourceforge.net
 - Knut_Petersen@t-online.de.


Untested features
=================

All LCD stuff is untested. If it worked in tridentfb, it should work in
cyblafb. Please test and report the results to Knut_Petersen@t-online.de.
+7 −0
Original line number Diff line number Diff line
Thanks to
=========
   * 	Alan Hourihane, for writing the X trident driver
   *	Jani Monoses, for writing the tridentfb driver
   *	Antonino A. Daplas, for review of the first published
	version of cyblafb and some code
   *	Jochen Hein, for testing and a helpfull bug report
+17 −0
Original line number Diff line number Diff line
Available Documentation
=======================

Apollo PLE 133 Chipset VT8601A North Bridge Datasheet, Rev. 1.82, October 22,
2001, available from VIA:

	http://www.viavpsd.com/product/6/15/DS8601A182.pdf

The datasheet is incomplete, some registers that need to be programmed are not
explained at all and important bits are listed as "reserved". But you really
need the datasheet to understand the code.  "p. xxx" comments refer to page
numbers of this document.

XFree/XOrg drivers are available and of good quality, looking at the code
there is a good idea if the datasheet does not provide enough information
or if the datasheet seems to be wrong.
+155 −0
Original line number Diff line number Diff line
#
#   Sample fb.modes file
#
#	Provides an incomplete list of working modes for
#	the cyberblade/i1 graphics core.
#
#	The value 4294967256 is used instead of -40. Of course, -40 is not
#	a really reasonable value, but chip design does not always follow
#	logic. Believe me, it's ok, and it's the way the BIOS does it.
#
#	fbset requires 4294967256 in fb.modes and -40 as an argument to
#	the -t parameter. That's also not too reasonable, and it might change
#	in the future or might even be differt for your current version.
#

mode "640x480-50"
    geometry 640 480 640 3756 8
    timings 47619 4294967256 24 17 0 216 3
endmode

mode "640x480-60"
    geometry 640 480 640 3756 8
    timings 39682 4294967256 24 17 0 216 3
endmode

mode "640x480-70"
    geometry 640 480 640 3756 8
    timings 34013 4294967256 24 17 0 216 3
endmode

mode "640x480-72"
    geometry 640 480 640 3756 8
    timings 33068 4294967256 24 17 0 216 3
endmode

mode "640x480-75"
    geometry 640 480 640 3756 8
    timings 31746 4294967256 24 17 0 216 3
endmode

mode "640x480-80"
    geometry 640 480 640 3756 8
    timings 29761 4294967256 24 17 0 216 3
endmode

mode "640x480-85"
    geometry 640 480 640 3756 8
    timings 28011 4294967256 24 17 0 216 3
endmode

mode "800x600-50"
    geometry 800 600 800 3221 8
    timings 30303 96 24 14 0 136 11
endmode

mode "800x600-60"
    geometry 800 600 800 3221 8
    timings 25252 96 24 14 0 136 11
endmode

mode "800x600-70"
    geometry 800 600 800 3221 8
    timings 21645 96 24 14 0 136 11
endmode

mode "800x600-72"
    geometry 800 600 800 3221 8
    timings 21043 96 24 14 0 136 11
endmode

mode "800x600-75"
    geometry 800 600 800 3221 8
    timings 20202 96 24 14 0 136 11
endmode

mode "800x600-80"
    geometry 800 600 800 3221 8
    timings 18939 96 24 14 0 136 11
endmode

mode "800x600-85"
    geometry 800 600 800 3221 8
    timings 17825 96 24 14 0 136 11
endmode

mode "1024x768-50"
    geometry 1024 768 1024 2815 8
    timings 19054 144 24 29 0 120 3
endmode

mode "1024x768-60"
    geometry 1024 768 1024 2815 8
    timings 15880 144 24 29 0 120 3
endmode

mode "1024x768-70"
    geometry 1024 768 1024 2815 8
    timings 13610 144 24 29 0 120 3
endmode

mode "1024x768-72"
    geometry 1024 768 1024 2815 8
    timings 13232 144 24 29 0 120 3
endmode

mode "1024x768-75"
    geometry 1024 768 1024 2815 8
    timings 12703 144 24 29 0 120 3
endmode

mode "1024x768-80"
    geometry 1024 768 1024 2815 8
    timings 11910 144 24 29 0 120 3
endmode

mode "1024x768-85"
    geometry 1024 768 1024 2815 8
    timings 11209 144 24 29 0 120 3
endmode

mode "1280x1024-50"
    geometry 1280 1024 1280 2662 8
    timings 11114 232 16 39 0 160 3
endmode

mode "1280x1024-60"
    geometry 1280 1024 1280 2662 8
    timings 9262 232 16 39 0 160 3
endmode

mode "1280x1024-70"
    geometry 1280 1024 1280 2662 8
    timings 7939 232 16 39 0 160 3
endmode

mode "1280x1024-72"
    geometry 1280 1024 1280 2662 8
    timings 7719 232 16 39 0 160 3
endmode

mode "1280x1024-75"
    geometry 1280 1024 1280 2662 8
    timings 7410 232 16 39 0 160 3
endmode

mode "1280x1024-80"
    geometry 1280 1024 1280 2662 8
    timings 6946 232 16 39 0 160 3
endmode

mode "1280x1024-85"
    geometry 1280 1024 1280 2662 8
    timings 6538 232 16 39 0 160 3
endmode
+80 −0
Original line number Diff line number Diff line
Speed
=====

CyBlaFB is much faster than tridentfb and vesafb. Compare the performance data
for mode 1280x1024-[8,16,32]@61 Hz.

Test 1: Cat a file with 2000 lines of 0 characters.
Test 2: Cat a file with 2000 lines of 80 characters.
Test 3: Cat a file with 2000 lines of 160 characters.

All values show system time use in seconds, kernel 2.6.12 was used for
the measurements. 2.6.13 is a bit slower, 2.6.14 hopefully will include a
patch that speeds up kernel bitblitting a lot ( > 20%).

+-----------+-----------------------------------------------------+
|	    |			not accelerated 		  |
| TRIDENTFB +-----------------+-----------------+-----------------+
| of 2.6.12 |	   8 bpp      |     16 bpp	|     32 bpp	  |
|	    | noypan |	 ypan | noypan |   ypan | noypan |   ypan |
+-----------+--------+--------+--------+--------+--------+--------+
|    Test 1 |	4.31 |	 4.33 |   6.05 |  12.81 |  ----  |  ----  |
|    Test 2 |  67.94 |	 5.44 | 123.16 |  14.79 |  ----  |  ----  |
|    Test 3 | 131.36 |	 6.55 | 240.12 |  16.76 |  ----  |  ----  |
+-----------+--------+--------+--------+--------+--------+--------+
|  Comments |		      | 		| completely bro- |
|	    |		      | 		| ken, monitor	  |
|	    |		      | 		| switches off	  |
+-----------+-----------------+-----------------+-----------------+


+-----------+-----------------------------------------------------+
|	    |			  accelerated			  |
| TRIDENTFB +-----------------+-----------------+-----------------+
| of 2.6.12 |	   8 bpp      |     16 bpp	|     32 bpp	  |
|	    | noypan |	 ypan | noypan |   ypan | noypan |   ypan |
+-----------+--------+--------+--------+--------+--------+--------+
|    Test 1 |  ----  |	----  |  20.62 |   1.22 |  ----  |  ----  |
|    Test 2 |  ----  |	----  |  22.61 |   3.19 |  ----  |  ----  |
|    Test 3 |  ----  |	----  |  24.59 |   5.16 |  ----  |  ----  |
+-----------+--------+--------+--------+--------+--------+--------+
|  Comments | broken, writing | broken, ok only | completely bro- |
|	    | to wrong places | if bgcolor is	| ken, monitor	  |
|	    | on screen + bug | black, bug in	| switches off	  |
|	    | in fillrect()   | fillrect()	|		  |
+-----------+-----------------+-----------------+-----------------+


+-----------+-----------------------------------------------------+
|	    |			not accelerated 		  |
|   VESAFB  +-----------------+-----------------+-----------------+
| of 2.6.12 |	   8 bpp      |     16 bpp	|     32 bpp	  |
|	    | noypan |	 ypan | noypan |   ypan | noypan |   ypan |
+-----------+--------+--------+--------+--------+--------+--------+
|    Test 1 |	4.26 |	 3.76 |   5.99 |   7.23 |  ----  |  ----  |
|    Test 2 |  65.65 |	 4.89 | 120.88 |   9.08 |  ----  |  ----  |
|    Test 3 | 126.91 |	 5.94 | 235.77 |  11.03 |  ----  |  ----  |
+-----------+--------+--------+--------+--------+--------+--------+
|  Comments | vga=0x307       | vga=0x31a	| vga=0x31b not   |
|	    | fh=80kHz	      | fh=80kHz	| supported by	  |
|	    | fv=75kHz	      | fv=75kHz	| video BIOS and  |
|	    |		      | 		| hardware	  |
+-----------+-----------------+-----------------+-----------------+


+-----------+-----------------------------------------------------+
|	    |			  accelerated			  |
|  CYBLAFB  +-----------------+-----------------+-----------------+
|	    |	   8 bpp      |     16 bpp	|     32 bpp	  |
|	    | noypan |	 ypan | noypan |   ypan | noypan |   ypan |
+-----------+--------+--------+--------+--------+--------+--------+
|    Test 1 |	8.02 |	 0.23 |  19.04 |   0.61 |  57.12 |   2.74 |
|    Test 2 |	8.38 |	 0.55 |  19.39 |   0.92 |  57.54 |   3.13 |
|    Test 3 |	8.73 |	 0.86 |  19.74 |   1.24 |  57.95 |   3.51 |
+-----------+--------+--------+--------+--------+--------+--------+
|  Comments |		      | 		|		  |
|	    |		      | 		|		  |
|	    |		      | 		|		  |
|	    |		      | 		|		  |
+-----------+-----------------+-----------------+-----------------+
Loading