xref: /OK3568_Linux_fs/kernel/Documentation/fb/sisfb.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun==============
2*4882a593SmuzhiyunWhat is sisfb?
3*4882a593Smuzhiyun==============
4*4882a593Smuzhiyun
5*4882a593Smuzhiyunsisfb is a framebuffer device driver for SiS (Silicon Integrated Systems)
6*4882a593Smuzhiyungraphics chips. Supported are:
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun- SiS 300 series: SiS 300/305, 540, 630(S), 730(S)
9*4882a593Smuzhiyun- SiS 315 series: SiS 315/H/PRO, 55x, (M)65x, 740, (M)661(F/M)X, (M)741(GX)
10*4882a593Smuzhiyun- SiS 330 series: SiS 330 ("Xabre"), (M)760
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunWhy do I need a framebuffer driver?
14*4882a593Smuzhiyun===================================
15*4882a593Smuzhiyun
16*4882a593Smuzhiyunsisfb is eg. useful if you want a high-resolution text console. Besides that,
17*4882a593Smuzhiyunsisfb is required to run DirectFB (which comes with an additional, dedicated
18*4882a593Smuzhiyundriver for the 315 series).
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunOn the 300 series, sisfb on kernels older than 2.6.3 furthermore plays an
21*4882a593Smuzhiyunimportant role in connection with DRM/DRI: Sisfb manages the memory heap
22*4882a593Smuzhiyunused by DRM/DRI for 3D texture and other data. This memory management is
23*4882a593Smuzhiyunrequired for using DRI/DRM.
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunKernels >= around 2.6.3 do not need sisfb any longer for DRI/DRM memory
26*4882a593Smuzhiyunmanagement. The SiS DRM driver has been updated and features a memory manager
27*4882a593Smuzhiyunof its own (which will be used if sisfb is not compiled). So unless you want
28*4882a593Smuzhiyuna graphical console, you don't need sisfb on kernels >=2.6.3.
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunSidenote: Since this seems to be a commonly made mistake: sisfb and vesafb
31*4882a593Smuzhiyuncannot be active at the same time! Do only select one of them in your kernel
32*4882a593Smuzhiyunconfiguration.
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunHow are parameters passed to sisfb?
36*4882a593Smuzhiyun===================================
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunWell, it depends: If compiled statically into the kernel, use lilo's append
39*4882a593Smuzhiyunstatement to add the parameters to the kernel command line. Please see lilo's
40*4882a593Smuzhiyun(or GRUB's) documentation for more information. If sisfb is a kernel module,
41*4882a593Smuzhiyunparameters are given with the modprobe (or insmod) command.
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunExample for sisfb as part of the static kernel: Add the following line to your
44*4882a593Smuzhiyunlilo.conf::
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun     append="video=sisfb:mode:1024x768x16,mem:12288,rate:75"
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunExample for sisfb as a module: Start sisfb by typing::
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun     modprobe sisfb mode=1024x768x16 rate=75 mem=12288
51*4882a593Smuzhiyun
52*4882a593SmuzhiyunA common mistake is that folks use a wrong parameter format when using the
53*4882a593Smuzhiyundriver compiled into the kernel. Please note: If compiled into the kernel,
54*4882a593Smuzhiyunthe parameter format is video=sisfb:mode:none or video=sisfb:mode:1024x768x16
55*4882a593Smuzhiyun(or whatever mode you want to use, alternatively using any other format
56*4882a593Smuzhiyundescribed above or the vesa keyword instead of mode). If compiled as a module,
57*4882a593Smuzhiyunthe parameter format reads mode=none or mode=1024x768x16 (or whatever mode you
58*4882a593Smuzhiyunwant to use). Using a "=" for a ":" (and vice versa) is a huge difference!
59*4882a593SmuzhiyunAdditionally: If you give more than one argument to the in-kernel sisfb, the
60*4882a593Smuzhiyunarguments are separated with ",". For example::
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun   video=sisfb:mode:1024x768x16,rate:75,mem:12288
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun
65*4882a593SmuzhiyunHow do I use it?
66*4882a593Smuzhiyun================
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunPreface statement: This file only covers very little of the driver's
69*4882a593Smuzhiyuncapabilities and features. Please refer to the author's and maintainer's
70*4882a593Smuzhiyunwebsite at http://www.winischhofer.net/linuxsisvga.shtml for more
71*4882a593Smuzhiyuninformation. Additionally, "modinfo sisfb" gives an overview over all
72*4882a593Smuzhiyunsupported options including some explanation.
73*4882a593Smuzhiyun
74*4882a593SmuzhiyunThe desired display mode can be specified using the keyword "mode" with
75*4882a593Smuzhiyuna parameter in one of the following formats:
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun  - XxYxDepth or
78*4882a593Smuzhiyun  - XxY-Depth or
79*4882a593Smuzhiyun  - XxY-Depth@Rate or
80*4882a593Smuzhiyun  - XxY
81*4882a593Smuzhiyun  - or simply use the VESA mode number in hexadecimal or decimal.
82*4882a593Smuzhiyun
83*4882a593SmuzhiyunFor example: 1024x768x16, 1024x768-16@75, 1280x1024-16. If no depth is
84*4882a593Smuzhiyunspecified, it defaults to 8. If no rate is given, it defaults to 60Hz. Depth 32
85*4882a593Smuzhiyunmeans 24bit color depth (but 32 bit framebuffer depth, which is not relevant
86*4882a593Smuzhiyunto the user).
87*4882a593Smuzhiyun
88*4882a593SmuzhiyunAdditionally, sisfb understands the keyword "vesa" followed by a VESA mode
89*4882a593Smuzhiyunnumber in decimal or hexadecimal. For example: vesa=791 or vesa=0x117. Please
90*4882a593Smuzhiyunuse either "mode" or "vesa" but not both.
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunLinux 2.4 only: If no mode is given, sisfb defaults to "no mode" (mode=none) if
93*4882a593Smuzhiyuncompiled as a module; if sisfb is statically compiled into the kernel, it
94*4882a593Smuzhiyundefaults to 800x600x8 unless CRT2 type is LCD, in which case the LCD's native
95*4882a593Smuzhiyunresolution is used. If you want to switch to a different mode, use the fbset
96*4882a593Smuzhiyunshell command.
97*4882a593Smuzhiyun
98*4882a593SmuzhiyunLinux 2.6 only: If no mode is given, sisfb defaults to 800x600x8 unless CRT2
99*4882a593Smuzhiyuntype is LCD, in which case it defaults to the LCD's native resolution. If
100*4882a593Smuzhiyunyou want to switch to another mode, use the stty shell command.
101*4882a593Smuzhiyun
102*4882a593SmuzhiyunYou should compile in both vgacon (to boot if you remove you SiS card from
103*4882a593Smuzhiyunyour system) and sisfb (for graphics mode). Under Linux 2.6, also "Framebuffer
104*4882a593Smuzhiyunconsole support" (fbcon) is needed for a graphical console.
105*4882a593Smuzhiyun
106*4882a593SmuzhiyunYou should *not* compile-in vesafb. And please do not use the "vga=" keyword
107*4882a593Smuzhiyunin lilo's or grub's configuration file; mode selection is done using the
108*4882a593Smuzhiyun"mode" or "vesa" keywords as a parameter. See above and below.
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun
111*4882a593SmuzhiyunX11
112*4882a593Smuzhiyun===
113*4882a593Smuzhiyun
114*4882a593SmuzhiyunIf using XFree86 or X.org, it is recommended that you don't use the "fbdev"
115*4882a593Smuzhiyundriver but the dedicated "sis" X driver. The "sis" X driver and sisfb are
116*4882a593Smuzhiyundeveloped by the same person (Thomas Winischhofer) and cooperate well with
117*4882a593Smuzhiyuneach other.
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun
120*4882a593SmuzhiyunSVGALib
121*4882a593Smuzhiyun=======
122*4882a593Smuzhiyun
123*4882a593SmuzhiyunSVGALib, if directly accessing the hardware, never restores the screen
124*4882a593Smuzhiyuncorrectly, especially on laptops or if the output devices are LCD or TV.
125*4882a593SmuzhiyunTherefore, use the chipset "FBDEV" in SVGALib configuration. This will make
126*4882a593SmuzhiyunSVGALib use the framebuffer device for mode switches and restoration.
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun
129*4882a593SmuzhiyunConfiguration
130*4882a593Smuzhiyun=============
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun(Some) accepted options:
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun=========  ==================================================================
135*4882a593Smuzhiyunoff        Disable sisfb. This option is only understood if sisfb is
136*4882a593Smuzhiyun	   in-kernel, not a module.
137*4882a593Smuzhiyunmem:X      size of memory for the console, rest will be used for DRI/DRM. X
138*4882a593Smuzhiyun	   is in kilobytes. On 300 series, the default is 4096, 8192 or
139*4882a593Smuzhiyun	   16384 (each in kilobyte) depending on how much video ram the card
140*4882a593Smuzhiyun	   has. On 315/330 series, the default is the maximum available ram
141*4882a593Smuzhiyun	   (since DRI/DRM is not supported for these chipsets).
142*4882a593Smuzhiyunnoaccel    do not use 2D acceleration engine. (Default: use acceleration)
143*4882a593Smuzhiyunnoypan     disable y-panning and scroll by redrawing the entire screen.
144*4882a593Smuzhiyun	   This is much slower than y-panning. (Default: use y-panning)
145*4882a593Smuzhiyunvesa:X     selects startup videomode. X is number from 0 to 0x1FF and
146*4882a593Smuzhiyun	   represents the VESA mode number (can be given in decimal or
147*4882a593Smuzhiyun	   hexadecimal form, the latter prefixed with "0x").
148*4882a593Smuzhiyunmode:X     selects startup videomode. Please see above for the format of
149*4882a593Smuzhiyun	   "X".
150*4882a593Smuzhiyun=========  ==================================================================
151*4882a593Smuzhiyun
152*4882a593SmuzhiyunBoolean options such as "noaccel" or "noypan" are to be given without a
153*4882a593Smuzhiyunparameter if sisfb is in-kernel (for example "video=sisfb:noypan). If
154*4882a593Smuzhiyunsisfb is a module, these are to be set to 1 (for example "modprobe sisfb
155*4882a593Smuzhiyunnoypan=1").
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun
158*4882a593SmuzhiyunThomas Winischhofer <thomas@winischhofer.net>
159*4882a593Smuzhiyun
160*4882a593SmuzhiyunMay 27, 2004
161