ext4: export iov_shorten from kernel for ext4's use
[wrt350n-kernel.git] / Documentation / fb / cyblafb / whycyblafb
bloba123bc11e698b7bb3e5999191dcab6c24ad506a4
1 I tried the following framebuffer drivers:
3         - TRIDENTFB is full of bugs. Acceleration is broken for Blade3D
4           graphics cores like the cyberblade/i1. It claims to support a great
5           number of devices, but documentation for most of these devices is
6           unfortunately not available. There is _no_ reason to use tridentfb
7           for cyberblade/i1 + CRT users. VESAFB is faster, and the one
8           advantage, mode switching, is broken in tridentfb.
10         - VESAFB is used by many distributions as a standard. Vesafb does
11           not support mode switching. VESAFB is a bit faster than the working
12           configurations of TRIDENTFB, but it is still too slow, even if you
13           use ypan.
15         - EPIAFB (you'll find it on sourceforge) supports the Cyberblade/i1
16           graphics core, but it still has serious bugs and developement seems
17           to have stopped. This is the one driver with TV-out support. If you
18           do need this feature, try epiafb.
20 None of these drivers was a real option for me.
22 I believe that is unreasonable to change code that announces to support 20
23 devices if I only have more or less sufficient documentation for exactly one
24 of these. The risk of breaking device foo while fixing device bar is too high.
26 So I decided to start CyBlaFB as a stripped down tridentfb.
28 All code specific to other Trident chips has been removed. After that there
29 were a lot of cosmetic changes to increase the readability of the code. All
30 register names were changed to those mnemonics used in the datasheet. Function
31 and macro names were changed if they hindered easy understanding of the code.
33 After that I debugged the code and implemented some new features. I'll try to
34 give a little summary of the main changes:
36         - calculation of vertical and horizontal timings was fixed
38         - video signal quality has been improved dramatically
40         - acceleration:
42                 - fillrect and copyarea were fixed and reenabled
44                 - color expanding imageblit was newly implemented, color
45                   imageblit (only used to draw the penguine) still uses the
46                   generic code.
48                 - init of the acceleration engine was improved and moved to a
49                   place where it really works ...
51                 - sync function has a timeout now and tries to reset and
52                   reinit the accel engine if necessary
54                 - fewer slow copyarea calls when doing ypan scrolling by using
55                   undocumented bit d21 of screen start address stored in
56                   CR2B[5]. BIOS does use it also, so this should be safe.
58         - cyblafb rejects any attempt to set modes that would cause vclk
59           values above reasonable 230 MHz. 32bit modes use a clock
60           multiplicator of 2, so fbset does show the correct values for
61           pixclock but not for vclk in this case. The fbset limit is 115 MHz
62           for 32 bpp modes.
64         - cyblafb rejects modes known to be broken or unimplemented (all
65           interlaced modes, all doublescan modes for now)
67         - cyblafb now works independant of the video mode in effect at startup
68           time (tridentfb does not init all needed registers to reasonable
69           values)
71         - switching between video modes does work reliably now
73         - the first video mode now is the one selected on startup using the
74           vga=???? mechanism or any of
75                 - 640x480, 800x600, 1024x768, 1280x1024
76                 - 8, 16, 24 or 32 bpp
77                 - refresh between 50 Hz and 85 Hz, 1 Hz steps (1280x1024-32
78                   is limited to 63Hz)
80         - pci retry and pci burst mode are settable (try to disable if you
81           experience latency problems)
83         - built as a module cyblafb might be unloaded and reloaded using
84           the vfb module and con2vt or might be used together with vesafb