Skip to content

Commit 44637a1

Browse files
knuperoLinus Torvalds
authored andcommitted
[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 <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 8b78e83 commit 44637a1

File tree

9 files changed

+960
-695
lines changed

9 files changed

+960
-695
lines changed

Documentation/fb/cyblafb/bugs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@ Untested features
1111

1212
All LCD stuff is untested. If it worked in tridentfb, it should work in
1313
cyblafb. Please test and report the results to [email protected].
14-

Documentation/fb/cyblafb/fb.modes

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,142 +14,141 @@
1414
#
1515

1616
mode "640x480-50"
17-
geometry 640 480 640 3756 8
17+
geometry 640 480 2048 4096 8
1818
timings 47619 4294967256 24 17 0 216 3
1919
endmode
2020

2121
mode "640x480-60"
22-
geometry 640 480 640 3756 8
22+
geometry 640 480 2048 4096 8
2323
timings 39682 4294967256 24 17 0 216 3
2424
endmode
2525

2626
mode "640x480-70"
27-
geometry 640 480 640 3756 8
27+
geometry 640 480 2048 4096 8
2828
timings 34013 4294967256 24 17 0 216 3
2929
endmode
3030

3131
mode "640x480-72"
32-
geometry 640 480 640 3756 8
32+
geometry 640 480 2048 4096 8
3333
timings 33068 4294967256 24 17 0 216 3
3434
endmode
3535

3636
mode "640x480-75"
37-
geometry 640 480 640 3756 8
37+
geometry 640 480 2048 4096 8
3838
timings 31746 4294967256 24 17 0 216 3
3939
endmode
4040

4141
mode "640x480-80"
42-
geometry 640 480 640 3756 8
42+
geometry 640 480 2048 4096 8
4343
timings 29761 4294967256 24 17 0 216 3
4444
endmode
4545

4646
mode "640x480-85"
47-
geometry 640 480 640 3756 8
47+
geometry 640 480 2048 4096 8
4848
timings 28011 4294967256 24 17 0 216 3
4949
endmode
5050

5151
mode "800x600-50"
52-
geometry 800 600 800 3221 8
52+
geometry 800 600 2048 4096 8
5353
timings 30303 96 24 14 0 136 11
5454
endmode
5555

5656
mode "800x600-60"
57-
geometry 800 600 800 3221 8
57+
geometry 800 600 2048 4096 8
5858
timings 25252 96 24 14 0 136 11
5959
endmode
6060

6161
mode "800x600-70"
62-
geometry 800 600 800 3221 8
62+
geometry 800 600 2048 4096 8
6363
timings 21645 96 24 14 0 136 11
6464
endmode
6565

6666
mode "800x600-72"
67-
geometry 800 600 800 3221 8
67+
geometry 800 600 2048 4096 8
6868
timings 21043 96 24 14 0 136 11
6969
endmode
7070

7171
mode "800x600-75"
72-
geometry 800 600 800 3221 8
72+
geometry 800 600 2048 4096 8
7373
timings 20202 96 24 14 0 136 11
7474
endmode
7575

7676
mode "800x600-80"
77-
geometry 800 600 800 3221 8
77+
geometry 800 600 2048 4096 8
7878
timings 18939 96 24 14 0 136 11
7979
endmode
8080

8181
mode "800x600-85"
82-
geometry 800 600 800 3221 8
82+
geometry 800 600 2048 4096 8
8383
timings 17825 96 24 14 0 136 11
8484
endmode
8585

8686
mode "1024x768-50"
87-
geometry 1024 768 1024 2815 8
87+
geometry 1024 768 2048 4096 8
8888
timings 19054 144 24 29 0 120 3
8989
endmode
9090

9191
mode "1024x768-60"
92-
geometry 1024 768 1024 2815 8
92+
geometry 1024 768 2048 4096 8
9393
timings 15880 144 24 29 0 120 3
9494
endmode
9595

9696
mode "1024x768-70"
97-
geometry 1024 768 1024 2815 8
97+
geometry 1024 768 2048 4096 8
9898
timings 13610 144 24 29 0 120 3
9999
endmode
100100

101101
mode "1024x768-72"
102-
geometry 1024 768 1024 2815 8
102+
geometry 1024 768 2048 4096 8
103103
timings 13232 144 24 29 0 120 3
104104
endmode
105105

106106
mode "1024x768-75"
107-
geometry 1024 768 1024 2815 8
107+
geometry 1024 768 2048 4096 8
108108
timings 12703 144 24 29 0 120 3
109109
endmode
110110

111111
mode "1024x768-80"
112-
geometry 1024 768 1024 2815 8
112+
geometry 1024 768 2048 4096 8
113113
timings 11910 144 24 29 0 120 3
114114
endmode
115115

116116
mode "1024x768-85"
117-
geometry 1024 768 1024 2815 8
117+
geometry 1024 768 2048 4096 8
118118
timings 11209 144 24 29 0 120 3
119119
endmode
120120

121121
mode "1280x1024-50"
122-
geometry 1280 1024 1280 2662 8
122+
geometry 1280 1024 2048 4096 8
123123
timings 11114 232 16 39 0 160 3
124124
endmode
125125

126126
mode "1280x1024-60"
127-
geometry 1280 1024 1280 2662 8
127+
geometry 1280 1024 2048 4096 8
128128
timings 9262 232 16 39 0 160 3
129129
endmode
130130

131131
mode "1280x1024-70"
132-
geometry 1280 1024 1280 2662 8
132+
geometry 1280 1024 2048 4096 8
133133
timings 7939 232 16 39 0 160 3
134134
endmode
135135

136136
mode "1280x1024-72"
137-
geometry 1280 1024 1280 2662 8
137+
geometry 1280 1024 2048 4096 8
138138
timings 7719 232 16 39 0 160 3
139139
endmode
140140

141141
mode "1280x1024-75"
142-
geometry 1280 1024 1280 2662 8
142+
geometry 1280 1024 2048 4096 8
143143
timings 7410 232 16 39 0 160 3
144144
endmode
145145

146146
mode "1280x1024-80"
147-
geometry 1280 1024 1280 2662 8
147+
geometry 1280 1024 2048 4096 8
148148
timings 6946 232 16 39 0 160 3
149149
endmode
150150

151151
mode "1280x1024-85"
152-
geometry 1280 1024 1280 2662 8
152+
geometry 1280 1024 2048 4096 8
153153
timings 6538 232 16 39 0 160 3
154154
endmode
155-

Documentation/fb/cyblafb/performance

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,3 @@ patch that speeds up kernel bitblitting a lot ( > 20%).
7777
| | | | |
7878
| | | | |
7979
+-----------+-----------------+-----------------+-----------------+
80-

Documentation/fb/cyblafb/todo

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,10 @@ accelerated color blitting Who needs it? The console driver does use color
2222
everything else is done using color expanding
2323
blitting of 1bpp character bitmaps.
2424

25-
xpanning Who needs it?
26-
2725
ioctls Who needs it?
2826

29-
TV-out Will be done later
27+
TV-out Will be done later. Use "vga= " at boot time
28+
to set a suitable video mode.
3029

3130
??? Feel free to contact me if you have any
3231
feature requests

Documentation/fb/cyblafb/usage

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ Selecting Modes
4040
None of the modes possible to select as startup modes are affected by
4141
the problems described at the end of the next subsection.
4242

43+
For all startup modes cyblafb chooses a virtual x resolution of 2048,
44+
the only exception is mode 1280x1024 in combination with 32 bpp. This
45+
allows ywrap scrolling for all those modes if rotation is 0 or 2, and
46+
also fast scrolling if rotation is 1 or 3. The default virtual y reso-
47+
lution is 4096 for bpp == 8, 2048 for bpp==16 and 1024 for bpp == 32,
48+
again with the only exception of 1280x1024 at 32 bpp.
49+
50+
Please do set your video memory size to 8 Mb in the Bios setup. Other
51+
values will work, but performace is decreased for a lot of modes.
52+
4353
Mode changes using fbset
4454
========================
4555

@@ -54,20 +64,26 @@ Selecting Modes
5464
- if a flat panel is found, cyblafb does not allow you
5565
to program a resolution higher than the physical
5666
resolution of the flat panel monitor
57-
- cyblafb does not allow xres to differ from xres_virtual
5867
- cyblafb does not allow vclk to exceed 230 MHz. As 32 bpp
5968
and (currently) 24 bit modes use a doubled vclk internally,
6069
the dotclock limit as seen by fbset is 115 MHz for those
6170
modes and 230 MHz for 8 and 16 bpp modes.
71+
- cyblafb will allow you to select very high resolutions as
72+
long as the hardware can be programmed to these modes. The
73+
documented limit 1600x1200 is not enforced, but don't expect
74+
perfect signal quality.
6275

63-
Any request that violates the rules given above will be ignored and
64-
fbset will return an error.
76+
Any request that violates the rules given above will be either changed
77+
to something the hardware supports or an error value will be returned.
6578

6679
If you program a virtual y resolution higher than the hardware limit,
6780
cyblafb will silently decrease that value to the highest possible
68-
value.
81+
value. The same is true for a virtual x resolution that is not
82+
supported by the hardware. Cyblafb tries to adapt vyres first because
83+
vxres decides if ywrap scrolling is possible or not.
6984

70-
Attempts to disable acceleration are ignored.
85+
Attempts to disable acceleration are ignored, I believe that this is
86+
safe.
7187

7288
Some video modes that should work do not work as expected. If you use
7389
the standard fb.modes, fbset 640x480-60 will program that mode, but
@@ -129,10 +145,6 @@ mode 640x480 or 800x600 or 1024x768 or 1280x1024
129145
verbosity 0 is the default, increase to at least 2 for every
130146
bug report!
131147

132-
vesafb allows cyblafb to be loaded after vesafb has been
133-
loaded. See sections "Module unloading ...".
134-
135-
136148
Development hints
137149
=================
138150

@@ -195,12 +207,11 @@ a graphics mode.
195207
After booting, load cyblafb without any mode and bpp parameter and assign
196208
cyblafb to individual ttys using con2fb, e.g.:
197209

198-
modprobe cyblafb vesafb=1
210+
modprobe cyblafb
199211
con2fb /dev/fb1 /dev/tty1
200212

201213
Unloading cyblafb works without problems after you assign vesafb to all
202214
ttys again, e.g.:
203215

204216
con2fb /dev/fb0 /dev/tty1
205217
rmmod cyblafb
206-

Documentation/fb/cyblafb/whatsnew

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
0.62
2+
====
3+
4+
- the vesafb parameter has been removed as I decided to allow the
5+
feature without any special parameter.
6+
7+
- Cyblafb does not use the vga style of panning any longer, now the
8+
"right view" register in the graphics engine IO space is used. Without
9+
that change it was impossible to use all available memory, and without
10+
access to all available memory it is impossible to ywrap.
11+
12+
- The imageblit function now uses hardware acceleration for all font
13+
widths. Hardware blitting across pixel column 2048 is broken in the
14+
cyberblade/i1 graphics core, but we work around that hardware bug.
15+
16+
- modes with vxres != xres are supported now.
17+
18+
- ywrap scrolling is supported now and the default. This is a big
19+
performance gain.
20+
21+
- default video modes use vyres > yres and vxres > xres to allow
22+
almost optimal scrolling speed for normal and rotated screens
23+
24+
- some features mainly usefull for debugging the upper layers of the
25+
framebuffer system have been added, have a look at the code
26+
27+
- fixed: Oops after unloading cyblafb when reading /proc/io*
28+
29+
- we work around some bugs of the higher framebuffer layers.

drivers/video/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1151,7 +1151,7 @@ config FB_VOODOO1
11511151

11521152
config FB_CYBLA
11531153
tristate "Cyberblade/i1 support"
1154-
depends on FB && PCI
1154+
depends on FB && PCI && X86_32 && !64BIT
11551155
select FB_CFB_IMAGEBLIT
11561156
select VIDEO_SELECT
11571157
---help---

0 commit comments

Comments
 (0)