Commit 44637a12 authored by Knut Petersen's avatar Knut Petersen Committed by Linus Torvalds

[PATCH] Update cyblafb driver

This is a major update to the cyblafb framebuffer driver. Most
of the stuff has been tested in the mm tree.

Main advantages:
============
  - vxres > xres support
  - ywrap and xpan support
  - much faster for almost all modes (e.g. 1280x1024-16bpp
     draws more than 41 full screens of text instead of about 25
     full screens of text per second on authors Epia 5000)
  - module init/exit code fixed
  - bugs triggered by console rotation fixed
  - lots of minor improvements
  - startup modes suitable for high performance scrolling
     in all directions

This diff  also contains a lot of white space fixes.

No side effects are possible, only one single graphics core is affected.
Signed-off-by: default avatarKnut Petersen <Knut_Petersen@t-online.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 8b78e83b
...@@ -11,4 +11,3 @@ Untested features ...@@ -11,4 +11,3 @@ Untested features
All LCD stuff is untested. If it worked in tridentfb, it should work in 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. cyblafb. Please test and report the results to Knut_Petersen@t-online.de.
...@@ -14,142 +14,141 @@ ...@@ -14,142 +14,141 @@
# #
mode "640x480-50" mode "640x480-50"
geometry 640 480 640 3756 8 geometry 640 480 2048 4096 8
timings 47619 4294967256 24 17 0 216 3 timings 47619 4294967256 24 17 0 216 3
endmode endmode
mode "640x480-60" mode "640x480-60"
geometry 640 480 640 3756 8 geometry 640 480 2048 4096 8
timings 39682 4294967256 24 17 0 216 3 timings 39682 4294967256 24 17 0 216 3
endmode endmode
mode "640x480-70" mode "640x480-70"
geometry 640 480 640 3756 8 geometry 640 480 2048 4096 8
timings 34013 4294967256 24 17 0 216 3 timings 34013 4294967256 24 17 0 216 3
endmode endmode
mode "640x480-72" mode "640x480-72"
geometry 640 480 640 3756 8 geometry 640 480 2048 4096 8
timings 33068 4294967256 24 17 0 216 3 timings 33068 4294967256 24 17 0 216 3
endmode endmode
mode "640x480-75" mode "640x480-75"
geometry 640 480 640 3756 8 geometry 640 480 2048 4096 8
timings 31746 4294967256 24 17 0 216 3 timings 31746 4294967256 24 17 0 216 3
endmode endmode
mode "640x480-80" mode "640x480-80"
geometry 640 480 640 3756 8 geometry 640 480 2048 4096 8
timings 29761 4294967256 24 17 0 216 3 timings 29761 4294967256 24 17 0 216 3
endmode endmode
mode "640x480-85" mode "640x480-85"
geometry 640 480 640 3756 8 geometry 640 480 2048 4096 8
timings 28011 4294967256 24 17 0 216 3 timings 28011 4294967256 24 17 0 216 3
endmode endmode
mode "800x600-50" mode "800x600-50"
geometry 800 600 800 3221 8 geometry 800 600 2048 4096 8
timings 30303 96 24 14 0 136 11 timings 30303 96 24 14 0 136 11
endmode endmode
mode "800x600-60" mode "800x600-60"
geometry 800 600 800 3221 8 geometry 800 600 2048 4096 8
timings 25252 96 24 14 0 136 11 timings 25252 96 24 14 0 136 11
endmode endmode
mode "800x600-70" mode "800x600-70"
geometry 800 600 800 3221 8 geometry 800 600 2048 4096 8
timings 21645 96 24 14 0 136 11 timings 21645 96 24 14 0 136 11
endmode endmode
mode "800x600-72" mode "800x600-72"
geometry 800 600 800 3221 8 geometry 800 600 2048 4096 8
timings 21043 96 24 14 0 136 11 timings 21043 96 24 14 0 136 11
endmode endmode
mode "800x600-75" mode "800x600-75"
geometry 800 600 800 3221 8 geometry 800 600 2048 4096 8
timings 20202 96 24 14 0 136 11 timings 20202 96 24 14 0 136 11
endmode endmode
mode "800x600-80" mode "800x600-80"
geometry 800 600 800 3221 8 geometry 800 600 2048 4096 8
timings 18939 96 24 14 0 136 11 timings 18939 96 24 14 0 136 11
endmode endmode
mode "800x600-85" mode "800x600-85"
geometry 800 600 800 3221 8 geometry 800 600 2048 4096 8
timings 17825 96 24 14 0 136 11 timings 17825 96 24 14 0 136 11
endmode endmode
mode "1024x768-50" mode "1024x768-50"
geometry 1024 768 1024 2815 8 geometry 1024 768 2048 4096 8
timings 19054 144 24 29 0 120 3 timings 19054 144 24 29 0 120 3
endmode endmode
mode "1024x768-60" mode "1024x768-60"
geometry 1024 768 1024 2815 8 geometry 1024 768 2048 4096 8
timings 15880 144 24 29 0 120 3 timings 15880 144 24 29 0 120 3
endmode endmode
mode "1024x768-70" mode "1024x768-70"
geometry 1024 768 1024 2815 8 geometry 1024 768 2048 4096 8
timings 13610 144 24 29 0 120 3 timings 13610 144 24 29 0 120 3
endmode endmode
mode "1024x768-72" mode "1024x768-72"
geometry 1024 768 1024 2815 8 geometry 1024 768 2048 4096 8
timings 13232 144 24 29 0 120 3 timings 13232 144 24 29 0 120 3
endmode endmode
mode "1024x768-75" mode "1024x768-75"
geometry 1024 768 1024 2815 8 geometry 1024 768 2048 4096 8
timings 12703 144 24 29 0 120 3 timings 12703 144 24 29 0 120 3
endmode endmode
mode "1024x768-80" mode "1024x768-80"
geometry 1024 768 1024 2815 8 geometry 1024 768 2048 4096 8
timings 11910 144 24 29 0 120 3 timings 11910 144 24 29 0 120 3
endmode endmode
mode "1024x768-85" mode "1024x768-85"
geometry 1024 768 1024 2815 8 geometry 1024 768 2048 4096 8
timings 11209 144 24 29 0 120 3 timings 11209 144 24 29 0 120 3
endmode endmode
mode "1280x1024-50" mode "1280x1024-50"
geometry 1280 1024 1280 2662 8 geometry 1280 1024 2048 4096 8
timings 11114 232 16 39 0 160 3 timings 11114 232 16 39 0 160 3
endmode endmode
mode "1280x1024-60" mode "1280x1024-60"
geometry 1280 1024 1280 2662 8 geometry 1280 1024 2048 4096 8
timings 9262 232 16 39 0 160 3 timings 9262 232 16 39 0 160 3
endmode endmode
mode "1280x1024-70" mode "1280x1024-70"
geometry 1280 1024 1280 2662 8 geometry 1280 1024 2048 4096 8
timings 7939 232 16 39 0 160 3 timings 7939 232 16 39 0 160 3
endmode endmode
mode "1280x1024-72" mode "1280x1024-72"
geometry 1280 1024 1280 2662 8 geometry 1280 1024 2048 4096 8
timings 7719 232 16 39 0 160 3 timings 7719 232 16 39 0 160 3
endmode endmode
mode "1280x1024-75" mode "1280x1024-75"
geometry 1280 1024 1280 2662 8 geometry 1280 1024 2048 4096 8
timings 7410 232 16 39 0 160 3 timings 7410 232 16 39 0 160 3
endmode endmode
mode "1280x1024-80" mode "1280x1024-80"
geometry 1280 1024 1280 2662 8 geometry 1280 1024 2048 4096 8
timings 6946 232 16 39 0 160 3 timings 6946 232 16 39 0 160 3
endmode endmode
mode "1280x1024-85" mode "1280x1024-85"
geometry 1280 1024 1280 2662 8 geometry 1280 1024 2048 4096 8
timings 6538 232 16 39 0 160 3 timings 6538 232 16 39 0 160 3
endmode endmode
...@@ -77,4 +77,3 @@ patch that speeds up kernel bitblitting a lot ( > 20%). ...@@ -77,4 +77,3 @@ patch that speeds up kernel bitblitting a lot ( > 20%).
| | | | | | | | | |
| | | | | | | | | |
+-----------+-----------------+-----------------+-----------------+ +-----------+-----------------+-----------------+-----------------+
...@@ -22,11 +22,10 @@ accelerated color blitting Who needs it? The console driver does use color ...@@ -22,11 +22,10 @@ accelerated color blitting Who needs it? The console driver does use color
everything else is done using color expanding everything else is done using color expanding
blitting of 1bpp character bitmaps. blitting of 1bpp character bitmaps.
xpanning Who needs it?
ioctls Who needs it? ioctls Who needs it?
TV-out Will be done later TV-out Will be done later. Use "vga= " at boot time
to set a suitable video mode.
??? Feel free to contact me if you have any ??? Feel free to contact me if you have any
feature requests feature requests
...@@ -40,6 +40,16 @@ Selecting Modes ...@@ -40,6 +40,16 @@ Selecting Modes
None of the modes possible to select as startup modes are affected by None of the modes possible to select as startup modes are affected by
the problems described at the end of the next subsection. the problems described at the end of the next subsection.
For all startup modes cyblafb chooses a virtual x resolution of 2048,
the only exception is mode 1280x1024 in combination with 32 bpp. This
allows ywrap scrolling for all those modes if rotation is 0 or 2, and
also fast scrolling if rotation is 1 or 3. The default virtual y reso-
lution is 4096 for bpp == 8, 2048 for bpp==16 and 1024 for bpp == 32,
again with the only exception of 1280x1024 at 32 bpp.
Please do set your video memory size to 8 Mb in the Bios setup. Other
values will work, but performace is decreased for a lot of modes.
Mode changes using fbset Mode changes using fbset
======================== ========================
...@@ -54,20 +64,26 @@ Selecting Modes ...@@ -54,20 +64,26 @@ Selecting Modes
- if a flat panel is found, cyblafb does not allow you - if a flat panel is found, cyblafb does not allow you
to program a resolution higher than the physical to program a resolution higher than the physical
resolution of the flat panel monitor resolution of the flat panel monitor
- cyblafb does not allow xres to differ from xres_virtual
- cyblafb does not allow vclk to exceed 230 MHz. As 32 bpp - cyblafb does not allow vclk to exceed 230 MHz. As 32 bpp
and (currently) 24 bit modes use a doubled vclk internally, and (currently) 24 bit modes use a doubled vclk internally,
the dotclock limit as seen by fbset is 115 MHz for those the dotclock limit as seen by fbset is 115 MHz for those
modes and 230 MHz for 8 and 16 bpp modes. modes and 230 MHz for 8 and 16 bpp modes.
- cyblafb will allow you to select very high resolutions as
long as the hardware can be programmed to these modes. The
documented limit 1600x1200 is not enforced, but don't expect
perfect signal quality.
Any request that violates the rules given above will be ignored and Any request that violates the rules given above will be either changed
fbset will return an error. to something the hardware supports or an error value will be returned.
If you program a virtual y resolution higher than the hardware limit, If you program a virtual y resolution higher than the hardware limit,
cyblafb will silently decrease that value to the highest possible cyblafb will silently decrease that value to the highest possible
value. value. The same is true for a virtual x resolution that is not
supported by the hardware. Cyblafb tries to adapt vyres first because
vxres decides if ywrap scrolling is possible or not.
Attempts to disable acceleration are ignored. Attempts to disable acceleration are ignored, I believe that this is
safe.
Some video modes that should work do not work as expected. If you use Some video modes that should work do not work as expected. If you use
the standard fb.modes, fbset 640x480-60 will program that mode, but the standard fb.modes, fbset 640x480-60 will program that mode, but
...@@ -129,10 +145,6 @@ mode 640x480 or 800x600 or 1024x768 or 1280x1024 ...@@ -129,10 +145,6 @@ mode 640x480 or 800x600 or 1024x768 or 1280x1024
verbosity 0 is the default, increase to at least 2 for every verbosity 0 is the default, increase to at least 2 for every
bug report! bug report!
vesafb allows cyblafb to be loaded after vesafb has been
loaded. See sections "Module unloading ...".
Development hints Development hints
================= =================
...@@ -195,7 +207,7 @@ a graphics mode. ...@@ -195,7 +207,7 @@ a graphics mode.
After booting, load cyblafb without any mode and bpp parameter and assign After booting, load cyblafb without any mode and bpp parameter and assign
cyblafb to individual ttys using con2fb, e.g.: cyblafb to individual ttys using con2fb, e.g.:
modprobe cyblafb vesafb=1 modprobe cyblafb
con2fb /dev/fb1 /dev/tty1 con2fb /dev/fb1 /dev/tty1
Unloading cyblafb works without problems after you assign vesafb to all Unloading cyblafb works without problems after you assign vesafb to all
...@@ -203,4 +215,3 @@ ttys again, e.g.: ...@@ -203,4 +215,3 @@ ttys again, e.g.:
con2fb /dev/fb0 /dev/tty1 con2fb /dev/fb0 /dev/tty1
rmmod cyblafb rmmod cyblafb
0.62
====
- the vesafb parameter has been removed as I decided to allow the
feature without any special parameter.
- Cyblafb does not use the vga style of panning any longer, now the
"right view" register in the graphics engine IO space is used. Without
that change it was impossible to use all available memory, and without
access to all available memory it is impossible to ywrap.
- The imageblit function now uses hardware acceleration for all font
widths. Hardware blitting across pixel column 2048 is broken in the
cyberblade/i1 graphics core, but we work around that hardware bug.
- modes with vxres != xres are supported now.
- ywrap scrolling is supported now and the default. This is a big
performance gain.
- default video modes use vyres > yres and vxres > xres to allow
almost optimal scrolling speed for normal and rotated screens
- some features mainly usefull for debugging the upper layers of the
framebuffer system have been added, have a look at the code
- fixed: Oops after unloading cyblafb when reading /proc/io*
- we work around some bugs of the higher framebuffer layers.
...@@ -1151,7 +1151,7 @@ config FB_VOODOO1 ...@@ -1151,7 +1151,7 @@ config FB_VOODOO1
config FB_CYBLA config FB_CYBLA
tristate "Cyberblade/i1 support" tristate "Cyberblade/i1 support"
depends on FB && PCI depends on FB && PCI && X86_32 && !64BIT
select FB_CFB_IMAGEBLIT select FB_CFB_IMAGEBLIT
select VIDEO_SELECT select VIDEO_SELECT
---help--- ---help---
......
This diff is collapsed.
...@@ -153,6 +153,10 @@ ...@@ -153,6 +153,10 @@
#define GE04 (GEBase+0x04) // source 2, p 111 #define GE04 (GEBase+0x04) // source 2, p 111
#define GE08 (GEBase+0x08) // destination 1, p 111 #define GE08 (GEBase+0x08) // destination 1, p 111
#define GE0C (GEBase+0x0C) // destination 2, p 112 #define GE0C (GEBase+0x0C) // destination 2, p 112
#define GE10 (GEBase+0x10) // right view base & enable, p 112
#define GE13 (GEBase+0x13) // left view base & enable, p 112
#define GE18 (GEBase+0x18) // block write start address, p 112
#define GE1C (GEBase+0x1C) // block write end address, p 112
#define GE20 (GEBase+0x20) // engine status, p 113 #define GE20 (GEBase+0x20) // engine status, p 113
#define GE24 (GEBase+0x24) // reset all GE pointers #define GE24 (GEBase+0x24) // reset all GE pointers
#define GE44 (GEBase+0x44) // command register, p 126 #define GE44 (GEBase+0x44) // command register, p 126
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment