[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: Knut Petersen <Knut_Petersen@t-online.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
8b78e83bfb
commit
44637a12f8
|
@ -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 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
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%).
|
||||||
| | | | |
|
| | | | |
|
||||||
| | | | |
|
| | | | |
|
||||||
+-----------+-----------------+-----------------+-----------------+
|
+-----------+-----------------+-----------------+-----------------+
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
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
|
||||||
- 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
|
||||||
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.
|
||||||
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.:
|
||||||
|
|
||||||
con2fb /dev/fb0 /dev/tty1
|
con2fb /dev/fb0 /dev/tty1
|
||||||
rmmod cyblafb
|
rmmod cyblafb
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
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
|
||||||
|
|
||||||
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---
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue