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