Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

docs: fb: convert docs to ReST and rename to *.rst

The conversion is actually:
- add blank lines and identation in order to identify paragraphs;
- fix tables markups;
- add some lists markups;
- mark literal blocks;
- adjust title markups.

At its new index.rst, let's add a :orphan: while this is not linked to
the main index.rst file, in order to avoid build warnings.

Also, removed the Maintained by, as requested by Geert.

Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>

authored by

Mauro Carvalho Chehab and committed by
Jonathan Corbet
ab42b818 10ffebbe

+4866 -4579
+1 -1
Documentation/admin-guide/kernel-parameters.txt
··· 5024 5024 vector=percpu: enable percpu vector domain 5025 5025 5026 5026 video= [FB] Frame buffer configuration 5027 - See Documentation/fb/modedb.txt. 5027 + See Documentation/fb/modedb.rst. 5028 5028 5029 5029 video.brightness_switch_enabled= [0,1] 5030 5030 If set to 1, on receiving an ACPI notify event
+307
Documentation/fb/api.rst
··· 1 + =========================== 2 + The Frame Buffer Device API 3 + =========================== 4 + 5 + Last revised: June 21, 2011 6 + 7 + 8 + 0. Introduction 9 + --------------- 10 + 11 + This document describes the frame buffer API used by applications to interact 12 + with frame buffer devices. In-kernel APIs between device drivers and the frame 13 + buffer core are not described. 14 + 15 + Due to a lack of documentation in the original frame buffer API, drivers 16 + behaviours differ in subtle (and not so subtle) ways. This document describes 17 + the recommended API implementation, but applications should be prepared to 18 + deal with different behaviours. 19 + 20 + 21 + 1. Capabilities 22 + --------------- 23 + 24 + Device and driver capabilities are reported in the fixed screen information 25 + capabilities field:: 26 + 27 + struct fb_fix_screeninfo { 28 + ... 29 + __u16 capabilities; /* see FB_CAP_* */ 30 + ... 31 + }; 32 + 33 + Application should use those capabilities to find out what features they can 34 + expect from the device and driver. 35 + 36 + - FB_CAP_FOURCC 37 + 38 + The driver supports the four character code (FOURCC) based format setting API. 39 + When supported, formats are configured using a FOURCC instead of manually 40 + specifying color components layout. 41 + 42 + 43 + 2. Types and visuals 44 + -------------------- 45 + 46 + Pixels are stored in memory in hardware-dependent formats. Applications need 47 + to be aware of the pixel storage format in order to write image data to the 48 + frame buffer memory in the format expected by the hardware. 49 + 50 + Formats are described by frame buffer types and visuals. Some visuals require 51 + additional information, which are stored in the variable screen information 52 + bits_per_pixel, grayscale, red, green, blue and transp fields. 53 + 54 + Visuals describe how color information is encoded and assembled to create 55 + macropixels. Types describe how macropixels are stored in memory. The following 56 + types and visuals are supported. 57 + 58 + - FB_TYPE_PACKED_PIXELS 59 + 60 + Macropixels are stored contiguously in a single plane. If the number of bits 61 + per macropixel is not a multiple of 8, whether macropixels are padded to the 62 + next multiple of 8 bits or packed together into bytes depends on the visual. 63 + 64 + Padding at end of lines may be present and is then reported through the fixed 65 + screen information line_length field. 66 + 67 + - FB_TYPE_PLANES 68 + 69 + Macropixels are split across multiple planes. The number of planes is equal to 70 + the number of bits per macropixel, with plane i'th storing i'th bit from all 71 + macropixels. 72 + 73 + Planes are located contiguously in memory. 74 + 75 + - FB_TYPE_INTERLEAVED_PLANES 76 + 77 + Macropixels are split across multiple planes. The number of planes is equal to 78 + the number of bits per macropixel, with plane i'th storing i'th bit from all 79 + macropixels. 80 + 81 + Planes are interleaved in memory. The interleave factor, defined as the 82 + distance in bytes between the beginning of two consecutive interleaved blocks 83 + belonging to different planes, is stored in the fixed screen information 84 + type_aux field. 85 + 86 + - FB_TYPE_FOURCC 87 + 88 + Macropixels are stored in memory as described by the format FOURCC identifier 89 + stored in the variable screen information grayscale field. 90 + 91 + - FB_VISUAL_MONO01 92 + 93 + Pixels are black or white and stored on a number of bits (typically one) 94 + specified by the variable screen information bpp field. 95 + 96 + Black pixels are represented by all bits set to 1 and white pixels by all bits 97 + set to 0. When the number of bits per pixel is smaller than 8, several pixels 98 + are packed together in a byte. 99 + 100 + FB_VISUAL_MONO01 is currently used with FB_TYPE_PACKED_PIXELS only. 101 + 102 + - FB_VISUAL_MONO10 103 + 104 + Pixels are black or white and stored on a number of bits (typically one) 105 + specified by the variable screen information bpp field. 106 + 107 + Black pixels are represented by all bits set to 0 and white pixels by all bits 108 + set to 1. When the number of bits per pixel is smaller than 8, several pixels 109 + are packed together in a byte. 110 + 111 + FB_VISUAL_MONO01 is currently used with FB_TYPE_PACKED_PIXELS only. 112 + 113 + - FB_VISUAL_TRUECOLOR 114 + 115 + Pixels are broken into red, green and blue components, and each component 116 + indexes a read-only lookup table for the corresponding value. Lookup tables 117 + are device-dependent, and provide linear or non-linear ramps. 118 + 119 + Each component is stored in a macropixel according to the variable screen 120 + information red, green, blue and transp fields. 121 + 122 + - FB_VISUAL_PSEUDOCOLOR and FB_VISUAL_STATIC_PSEUDOCOLOR 123 + 124 + Pixel values are encoded as indices into a colormap that stores red, green and 125 + blue components. The colormap is read-only for FB_VISUAL_STATIC_PSEUDOCOLOR 126 + and read-write for FB_VISUAL_PSEUDOCOLOR. 127 + 128 + Each pixel value is stored in the number of bits reported by the variable 129 + screen information bits_per_pixel field. 130 + 131 + - FB_VISUAL_DIRECTCOLOR 132 + 133 + Pixels are broken into red, green and blue components, and each component 134 + indexes a programmable lookup table for the corresponding value. 135 + 136 + Each component is stored in a macropixel according to the variable screen 137 + information red, green, blue and transp fields. 138 + 139 + - FB_VISUAL_FOURCC 140 + 141 + Pixels are encoded and interpreted as described by the format FOURCC 142 + identifier stored in the variable screen information grayscale field. 143 + 144 + 145 + 3. Screen information 146 + --------------------- 147 + 148 + Screen information are queried by applications using the FBIOGET_FSCREENINFO 149 + and FBIOGET_VSCREENINFO ioctls. Those ioctls take a pointer to a 150 + fb_fix_screeninfo and fb_var_screeninfo structure respectively. 151 + 152 + struct fb_fix_screeninfo stores device independent unchangeable information 153 + about the frame buffer device and the current format. Those information can't 154 + be directly modified by applications, but can be changed by the driver when an 155 + application modifies the format:: 156 + 157 + struct fb_fix_screeninfo { 158 + char id[16]; /* identification string eg "TT Builtin" */ 159 + unsigned long smem_start; /* Start of frame buffer mem */ 160 + /* (physical address) */ 161 + __u32 smem_len; /* Length of frame buffer mem */ 162 + __u32 type; /* see FB_TYPE_* */ 163 + __u32 type_aux; /* Interleave for interleaved Planes */ 164 + __u32 visual; /* see FB_VISUAL_* */ 165 + __u16 xpanstep; /* zero if no hardware panning */ 166 + __u16 ypanstep; /* zero if no hardware panning */ 167 + __u16 ywrapstep; /* zero if no hardware ywrap */ 168 + __u32 line_length; /* length of a line in bytes */ 169 + unsigned long mmio_start; /* Start of Memory Mapped I/O */ 170 + /* (physical address) */ 171 + __u32 mmio_len; /* Length of Memory Mapped I/O */ 172 + __u32 accel; /* Indicate to driver which */ 173 + /* specific chip/card we have */ 174 + __u16 capabilities; /* see FB_CAP_* */ 175 + __u16 reserved[2]; /* Reserved for future compatibility */ 176 + }; 177 + 178 + struct fb_var_screeninfo stores device independent changeable information 179 + about a frame buffer device, its current format and video mode, as well as 180 + other miscellaneous parameters:: 181 + 182 + struct fb_var_screeninfo { 183 + __u32 xres; /* visible resolution */ 184 + __u32 yres; 185 + __u32 xres_virtual; /* virtual resolution */ 186 + __u32 yres_virtual; 187 + __u32 xoffset; /* offset from virtual to visible */ 188 + __u32 yoffset; /* resolution */ 189 + 190 + __u32 bits_per_pixel; /* guess what */ 191 + __u32 grayscale; /* 0 = color, 1 = grayscale, */ 192 + /* >1 = FOURCC */ 193 + struct fb_bitfield red; /* bitfield in fb mem if true color, */ 194 + struct fb_bitfield green; /* else only length is significant */ 195 + struct fb_bitfield blue; 196 + struct fb_bitfield transp; /* transparency */ 197 + 198 + __u32 nonstd; /* != 0 Non standard pixel format */ 199 + 200 + __u32 activate; /* see FB_ACTIVATE_* */ 201 + 202 + __u32 height; /* height of picture in mm */ 203 + __u32 width; /* width of picture in mm */ 204 + 205 + __u32 accel_flags; /* (OBSOLETE) see fb_info.flags */ 206 + 207 + /* Timing: All values in pixclocks, except pixclock (of course) */ 208 + __u32 pixclock; /* pixel clock in ps (pico seconds) */ 209 + __u32 left_margin; /* time from sync to picture */ 210 + __u32 right_margin; /* time from picture to sync */ 211 + __u32 upper_margin; /* time from sync to picture */ 212 + __u32 lower_margin; 213 + __u32 hsync_len; /* length of horizontal sync */ 214 + __u32 vsync_len; /* length of vertical sync */ 215 + __u32 sync; /* see FB_SYNC_* */ 216 + __u32 vmode; /* see FB_VMODE_* */ 217 + __u32 rotate; /* angle we rotate counter clockwise */ 218 + __u32 colorspace; /* colorspace for FOURCC-based modes */ 219 + __u32 reserved[4]; /* Reserved for future compatibility */ 220 + }; 221 + 222 + To modify variable information, applications call the FBIOPUT_VSCREENINFO 223 + ioctl with a pointer to a fb_var_screeninfo structure. If the call is 224 + successful, the driver will update the fixed screen information accordingly. 225 + 226 + Instead of filling the complete fb_var_screeninfo structure manually, 227 + applications should call the FBIOGET_VSCREENINFO ioctl and modify only the 228 + fields they care about. 229 + 230 + 231 + 4. Format configuration 232 + ----------------------- 233 + 234 + Frame buffer devices offer two ways to configure the frame buffer format: the 235 + legacy API and the FOURCC-based API. 236 + 237 + 238 + The legacy API has been the only frame buffer format configuration API for a 239 + long time and is thus widely used by application. It is the recommended API 240 + for applications when using RGB and grayscale formats, as well as legacy 241 + non-standard formats. 242 + 243 + To select a format, applications set the fb_var_screeninfo bits_per_pixel field 244 + to the desired frame buffer depth. Values up to 8 will usually map to 245 + monochrome, grayscale or pseudocolor visuals, although this is not required. 246 + 247 + - For grayscale formats, applications set the grayscale field to one. The red, 248 + blue, green and transp fields must be set to 0 by applications and ignored by 249 + drivers. Drivers must fill the red, blue and green offsets to 0 and lengths 250 + to the bits_per_pixel value. 251 + 252 + - For pseudocolor formats, applications set the grayscale field to zero. The 253 + red, blue, green and transp fields must be set to 0 by applications and 254 + ignored by drivers. Drivers must fill the red, blue and green offsets to 0 255 + and lengths to the bits_per_pixel value. 256 + 257 + - For truecolor and directcolor formats, applications set the grayscale field 258 + to zero, and the red, blue, green and transp fields to describe the layout of 259 + color components in memory:: 260 + 261 + struct fb_bitfield { 262 + __u32 offset; /* beginning of bitfield */ 263 + __u32 length; /* length of bitfield */ 264 + __u32 msb_right; /* != 0 : Most significant bit is */ 265 + /* right */ 266 + }; 267 + 268 + Pixel values are bits_per_pixel wide and are split in non-overlapping red, 269 + green, blue and alpha (transparency) components. Location and size of each 270 + component in the pixel value are described by the fb_bitfield offset and 271 + length fields. Offset are computed from the right. 272 + 273 + Pixels are always stored in an integer number of bytes. If the number of 274 + bits per pixel is not a multiple of 8, pixel values are padded to the next 275 + multiple of 8 bits. 276 + 277 + Upon successful format configuration, drivers update the fb_fix_screeninfo 278 + type, visual and line_length fields depending on the selected format. 279 + 280 + 281 + The FOURCC-based API replaces format descriptions by four character codes 282 + (FOURCC). FOURCCs are abstract identifiers that uniquely define a format 283 + without explicitly describing it. This is the only API that supports YUV 284 + formats. Drivers are also encouraged to implement the FOURCC-based API for RGB 285 + and grayscale formats. 286 + 287 + Drivers that support the FOURCC-based API report this capability by setting 288 + the FB_CAP_FOURCC bit in the fb_fix_screeninfo capabilities field. 289 + 290 + FOURCC definitions are located in the linux/videodev2.h header. However, and 291 + despite starting with the V4L2_PIX_FMT_prefix, they are not restricted to V4L2 292 + and don't require usage of the V4L2 subsystem. FOURCC documentation is 293 + available in Documentation/media/uapi/v4l/pixfmt.rst. 294 + 295 + To select a format, applications set the grayscale field to the desired FOURCC. 296 + For YUV formats, they should also select the appropriate colorspace by setting 297 + the colorspace field to one of the colorspaces listed in linux/videodev2.h and 298 + documented in Documentation/media/uapi/v4l/colorspaces.rst. 299 + 300 + The red, green, blue and transp fields are not used with the FOURCC-based API. 301 + For forward compatibility reasons applications must zero those fields, and 302 + drivers must ignore them. Values other than 0 may get a meaning in future 303 + extensions. 304 + 305 + Upon successful format configuration, drivers update the fb_fix_screeninfo 306 + type, visual and line_length fields depending on the selected format. The type 307 + and visual fields are set to FB_TYPE_FOURCC and FB_VISUAL_FOURCC respectively.
-306
Documentation/fb/api.txt
··· 1 - The Frame Buffer Device API 2 - --------------------------- 3 - 4 - Last revised: June 21, 2011 5 - 6 - 7 - 0. Introduction 8 - --------------- 9 - 10 - This document describes the frame buffer API used by applications to interact 11 - with frame buffer devices. In-kernel APIs between device drivers and the frame 12 - buffer core are not described. 13 - 14 - Due to a lack of documentation in the original frame buffer API, drivers 15 - behaviours differ in subtle (and not so subtle) ways. This document describes 16 - the recommended API implementation, but applications should be prepared to 17 - deal with different behaviours. 18 - 19 - 20 - 1. Capabilities 21 - --------------- 22 - 23 - Device and driver capabilities are reported in the fixed screen information 24 - capabilities field. 25 - 26 - struct fb_fix_screeninfo { 27 - ... 28 - __u16 capabilities; /* see FB_CAP_* */ 29 - ... 30 - }; 31 - 32 - Application should use those capabilities to find out what features they can 33 - expect from the device and driver. 34 - 35 - - FB_CAP_FOURCC 36 - 37 - The driver supports the four character code (FOURCC) based format setting API. 38 - When supported, formats are configured using a FOURCC instead of manually 39 - specifying color components layout. 40 - 41 - 42 - 2. Types and visuals 43 - -------------------- 44 - 45 - Pixels are stored in memory in hardware-dependent formats. Applications need 46 - to be aware of the pixel storage format in order to write image data to the 47 - frame buffer memory in the format expected by the hardware. 48 - 49 - Formats are described by frame buffer types and visuals. Some visuals require 50 - additional information, which are stored in the variable screen information 51 - bits_per_pixel, grayscale, red, green, blue and transp fields. 52 - 53 - Visuals describe how color information is encoded and assembled to create 54 - macropixels. Types describe how macropixels are stored in memory. The following 55 - types and visuals are supported. 56 - 57 - - FB_TYPE_PACKED_PIXELS 58 - 59 - Macropixels are stored contiguously in a single plane. If the number of bits 60 - per macropixel is not a multiple of 8, whether macropixels are padded to the 61 - next multiple of 8 bits or packed together into bytes depends on the visual. 62 - 63 - Padding at end of lines may be present and is then reported through the fixed 64 - screen information line_length field. 65 - 66 - - FB_TYPE_PLANES 67 - 68 - Macropixels are split across multiple planes. The number of planes is equal to 69 - the number of bits per macropixel, with plane i'th storing i'th bit from all 70 - macropixels. 71 - 72 - Planes are located contiguously in memory. 73 - 74 - - FB_TYPE_INTERLEAVED_PLANES 75 - 76 - Macropixels are split across multiple planes. The number of planes is equal to 77 - the number of bits per macropixel, with plane i'th storing i'th bit from all 78 - macropixels. 79 - 80 - Planes are interleaved in memory. The interleave factor, defined as the 81 - distance in bytes between the beginning of two consecutive interleaved blocks 82 - belonging to different planes, is stored in the fixed screen information 83 - type_aux field. 84 - 85 - - FB_TYPE_FOURCC 86 - 87 - Macropixels are stored in memory as described by the format FOURCC identifier 88 - stored in the variable screen information grayscale field. 89 - 90 - - FB_VISUAL_MONO01 91 - 92 - Pixels are black or white and stored on a number of bits (typically one) 93 - specified by the variable screen information bpp field. 94 - 95 - Black pixels are represented by all bits set to 1 and white pixels by all bits 96 - set to 0. When the number of bits per pixel is smaller than 8, several pixels 97 - are packed together in a byte. 98 - 99 - FB_VISUAL_MONO01 is currently used with FB_TYPE_PACKED_PIXELS only. 100 - 101 - - FB_VISUAL_MONO10 102 - 103 - Pixels are black or white and stored on a number of bits (typically one) 104 - specified by the variable screen information bpp field. 105 - 106 - Black pixels are represented by all bits set to 0 and white pixels by all bits 107 - set to 1. When the number of bits per pixel is smaller than 8, several pixels 108 - are packed together in a byte. 109 - 110 - FB_VISUAL_MONO01 is currently used with FB_TYPE_PACKED_PIXELS only. 111 - 112 - - FB_VISUAL_TRUECOLOR 113 - 114 - Pixels are broken into red, green and blue components, and each component 115 - indexes a read-only lookup table for the corresponding value. Lookup tables 116 - are device-dependent, and provide linear or non-linear ramps. 117 - 118 - Each component is stored in a macropixel according to the variable screen 119 - information red, green, blue and transp fields. 120 - 121 - - FB_VISUAL_PSEUDOCOLOR and FB_VISUAL_STATIC_PSEUDOCOLOR 122 - 123 - Pixel values are encoded as indices into a colormap that stores red, green and 124 - blue components. The colormap is read-only for FB_VISUAL_STATIC_PSEUDOCOLOR 125 - and read-write for FB_VISUAL_PSEUDOCOLOR. 126 - 127 - Each pixel value is stored in the number of bits reported by the variable 128 - screen information bits_per_pixel field. 129 - 130 - - FB_VISUAL_DIRECTCOLOR 131 - 132 - Pixels are broken into red, green and blue components, and each component 133 - indexes a programmable lookup table for the corresponding value. 134 - 135 - Each component is stored in a macropixel according to the variable screen 136 - information red, green, blue and transp fields. 137 - 138 - - FB_VISUAL_FOURCC 139 - 140 - Pixels are encoded and interpreted as described by the format FOURCC 141 - identifier stored in the variable screen information grayscale field. 142 - 143 - 144 - 3. Screen information 145 - --------------------- 146 - 147 - Screen information are queried by applications using the FBIOGET_FSCREENINFO 148 - and FBIOGET_VSCREENINFO ioctls. Those ioctls take a pointer to a 149 - fb_fix_screeninfo and fb_var_screeninfo structure respectively. 150 - 151 - struct fb_fix_screeninfo stores device independent unchangeable information 152 - about the frame buffer device and the current format. Those information can't 153 - be directly modified by applications, but can be changed by the driver when an 154 - application modifies the format. 155 - 156 - struct fb_fix_screeninfo { 157 - char id[16]; /* identification string eg "TT Builtin" */ 158 - unsigned long smem_start; /* Start of frame buffer mem */ 159 - /* (physical address) */ 160 - __u32 smem_len; /* Length of frame buffer mem */ 161 - __u32 type; /* see FB_TYPE_* */ 162 - __u32 type_aux; /* Interleave for interleaved Planes */ 163 - __u32 visual; /* see FB_VISUAL_* */ 164 - __u16 xpanstep; /* zero if no hardware panning */ 165 - __u16 ypanstep; /* zero if no hardware panning */ 166 - __u16 ywrapstep; /* zero if no hardware ywrap */ 167 - __u32 line_length; /* length of a line in bytes */ 168 - unsigned long mmio_start; /* Start of Memory Mapped I/O */ 169 - /* (physical address) */ 170 - __u32 mmio_len; /* Length of Memory Mapped I/O */ 171 - __u32 accel; /* Indicate to driver which */ 172 - /* specific chip/card we have */ 173 - __u16 capabilities; /* see FB_CAP_* */ 174 - __u16 reserved[2]; /* Reserved for future compatibility */ 175 - }; 176 - 177 - struct fb_var_screeninfo stores device independent changeable information 178 - about a frame buffer device, its current format and video mode, as well as 179 - other miscellaneous parameters. 180 - 181 - struct fb_var_screeninfo { 182 - __u32 xres; /* visible resolution */ 183 - __u32 yres; 184 - __u32 xres_virtual; /* virtual resolution */ 185 - __u32 yres_virtual; 186 - __u32 xoffset; /* offset from virtual to visible */ 187 - __u32 yoffset; /* resolution */ 188 - 189 - __u32 bits_per_pixel; /* guess what */ 190 - __u32 grayscale; /* 0 = color, 1 = grayscale, */ 191 - /* >1 = FOURCC */ 192 - struct fb_bitfield red; /* bitfield in fb mem if true color, */ 193 - struct fb_bitfield green; /* else only length is significant */ 194 - struct fb_bitfield blue; 195 - struct fb_bitfield transp; /* transparency */ 196 - 197 - __u32 nonstd; /* != 0 Non standard pixel format */ 198 - 199 - __u32 activate; /* see FB_ACTIVATE_* */ 200 - 201 - __u32 height; /* height of picture in mm */ 202 - __u32 width; /* width of picture in mm */ 203 - 204 - __u32 accel_flags; /* (OBSOLETE) see fb_info.flags */ 205 - 206 - /* Timing: All values in pixclocks, except pixclock (of course) */ 207 - __u32 pixclock; /* pixel clock in ps (pico seconds) */ 208 - __u32 left_margin; /* time from sync to picture */ 209 - __u32 right_margin; /* time from picture to sync */ 210 - __u32 upper_margin; /* time from sync to picture */ 211 - __u32 lower_margin; 212 - __u32 hsync_len; /* length of horizontal sync */ 213 - __u32 vsync_len; /* length of vertical sync */ 214 - __u32 sync; /* see FB_SYNC_* */ 215 - __u32 vmode; /* see FB_VMODE_* */ 216 - __u32 rotate; /* angle we rotate counter clockwise */ 217 - __u32 colorspace; /* colorspace for FOURCC-based modes */ 218 - __u32 reserved[4]; /* Reserved for future compatibility */ 219 - }; 220 - 221 - To modify variable information, applications call the FBIOPUT_VSCREENINFO 222 - ioctl with a pointer to a fb_var_screeninfo structure. If the call is 223 - successful, the driver will update the fixed screen information accordingly. 224 - 225 - Instead of filling the complete fb_var_screeninfo structure manually, 226 - applications should call the FBIOGET_VSCREENINFO ioctl and modify only the 227 - fields they care about. 228 - 229 - 230 - 4. Format configuration 231 - ----------------------- 232 - 233 - Frame buffer devices offer two ways to configure the frame buffer format: the 234 - legacy API and the FOURCC-based API. 235 - 236 - 237 - The legacy API has been the only frame buffer format configuration API for a 238 - long time and is thus widely used by application. It is the recommended API 239 - for applications when using RGB and grayscale formats, as well as legacy 240 - non-standard formats. 241 - 242 - To select a format, applications set the fb_var_screeninfo bits_per_pixel field 243 - to the desired frame buffer depth. Values up to 8 will usually map to 244 - monochrome, grayscale or pseudocolor visuals, although this is not required. 245 - 246 - - For grayscale formats, applications set the grayscale field to one. The red, 247 - blue, green and transp fields must be set to 0 by applications and ignored by 248 - drivers. Drivers must fill the red, blue and green offsets to 0 and lengths 249 - to the bits_per_pixel value. 250 - 251 - - For pseudocolor formats, applications set the grayscale field to zero. The 252 - red, blue, green and transp fields must be set to 0 by applications and 253 - ignored by drivers. Drivers must fill the red, blue and green offsets to 0 254 - and lengths to the bits_per_pixel value. 255 - 256 - - For truecolor and directcolor formats, applications set the grayscale field 257 - to zero, and the red, blue, green and transp fields to describe the layout of 258 - color components in memory. 259 - 260 - struct fb_bitfield { 261 - __u32 offset; /* beginning of bitfield */ 262 - __u32 length; /* length of bitfield */ 263 - __u32 msb_right; /* != 0 : Most significant bit is */ 264 - /* right */ 265 - }; 266 - 267 - Pixel values are bits_per_pixel wide and are split in non-overlapping red, 268 - green, blue and alpha (transparency) components. Location and size of each 269 - component in the pixel value are described by the fb_bitfield offset and 270 - length fields. Offset are computed from the right. 271 - 272 - Pixels are always stored in an integer number of bytes. If the number of 273 - bits per pixel is not a multiple of 8, pixel values are padded to the next 274 - multiple of 8 bits. 275 - 276 - Upon successful format configuration, drivers update the fb_fix_screeninfo 277 - type, visual and line_length fields depending on the selected format. 278 - 279 - 280 - The FOURCC-based API replaces format descriptions by four character codes 281 - (FOURCC). FOURCCs are abstract identifiers that uniquely define a format 282 - without explicitly describing it. This is the only API that supports YUV 283 - formats. Drivers are also encouraged to implement the FOURCC-based API for RGB 284 - and grayscale formats. 285 - 286 - Drivers that support the FOURCC-based API report this capability by setting 287 - the FB_CAP_FOURCC bit in the fb_fix_screeninfo capabilities field. 288 - 289 - FOURCC definitions are located in the linux/videodev2.h header. However, and 290 - despite starting with the V4L2_PIX_FMT_prefix, they are not restricted to V4L2 291 - and don't require usage of the V4L2 subsystem. FOURCC documentation is 292 - available in Documentation/media/uapi/v4l/pixfmt.rst. 293 - 294 - To select a format, applications set the grayscale field to the desired FOURCC. 295 - For YUV formats, they should also select the appropriate colorspace by setting 296 - the colorspace field to one of the colorspaces listed in linux/videodev2.h and 297 - documented in Documentation/media/uapi/v4l/colorspaces.rst. 298 - 299 - The red, green, blue and transp fields are not used with the FOURCC-based API. 300 - For forward compatibility reasons applications must zero those fields, and 301 - drivers must ignore them. Values other than 0 may get a meaning in future 302 - extensions. 303 - 304 - Upon successful format configuration, drivers update the fb_fix_screeninfo 305 - type, visual and line_length fields depending on the selected format. The type 306 - and visual fields are set to FB_TYPE_FOURCC and FB_VISUAL_FOURCC respectively.
+68
Documentation/fb/arkfb.rst
··· 1 + ======================================== 2 + arkfb - fbdev driver for ARK Logic chips 3 + ======================================== 4 + 5 + 6 + Supported Hardware 7 + ================== 8 + 9 + ARK 2000PV chip 10 + ICS 5342 ramdac 11 + 12 + - only BIOS initialized VGA devices supported 13 + - probably not working on big endian 14 + 15 + 16 + Supported Features 17 + ================== 18 + 19 + * 4 bpp pseudocolor modes (with 18bit palette, two variants) 20 + * 8 bpp pseudocolor mode (with 18bit palette) 21 + * 16 bpp truecolor modes (RGB 555 and RGB 565) 22 + * 24 bpp truecolor mode (RGB 888) 23 + * 32 bpp truecolor mode (RGB 888) 24 + * text mode (activated by bpp = 0) 25 + * doublescan mode variant (not available in text mode) 26 + * panning in both directions 27 + * suspend/resume support 28 + 29 + Text mode is supported even in higher resolutions, but there is limitation to 30 + lower pixclocks (i got maximum about 70 MHz, it is dependent on specific 31 + hardware). This limitation is not enforced by driver. Text mode supports 8bit 32 + wide fonts only (hardware limitation) and 16bit tall fonts (driver 33 + limitation). Unfortunately character attributes (like color) in text mode are 34 + broken for unknown reason, so its usefulness is limited. 35 + 36 + There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with 37 + packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode 38 + with interleaved planes (1 byte interleave), MSB first. Both modes support 39 + 8bit wide fonts only (driver limitation). 40 + 41 + Suspend/resume works on systems that initialize video card during resume and 42 + if device is active (for example used by fbcon). 43 + 44 + 45 + Missing Features 46 + ================ 47 + (alias TODO list) 48 + 49 + * secondary (not initialized by BIOS) device support 50 + * big endian support 51 + * DPMS support 52 + * MMIO support 53 + * interlaced mode variant 54 + * support for fontwidths != 8 in 4 bpp modes 55 + * support for fontheight != 16 in text mode 56 + * hardware cursor 57 + * vsync synchronization 58 + * feature connector support 59 + * acceleration support (8514-like 2D) 60 + 61 + 62 + Known bugs 63 + ========== 64 + 65 + * character attributes (and cursor) in text mode are broken 66 + 67 + -- 68 + Ondrej Zajicek <santiago@crfreenet.org>
-68
Documentation/fb/arkfb.txt
··· 1 - 2 - arkfb - fbdev driver for ARK Logic chips 3 - ======================================== 4 - 5 - 6 - Supported Hardware 7 - ================== 8 - 9 - ARK 2000PV chip 10 - ICS 5342 ramdac 11 - 12 - - only BIOS initialized VGA devices supported 13 - - probably not working on big endian 14 - 15 - 16 - Supported Features 17 - ================== 18 - 19 - * 4 bpp pseudocolor modes (with 18bit palette, two variants) 20 - * 8 bpp pseudocolor mode (with 18bit palette) 21 - * 16 bpp truecolor modes (RGB 555 and RGB 565) 22 - * 24 bpp truecolor mode (RGB 888) 23 - * 32 bpp truecolor mode (RGB 888) 24 - * text mode (activated by bpp = 0) 25 - * doublescan mode variant (not available in text mode) 26 - * panning in both directions 27 - * suspend/resume support 28 - 29 - Text mode is supported even in higher resolutions, but there is limitation to 30 - lower pixclocks (i got maximum about 70 MHz, it is dependent on specific 31 - hardware). This limitation is not enforced by driver. Text mode supports 8bit 32 - wide fonts only (hardware limitation) and 16bit tall fonts (driver 33 - limitation). Unfortunately character attributes (like color) in text mode are 34 - broken for unknown reason, so its usefulness is limited. 35 - 36 - There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with 37 - packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode 38 - with interleaved planes (1 byte interleave), MSB first. Both modes support 39 - 8bit wide fonts only (driver limitation). 40 - 41 - Suspend/resume works on systems that initialize video card during resume and 42 - if device is active (for example used by fbcon). 43 - 44 - 45 - Missing Features 46 - ================ 47 - (alias TODO list) 48 - 49 - * secondary (not initialized by BIOS) device support 50 - * big endian support 51 - * DPMS support 52 - * MMIO support 53 - * interlaced mode variant 54 - * support for fontwidths != 8 in 4 bpp modes 55 - * support for fontheight != 16 in text mode 56 - * hardware cursor 57 - * vsync synchronization 58 - * feature connector support 59 - * acceleration support (8514-like 2D) 60 - 61 - 62 - Known bugs 63 - ========== 64 - 65 - * character attributes (and cursor) in text mode are broken 66 - 67 - -- 68 - Ondrej Zajicek <santiago@crfreenet.org>
+75
Documentation/fb/aty128fb.rst
··· 1 + ================= 2 + What is aty128fb? 3 + ================= 4 + 5 + .. [This file is cloned from VesaFB/matroxfb] 6 + 7 + This is a driver for a graphic framebuffer for ATI Rage128 based devices 8 + on Intel and PPC boxes. 9 + 10 + Advantages: 11 + 12 + * It provides a nice large console (128 cols + 48 lines with 1024x768) 13 + without using tiny, unreadable fonts. 14 + * You can run XF68_FBDev on top of /dev/fb0 15 + * Most important: boot logo :-) 16 + 17 + Disadvantages: 18 + 19 + * graphic mode is slower than text mode... but you should not notice 20 + if you use same resolution as you used in textmode. 21 + * still experimental. 22 + 23 + 24 + How to use it? 25 + ============== 26 + 27 + Switching modes is done using the video=aty128fb:<resolution>... modedb 28 + boot parameter or using `fbset` program. 29 + 30 + See Documentation/fb/modedb.rst for more information on modedb 31 + resolutions. 32 + 33 + You should compile in both vgacon (to boot if you remove your Rage128 from 34 + box) and aty128fb (for graphics mode). You should not compile-in vesafb 35 + unless you have primary display on non-Rage128 VBE2.0 device (see 36 + Documentation/fb/vesafb.rst for details). 37 + 38 + 39 + X11 40 + === 41 + 42 + XF68_FBDev should generally work fine, but it is non-accelerated. As of 43 + this document, 8 and 32bpp works fine. There have been palette issues 44 + when switching from X to console and back to X. You will have to restart 45 + X to fix this. 46 + 47 + 48 + Configuration 49 + ============= 50 + 51 + You can pass kernel command line options to vesafb with 52 + `video=aty128fb:option1,option2:value2,option3` (multiple options should 53 + be separated by comma, values are separated from options by `:`). 54 + Accepted options: 55 + 56 + ========= ======================================================= 57 + noaccel do not use acceleration engine. It is default. 58 + accel use acceleration engine. Not finished. 59 + vmode:x chooses PowerMacintosh video mode <x>. Deprecated. 60 + cmode:x chooses PowerMacintosh colour mode <x>. Deprecated. 61 + <XxX@X> selects startup videomode. See modedb.txt for detailed 62 + explanation. Default is 640x480x8bpp. 63 + ========= ======================================================= 64 + 65 + 66 + Limitations 67 + =========== 68 + 69 + There are known and unknown bugs, features and misfeatures. 70 + Currently there are following known bugs: 71 + 72 + - This driver is still experimental and is not finished. Too many 73 + bugs/errata to list here. 74 + 75 + Brad Douglas <brad@neruo.com>
-72
Documentation/fb/aty128fb.txt
··· 1 - [This file is cloned from VesaFB/matroxfb] 2 - 3 - What is aty128fb? 4 - ================= 5 - 6 - This is a driver for a graphic framebuffer for ATI Rage128 based devices 7 - on Intel and PPC boxes. 8 - 9 - Advantages: 10 - 11 - * It provides a nice large console (128 cols + 48 lines with 1024x768) 12 - without using tiny, unreadable fonts. 13 - * You can run XF68_FBDev on top of /dev/fb0 14 - * Most important: boot logo :-) 15 - 16 - Disadvantages: 17 - 18 - * graphic mode is slower than text mode... but you should not notice 19 - if you use same resolution as you used in textmode. 20 - * still experimental. 21 - 22 - 23 - How to use it? 24 - ============== 25 - 26 - Switching modes is done using the video=aty128fb:<resolution>... modedb 27 - boot parameter or using `fbset' program. 28 - 29 - See Documentation/fb/modedb.txt for more information on modedb 30 - resolutions. 31 - 32 - You should compile in both vgacon (to boot if you remove your Rage128 from 33 - box) and aty128fb (for graphics mode). You should not compile-in vesafb 34 - unless you have primary display on non-Rage128 VBE2.0 device (see 35 - Documentation/fb/vesafb.txt for details). 36 - 37 - 38 - X11 39 - === 40 - 41 - XF68_FBDev should generally work fine, but it is non-accelerated. As of 42 - this document, 8 and 32bpp works fine. There have been palette issues 43 - when switching from X to console and back to X. You will have to restart 44 - X to fix this. 45 - 46 - 47 - Configuration 48 - ============= 49 - 50 - You can pass kernel command line options to vesafb with 51 - `video=aty128fb:option1,option2:value2,option3' (multiple options should 52 - be separated by comma, values are separated from options by `:'). 53 - Accepted options: 54 - 55 - noaccel - do not use acceleration engine. It is default. 56 - accel - use acceleration engine. Not finished. 57 - vmode:x - chooses PowerMacintosh video mode <x>. Deprecated. 58 - cmode:x - chooses PowerMacintosh colour mode <x>. Deprecated. 59 - <XxX@X> - selects startup videomode. See modedb.txt for detailed 60 - explanation. Default is 640x480x8bpp. 61 - 62 - 63 - Limitations 64 - =========== 65 - 66 - There are known and unknown bugs, features and misfeatures. 67 - Currently there are following known bugs: 68 - + This driver is still experimental and is not finished. Too many 69 - bugs/errata to list here. 70 - 71 - -- 72 - Brad Douglas <brad@neruo.com>
+94
Documentation/fb/cirrusfb.rst
··· 1 + ============================================ 2 + Framebuffer driver for Cirrus Logic chipsets 3 + ============================================ 4 + 5 + Copyright 1999 Jeff Garzik <jgarzik@pobox.com> 6 + 7 + 8 + .. just a little something to get people going; contributors welcome! 9 + 10 + 11 + Chip families supported: 12 + - SD64 13 + - Piccolo 14 + - Picasso 15 + - Spectrum 16 + - Alpine (GD-543x/4x) 17 + - Picasso4 (GD-5446) 18 + - GD-5480 19 + - Laguna (GD-546x) 20 + 21 + Bus's supported: 22 + - PCI 23 + - Zorro 24 + 25 + Architectures supported: 26 + - i386 27 + - Alpha 28 + - PPC (Motorola Powerstack) 29 + - m68k (Amiga) 30 + 31 + 32 + 33 + Default video modes 34 + ------------------- 35 + At the moment, there are two kernel command line arguments supported: 36 + 37 + - mode:640x480 38 + - mode:800x600 39 + - mode:1024x768 40 + 41 + Full support for startup video modes (modedb) will be integrated soon. 42 + 43 + Version 1.9.9.1 44 + --------------- 45 + * Fix memory detection for 512kB case 46 + * 800x600 mode 47 + * Fixed timings 48 + * Hint for AXP: Use -accel false -vyres -1 when changing resolution 49 + 50 + 51 + Version 1.9.4.4 52 + --------------- 53 + * Preliminary Laguna support 54 + * Overhaul color register routines. 55 + * Associated with the above, console colors are now obtained from a LUT 56 + called 'palette' instead of from the VGA registers. This code was 57 + modelled after that in atyfb and matroxfb. 58 + * Code cleanup, add comments. 59 + * Overhaul SR07 handling. 60 + * Bug fixes. 61 + 62 + 63 + Version 1.9.4.3 64 + --------------- 65 + * Correctly set default startup video mode. 66 + * Do not override ram size setting. Define 67 + CLGEN_USE_HARDCODED_RAM_SETTINGS if you _do_ want to override the RAM 68 + setting. 69 + * Compile fixes related to new 2.3.x IORESOURCE_IO[PORT] symbol changes. 70 + * Use new 2.3.x resource allocation. 71 + * Some code cleanup. 72 + 73 + 74 + Version 1.9.4.2 75 + --------------- 76 + * Casting fixes. 77 + * Assertions no longer cause an oops on purpose. 78 + * Bug fixes. 79 + 80 + 81 + Version 1.9.4.1 82 + --------------- 83 + * Add compatibility support. Now requires a 2.1.x, 2.2.x or 2.3.x kernel. 84 + 85 + 86 + Version 1.9.4 87 + ------------- 88 + * Several enhancements, smaller memory footprint, a few bugfixes. 89 + * Requires kernel 2.3.14-pre1 or later. 90 + 91 + 92 + Version 1.9.3 93 + ------------- 94 + * Bundled with kernel 2.3.14-pre1 or later.
-97
Documentation/fb/cirrusfb.txt
··· 1 - 2 - Framebuffer driver for Cirrus Logic chipsets 3 - Copyright 1999 Jeff Garzik <jgarzik@pobox.com> 4 - 5 - 6 - 7 - { just a little something to get people going; contributors welcome! } 8 - 9 - 10 - 11 - Chip families supported: 12 - SD64 13 - Piccolo 14 - Picasso 15 - Spectrum 16 - Alpine (GD-543x/4x) 17 - Picasso4 (GD-5446) 18 - GD-5480 19 - Laguna (GD-546x) 20 - 21 - Bus's supported: 22 - PCI 23 - Zorro 24 - 25 - Architectures supported: 26 - i386 27 - Alpha 28 - PPC (Motorola Powerstack) 29 - m68k (Amiga) 30 - 31 - 32 - 33 - Default video modes 34 - ------------------- 35 - At the moment, there are two kernel command line arguments supported: 36 - 37 - mode:640x480 38 - mode:800x600 39 - or 40 - mode:1024x768 41 - 42 - Full support for startup video modes (modedb) will be integrated soon. 43 - 44 - Version 1.9.9.1 45 - --------------- 46 - * Fix memory detection for 512kB case 47 - * 800x600 mode 48 - * Fixed timings 49 - * Hint for AXP: Use -accel false -vyres -1 when changing resolution 50 - 51 - 52 - Version 1.9.4.4 53 - --------------- 54 - * Preliminary Laguna support 55 - * Overhaul color register routines. 56 - * Associated with the above, console colors are now obtained from a LUT 57 - called 'palette' instead of from the VGA registers. This code was 58 - modelled after that in atyfb and matroxfb. 59 - * Code cleanup, add comments. 60 - * Overhaul SR07 handling. 61 - * Bug fixes. 62 - 63 - 64 - Version 1.9.4.3 65 - --------------- 66 - * Correctly set default startup video mode. 67 - * Do not override ram size setting. Define 68 - CLGEN_USE_HARDCODED_RAM_SETTINGS if you _do_ want to override the RAM 69 - setting. 70 - * Compile fixes related to new 2.3.x IORESOURCE_IO[PORT] symbol changes. 71 - * Use new 2.3.x resource allocation. 72 - * Some code cleanup. 73 - 74 - 75 - Version 1.9.4.2 76 - --------------- 77 - * Casting fixes. 78 - * Assertions no longer cause an oops on purpose. 79 - * Bug fixes. 80 - 81 - 82 - Version 1.9.4.1 83 - --------------- 84 - * Add compatibility support. Now requires a 2.1.x, 2.2.x or 2.3.x kernel. 85 - 86 - 87 - Version 1.9.4 88 - ------------- 89 - * Several enhancements, smaller memory footprint, a few bugfixes. 90 - * Requires kernel 2.3.14-pre1 or later. 91 - 92 - 93 - Version 1.9.3 94 - ------------- 95 - * Bundled with kernel 2.3.14-pre1 or later. 96 - 97 -
+56
Documentation/fb/cmap_xfbdev.rst
··· 1 + ========================== 2 + Understanding fbdev's cmap 3 + ========================== 4 + 5 + These notes explain how X's dix layer uses fbdev's cmap structures. 6 + 7 + - example of relevant structures in fbdev as used for a 3-bit grayscale cmap:: 8 + 9 + struct fb_var_screeninfo { 10 + .bits_per_pixel = 8, 11 + .grayscale = 1, 12 + .red = { 4, 3, 0 }, 13 + .green = { 0, 0, 0 }, 14 + .blue = { 0, 0, 0 }, 15 + } 16 + struct fb_fix_screeninfo { 17 + .visual = FB_VISUAL_STATIC_PSEUDOCOLOR, 18 + } 19 + for (i = 0; i < 8; i++) 20 + info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16; 21 + memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8); 22 + memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8); 23 + 24 + - X11 apps do something like the following when trying to use grayscale:: 25 + 26 + for (i=0; i < 8; i++) { 27 + char colorspec[64]; 28 + memset(colorspec,0,64); 29 + sprintf(colorspec, "rgb:%x/%x/%x", i*36,i*36,i*36); 30 + if (!XParseColor(outputDisplay, testColormap, colorspec, &wantedColor)) 31 + printf("Can't get color %s\n",colorspec); 32 + XAllocColor(outputDisplay, testColormap, &wantedColor); 33 + grays[i] = wantedColor; 34 + } 35 + 36 + There's also named equivalents like gray1..x provided you have an rgb.txt. 37 + 38 + Somewhere in X's callchain, this results in a call to X code that handles the 39 + colormap. For example, Xfbdev hits the following: 40 + 41 + xc-011010/programs/Xserver/dix/colormap.c:: 42 + 43 + FindBestPixel(pentFirst, size, prgb, channel) 44 + 45 + dr = (long) pent->co.local.red - prgb->red; 46 + dg = (long) pent->co.local.green - prgb->green; 47 + db = (long) pent->co.local.blue - prgb->blue; 48 + sq = dr * dr; 49 + UnsignedToBigNum (sq, &sum); 50 + BigNumAdd (&sum, &temp, &sum); 51 + 52 + co.local.red are entries that were brought in through FBIOGETCMAP which come 53 + directly from the info->cmap.red that was listed above. The prgb is the rgb 54 + that the app wants to match to. The above code is doing what looks like a least 55 + squares matching function. That's why the cmap entries can't be set to the left 56 + hand side boundaries of a color range.
-53
Documentation/fb/cmap_xfbdev.txt
··· 1 - Understanding fbdev's cmap 2 - -------------------------- 3 - 4 - These notes explain how X's dix layer uses fbdev's cmap structures. 5 - 6 - *. example of relevant structures in fbdev as used for a 3-bit grayscale cmap 7 - struct fb_var_screeninfo { 8 - .bits_per_pixel = 8, 9 - .grayscale = 1, 10 - .red = { 4, 3, 0 }, 11 - .green = { 0, 0, 0 }, 12 - .blue = { 0, 0, 0 }, 13 - } 14 - struct fb_fix_screeninfo { 15 - .visual = FB_VISUAL_STATIC_PSEUDOCOLOR, 16 - } 17 - for (i = 0; i < 8; i++) 18 - info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16; 19 - memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8); 20 - memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8); 21 - 22 - *. X11 apps do something like the following when trying to use grayscale. 23 - for (i=0; i < 8; i++) { 24 - char colorspec[64]; 25 - memset(colorspec,0,64); 26 - sprintf(colorspec, "rgb:%x/%x/%x", i*36,i*36,i*36); 27 - if (!XParseColor(outputDisplay, testColormap, colorspec, &wantedColor)) 28 - printf("Can't get color %s\n",colorspec); 29 - XAllocColor(outputDisplay, testColormap, &wantedColor); 30 - grays[i] = wantedColor; 31 - } 32 - There's also named equivalents like gray1..x provided you have an rgb.txt. 33 - 34 - Somewhere in X's callchain, this results in a call to X code that handles the 35 - colormap. For example, Xfbdev hits the following: 36 - 37 - xc-011010/programs/Xserver/dix/colormap.c: 38 - 39 - FindBestPixel(pentFirst, size, prgb, channel) 40 - 41 - dr = (long) pent->co.local.red - prgb->red; 42 - dg = (long) pent->co.local.green - prgb->green; 43 - db = (long) pent->co.local.blue - prgb->blue; 44 - sq = dr * dr; 45 - UnsignedToBigNum (sq, &sum); 46 - BigNumAdd (&sum, &temp, &sum); 47 - 48 - co.local.red are entries that were brought in through FBIOGETCMAP which come 49 - directly from the info->cmap.red that was listed above. The prgb is the rgb 50 - that the app wants to match to. The above code is doing what looks like a least 51 - squares matching function. That's why the cmap entries can't be set to the left 52 - hand side boundaries of a color range. 53 -
+79
Documentation/fb/deferred_io.rst
··· 1 + =========== 2 + Deferred IO 3 + =========== 4 + 5 + Deferred IO is a way to delay and repurpose IO. It uses host memory as a 6 + buffer and the MMU pagefault as a pretrigger for when to perform the device 7 + IO. The following example may be a useful explanation of how one such setup 8 + works: 9 + 10 + - userspace app like Xfbdev mmaps framebuffer 11 + - deferred IO and driver sets up fault and page_mkwrite handlers 12 + - userspace app tries to write to mmaped vaddress 13 + - we get pagefault and reach fault handler 14 + - fault handler finds and returns physical page 15 + - we get page_mkwrite where we add this page to a list 16 + - schedule a workqueue task to be run after a delay 17 + - app continues writing to that page with no additional cost. this is 18 + the key benefit. 19 + - the workqueue task comes in and mkcleans the pages on the list, then 20 + completes the work associated with updating the framebuffer. this is 21 + the real work talking to the device. 22 + - app tries to write to the address (that has now been mkcleaned) 23 + - get pagefault and the above sequence occurs again 24 + 25 + As can be seen from above, one benefit is roughly to allow bursty framebuffer 26 + writes to occur at minimum cost. Then after some time when hopefully things 27 + have gone quiet, we go and really update the framebuffer which would be 28 + a relatively more expensive operation. 29 + 30 + For some types of nonvolatile high latency displays, the desired image is 31 + the final image rather than the intermediate stages which is why it's okay 32 + to not update for each write that is occurring. 33 + 34 + It may be the case that this is useful in other scenarios as well. Paul Mundt 35 + has mentioned a case where it is beneficial to use the page count to decide 36 + whether to coalesce and issue SG DMA or to do memory bursts. 37 + 38 + Another one may be if one has a device framebuffer that is in an usual format, 39 + say diagonally shifting RGB, this may then be a mechanism for you to allow 40 + apps to pretend to have a normal framebuffer but reswizzle for the device 41 + framebuffer at vsync time based on the touched pagelist. 42 + 43 + How to use it: (for applications) 44 + --------------------------------- 45 + No changes needed. mmap the framebuffer like normal and just use it. 46 + 47 + How to use it: (for fbdev drivers) 48 + ---------------------------------- 49 + The following example may be helpful. 50 + 51 + 1. Setup your structure. Eg:: 52 + 53 + static struct fb_deferred_io hecubafb_defio = { 54 + .delay = HZ, 55 + .deferred_io = hecubafb_dpy_deferred_io, 56 + }; 57 + 58 + The delay is the minimum delay between when the page_mkwrite trigger occurs 59 + and when the deferred_io callback is called. The deferred_io callback is 60 + explained below. 61 + 62 + 2. Setup your deferred IO callback. Eg:: 63 + 64 + static void hecubafb_dpy_deferred_io(struct fb_info *info, 65 + struct list_head *pagelist) 66 + 67 + The deferred_io callback is where you would perform all your IO to the display 68 + device. You receive the pagelist which is the list of pages that were written 69 + to during the delay. You must not modify this list. This callback is called 70 + from a workqueue. 71 + 72 + 3. Call init:: 73 + 74 + info->fbdefio = &hecubafb_defio; 75 + fb_deferred_io_init(info); 76 + 77 + 4. Call cleanup:: 78 + 79 + fb_deferred_io_cleanup(info);
-75
Documentation/fb/deferred_io.txt
··· 1 - Deferred IO 2 - ----------- 3 - 4 - Deferred IO is a way to delay and repurpose IO. It uses host memory as a 5 - buffer and the MMU pagefault as a pretrigger for when to perform the device 6 - IO. The following example may be a useful explanation of how one such setup 7 - works: 8 - 9 - - userspace app like Xfbdev mmaps framebuffer 10 - - deferred IO and driver sets up fault and page_mkwrite handlers 11 - - userspace app tries to write to mmaped vaddress 12 - - we get pagefault and reach fault handler 13 - - fault handler finds and returns physical page 14 - - we get page_mkwrite where we add this page to a list 15 - - schedule a workqueue task to be run after a delay 16 - - app continues writing to that page with no additional cost. this is 17 - the key benefit. 18 - - the workqueue task comes in and mkcleans the pages on the list, then 19 - completes the work associated with updating the framebuffer. this is 20 - the real work talking to the device. 21 - - app tries to write to the address (that has now been mkcleaned) 22 - - get pagefault and the above sequence occurs again 23 - 24 - As can be seen from above, one benefit is roughly to allow bursty framebuffer 25 - writes to occur at minimum cost. Then after some time when hopefully things 26 - have gone quiet, we go and really update the framebuffer which would be 27 - a relatively more expensive operation. 28 - 29 - For some types of nonvolatile high latency displays, the desired image is 30 - the final image rather than the intermediate stages which is why it's okay 31 - to not update for each write that is occurring. 32 - 33 - It may be the case that this is useful in other scenarios as well. Paul Mundt 34 - has mentioned a case where it is beneficial to use the page count to decide 35 - whether to coalesce and issue SG DMA or to do memory bursts. 36 - 37 - Another one may be if one has a device framebuffer that is in an usual format, 38 - say diagonally shifting RGB, this may then be a mechanism for you to allow 39 - apps to pretend to have a normal framebuffer but reswizzle for the device 40 - framebuffer at vsync time based on the touched pagelist. 41 - 42 - How to use it: (for applications) 43 - --------------------------------- 44 - No changes needed. mmap the framebuffer like normal and just use it. 45 - 46 - How to use it: (for fbdev drivers) 47 - ---------------------------------- 48 - The following example may be helpful. 49 - 50 - 1. Setup your structure. Eg: 51 - 52 - static struct fb_deferred_io hecubafb_defio = { 53 - .delay = HZ, 54 - .deferred_io = hecubafb_dpy_deferred_io, 55 - }; 56 - 57 - The delay is the minimum delay between when the page_mkwrite trigger occurs 58 - and when the deferred_io callback is called. The deferred_io callback is 59 - explained below. 60 - 61 - 2. Setup your deferred IO callback. Eg: 62 - static void hecubafb_dpy_deferred_io(struct fb_info *info, 63 - struct list_head *pagelist) 64 - 65 - The deferred_io callback is where you would perform all your IO to the display 66 - device. You receive the pagelist which is the list of pages that were written 67 - to during the delay. You must not modify this list. This callback is called 68 - from a workqueue. 69 - 70 - 3. Call init 71 - info->fbdefio = &hecubafb_defio; 72 - fb_deferred_io_init(info); 73 - 74 - 4. Call cleanup 75 - fb_deferred_io_cleanup(info);
+39
Documentation/fb/efifb.rst
··· 1 + ============== 2 + What is efifb? 3 + ============== 4 + 5 + This is a generic EFI platform driver for Intel based Apple computers. 6 + efifb is only for EFI booted Intel Macs. 7 + 8 + Supported Hardware 9 + ================== 10 + 11 + - iMac 17"/20" 12 + - Macbook 13 + - Macbook Pro 15"/17" 14 + - MacMini 15 + 16 + How to use it? 17 + ============== 18 + 19 + efifb does not have any kind of autodetection of your machine. 20 + You have to add the following kernel parameters in your elilo.conf:: 21 + 22 + Macbook : 23 + video=efifb:macbook 24 + MacMini : 25 + video=efifb:mini 26 + Macbook Pro 15", iMac 17" : 27 + video=efifb:i17 28 + Macbook Pro 17", iMac 20" : 29 + video=efifb:i20 30 + 31 + Accepted options: 32 + 33 + ======= =========================================================== 34 + nowc Don't map the framebuffer write combined. This can be used 35 + to workaround side-effects and slowdowns on other CPU cores 36 + when large amounts of console data are written. 37 + ======= =========================================================== 38 + 39 + Edgar Hucek <gimli@dark-green.com>
-37
Documentation/fb/efifb.txt
··· 1 - 2 - What is efifb? 3 - =============== 4 - 5 - This is a generic EFI platform driver for Intel based Apple computers. 6 - efifb is only for EFI booted Intel Macs. 7 - 8 - Supported Hardware 9 - ================== 10 - 11 - iMac 17"/20" 12 - Macbook 13 - Macbook Pro 15"/17" 14 - MacMini 15 - 16 - How to use it? 17 - ============== 18 - 19 - efifb does not have any kind of autodetection of your machine. 20 - You have to add the following kernel parameters in your elilo.conf: 21 - Macbook : 22 - video=efifb:macbook 23 - MacMini : 24 - video=efifb:mini 25 - Macbook Pro 15", iMac 17" : 26 - video=efifb:i17 27 - Macbook Pro 17", iMac 20" : 28 - video=efifb:i20 29 - 30 - Accepted options: 31 - 32 - nowc Don't map the framebuffer write combined. This can be used 33 - to workaround side-effects and slowdowns on other CPU cores 34 - when large amounts of console data are written. 35 - 36 - -- 37 - Edgar Hucek <gimli@dark-green.com>
+140
Documentation/fb/ep93xx-fb.rst
··· 1 + ================================ 2 + Driver for EP93xx LCD controller 3 + ================================ 4 + 5 + The EP93xx LCD controller can drive both standard desktop monitors and 6 + embedded LCD displays. If you have a standard desktop monitor then you 7 + can use the standard Linux video mode database. In your board file:: 8 + 9 + static struct ep93xxfb_mach_info some_board_fb_info = { 10 + .num_modes = EP93XXFB_USE_MODEDB, 11 + .bpp = 16, 12 + }; 13 + 14 + If you have an embedded LCD display then you need to define a video 15 + mode for it as follows:: 16 + 17 + static struct fb_videomode some_board_video_modes[] = { 18 + { 19 + .name = "some_lcd_name", 20 + /* Pixel clock, porches, etc */ 21 + }, 22 + }; 23 + 24 + Note that the pixel clock value is in pico-seconds. You can use the 25 + KHZ2PICOS macro to convert the pixel clock value. Most other values 26 + are in pixel clocks. See Documentation/fb/framebuffer.rst for further 27 + details. 28 + 29 + The ep93xxfb_mach_info structure for your board should look like the 30 + following:: 31 + 32 + static struct ep93xxfb_mach_info some_board_fb_info = { 33 + .num_modes = ARRAY_SIZE(some_board_video_modes), 34 + .modes = some_board_video_modes, 35 + .default_mode = &some_board_video_modes[0], 36 + .bpp = 16, 37 + }; 38 + 39 + The framebuffer device can be registered by adding the following to 40 + your board initialisation function:: 41 + 42 + ep93xx_register_fb(&some_board_fb_info); 43 + 44 + ===================== 45 + Video Attribute Flags 46 + ===================== 47 + 48 + The ep93xxfb_mach_info structure has a flags field which can be used 49 + to configure the controller. The video attributes flags are fully 50 + documented in section 7 of the EP93xx users' guide. The following 51 + flags are available: 52 + 53 + =============================== ========================================== 54 + EP93XXFB_PCLK_FALLING Clock data on the falling edge of the 55 + pixel clock. The default is to clock 56 + data on the rising edge. 57 + 58 + EP93XXFB_SYNC_BLANK_HIGH Blank signal is active high. By 59 + default the blank signal is active low. 60 + 61 + EP93XXFB_SYNC_HORIZ_HIGH Horizontal sync is active high. By 62 + default the horizontal sync is active low. 63 + 64 + EP93XXFB_SYNC_VERT_HIGH Vertical sync is active high. By 65 + default the vertical sync is active high. 66 + =============================== ========================================== 67 + 68 + The physical address of the framebuffer can be controlled using the 69 + following flags: 70 + 71 + =============================== ====================================== 72 + EP93XXFB_USE_SDCSN0 Use SDCSn[0] for the framebuffer. This 73 + is the default setting. 74 + 75 + EP93XXFB_USE_SDCSN1 Use SDCSn[1] for the framebuffer. 76 + 77 + EP93XXFB_USE_SDCSN2 Use SDCSn[2] for the framebuffer. 78 + 79 + EP93XXFB_USE_SDCSN3 Use SDCSn[3] for the framebuffer. 80 + =============================== ====================================== 81 + 82 + ================== 83 + Platform callbacks 84 + ================== 85 + 86 + The EP93xx framebuffer driver supports three optional platform 87 + callbacks: setup, teardown and blank. The setup and teardown functions 88 + are called when the framebuffer driver is installed and removed 89 + respectively. The blank function is called whenever the display is 90 + blanked or unblanked. 91 + 92 + The setup and teardown devices pass the platform_device structure as 93 + an argument. The fb_info and ep93xxfb_mach_info structures can be 94 + obtained as follows:: 95 + 96 + static int some_board_fb_setup(struct platform_device *pdev) 97 + { 98 + struct ep93xxfb_mach_info *mach_info = pdev->dev.platform_data; 99 + struct fb_info *fb_info = platform_get_drvdata(pdev); 100 + 101 + /* Board specific framebuffer setup */ 102 + } 103 + 104 + ====================== 105 + Setting the video mode 106 + ====================== 107 + 108 + The video mode is set using the following syntax:: 109 + 110 + video=XRESxYRES[-BPP][@REFRESH] 111 + 112 + If the EP93xx video driver is built-in then the video mode is set on 113 + the Linux kernel command line, for example:: 114 + 115 + video=ep93xx-fb:800x600-16@60 116 + 117 + If the EP93xx video driver is built as a module then the video mode is 118 + set when the module is installed:: 119 + 120 + modprobe ep93xx-fb video=320x240 121 + 122 + ============== 123 + Screenpage bug 124 + ============== 125 + 126 + At least on the EP9315 there is a silicon bug which causes bit 27 of 127 + the VIDSCRNPAGE (framebuffer physical offset) to be tied low. There is 128 + an unofficial errata for this bug at:: 129 + 130 + http://marc.info/?l=linux-arm-kernel&m=110061245502000&w=2 131 + 132 + By default the EP93xx framebuffer driver checks if the allocated physical 133 + address has bit 27 set. If it does, then the memory is freed and an 134 + error is returned. The check can be disabled by adding the following 135 + option when loading the driver:: 136 + 137 + ep93xx-fb.check_screenpage_bug=0 138 + 139 + In some cases it may be possible to reconfigure your SDRAM layout to 140 + avoid this bug. See section 13 of the EP93xx users' guide for details.
-135
Documentation/fb/ep93xx-fb.txt
··· 1 - ================================ 2 - Driver for EP93xx LCD controller 3 - ================================ 4 - 5 - The EP93xx LCD controller can drive both standard desktop monitors and 6 - embedded LCD displays. If you have a standard desktop monitor then you 7 - can use the standard Linux video mode database. In your board file: 8 - 9 - static struct ep93xxfb_mach_info some_board_fb_info = { 10 - .num_modes = EP93XXFB_USE_MODEDB, 11 - .bpp = 16, 12 - }; 13 - 14 - If you have an embedded LCD display then you need to define a video 15 - mode for it as follows: 16 - 17 - static struct fb_videomode some_board_video_modes[] = { 18 - { 19 - .name = "some_lcd_name", 20 - /* Pixel clock, porches, etc */ 21 - }, 22 - }; 23 - 24 - Note that the pixel clock value is in pico-seconds. You can use the 25 - KHZ2PICOS macro to convert the pixel clock value. Most other values 26 - are in pixel clocks. See Documentation/fb/framebuffer.txt for further 27 - details. 28 - 29 - The ep93xxfb_mach_info structure for your board should look like the 30 - following: 31 - 32 - static struct ep93xxfb_mach_info some_board_fb_info = { 33 - .num_modes = ARRAY_SIZE(some_board_video_modes), 34 - .modes = some_board_video_modes, 35 - .default_mode = &some_board_video_modes[0], 36 - .bpp = 16, 37 - }; 38 - 39 - The framebuffer device can be registered by adding the following to 40 - your board initialisation function: 41 - 42 - ep93xx_register_fb(&some_board_fb_info); 43 - 44 - ===================== 45 - Video Attribute Flags 46 - ===================== 47 - 48 - The ep93xxfb_mach_info structure has a flags field which can be used 49 - to configure the controller. The video attributes flags are fully 50 - documented in section 7 of the EP93xx users' guide. The following 51 - flags are available: 52 - 53 - EP93XXFB_PCLK_FALLING Clock data on the falling edge of the 54 - pixel clock. The default is to clock 55 - data on the rising edge. 56 - 57 - EP93XXFB_SYNC_BLANK_HIGH Blank signal is active high. By 58 - default the blank signal is active low. 59 - 60 - EP93XXFB_SYNC_HORIZ_HIGH Horizontal sync is active high. By 61 - default the horizontal sync is active low. 62 - 63 - EP93XXFB_SYNC_VERT_HIGH Vertical sync is active high. By 64 - default the vertical sync is active high. 65 - 66 - The physical address of the framebuffer can be controlled using the 67 - following flags: 68 - 69 - EP93XXFB_USE_SDCSN0 Use SDCSn[0] for the framebuffer. This 70 - is the default setting. 71 - 72 - EP93XXFB_USE_SDCSN1 Use SDCSn[1] for the framebuffer. 73 - 74 - EP93XXFB_USE_SDCSN2 Use SDCSn[2] for the framebuffer. 75 - 76 - EP93XXFB_USE_SDCSN3 Use SDCSn[3] for the framebuffer. 77 - 78 - ================== 79 - Platform callbacks 80 - ================== 81 - 82 - The EP93xx framebuffer driver supports three optional platform 83 - callbacks: setup, teardown and blank. The setup and teardown functions 84 - are called when the framebuffer driver is installed and removed 85 - respectively. The blank function is called whenever the display is 86 - blanked or unblanked. 87 - 88 - The setup and teardown devices pass the platform_device structure as 89 - an argument. The fb_info and ep93xxfb_mach_info structures can be 90 - obtained as follows: 91 - 92 - static int some_board_fb_setup(struct platform_device *pdev) 93 - { 94 - struct ep93xxfb_mach_info *mach_info = pdev->dev.platform_data; 95 - struct fb_info *fb_info = platform_get_drvdata(pdev); 96 - 97 - /* Board specific framebuffer setup */ 98 - } 99 - 100 - ====================== 101 - Setting the video mode 102 - ====================== 103 - 104 - The video mode is set using the following syntax: 105 - 106 - video=XRESxYRES[-BPP][@REFRESH] 107 - 108 - If the EP93xx video driver is built-in then the video mode is set on 109 - the Linux kernel command line, for example: 110 - 111 - video=ep93xx-fb:800x600-16@60 112 - 113 - If the EP93xx video driver is built as a module then the video mode is 114 - set when the module is installed: 115 - 116 - modprobe ep93xx-fb video=320x240 117 - 118 - ============== 119 - Screenpage bug 120 - ============== 121 - 122 - At least on the EP9315 there is a silicon bug which causes bit 27 of 123 - the VIDSCRNPAGE (framebuffer physical offset) to be tied low. There is 124 - an unofficial errata for this bug at: 125 - http://marc.info/?l=linux-arm-kernel&m=110061245502000&w=2 126 - 127 - By default the EP93xx framebuffer driver checks if the allocated physical 128 - address has bit 27 set. If it does, then the memory is freed and an 129 - error is returned. The check can be disabled by adding the following 130 - option when loading the driver: 131 - 132 - ep93xx-fb.check_screenpage_bug=0 133 - 134 - In some cases it may be possible to reconfigure your SDRAM layout to 135 - avoid this bug. See section 13 of the EP93xx users' guide for details.
+350
Documentation/fb/fbcon.rst
··· 1 + ======================= 2 + The Framebuffer Console 3 + ======================= 4 + 5 + The framebuffer console (fbcon), as its name implies, is a text 6 + console running on top of the framebuffer device. It has the functionality of 7 + any standard text console driver, such as the VGA console, with the added 8 + features that can be attributed to the graphical nature of the framebuffer. 9 + 10 + In the x86 architecture, the framebuffer console is optional, and 11 + some even treat it as a toy. For other architectures, it is the only available 12 + display device, text or graphical. 13 + 14 + What are the features of fbcon? The framebuffer console supports 15 + high resolutions, varying font types, display rotation, primitive multihead, 16 + etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature 17 + made available by the underlying graphics card are also possible. 18 + 19 + A. Configuration 20 + ================ 21 + 22 + The framebuffer console can be enabled by using your favorite kernel 23 + configuration tool. It is under Device Drivers->Graphics Support->Frame 24 + buffer Devices->Console display driver support->Framebuffer Console Support. 25 + Select 'y' to compile support statically or 'm' for module support. The 26 + module will be fbcon. 27 + 28 + In order for fbcon to activate, at least one framebuffer driver is 29 + required, so choose from any of the numerous drivers available. For x86 30 + systems, they almost universally have VGA cards, so vga16fb and vesafb will 31 + always be available. However, using a chipset-specific driver will give you 32 + more speed and features, such as the ability to change the video mode 33 + dynamically. 34 + 35 + To display the penguin logo, choose any logo available in Graphics 36 + support->Bootup logo. 37 + 38 + Also, you will need to select at least one compiled-in font, but if 39 + you don't do anything, the kernel configuration tool will select one for you, 40 + usually an 8x16 font. 41 + 42 + GOTCHA: A common bug report is enabling the framebuffer without enabling the 43 + framebuffer console. Depending on the driver, you may get a blanked or 44 + garbled display, but the system still boots to completion. If you are 45 + fortunate to have a driver that does not alter the graphics chip, then you 46 + will still get a VGA console. 47 + 48 + B. Loading 49 + ========== 50 + 51 + Possible scenarios: 52 + 53 + 1. Driver and fbcon are compiled statically 54 + 55 + Usually, fbcon will automatically take over your console. The notable 56 + exception is vesafb. It needs to be explicitly activated with the 57 + vga= boot option parameter. 58 + 59 + 2. Driver is compiled statically, fbcon is compiled as a module 60 + 61 + Depending on the driver, you either get a standard console, or a 62 + garbled display, as mentioned above. To get a framebuffer console, 63 + do a 'modprobe fbcon'. 64 + 65 + 3. Driver is compiled as a module, fbcon is compiled statically 66 + 67 + You get your standard console. Once the driver is loaded with 68 + 'modprobe xxxfb', fbcon automatically takes over the console with 69 + the possible exception of using the fbcon=map:n option. See below. 70 + 71 + 4. Driver and fbcon are compiled as a module. 72 + 73 + You can load them in any order. Once both are loaded, fbcon will take 74 + over the console. 75 + 76 + C. Boot options 77 + 78 + The framebuffer console has several, largely unknown, boot options 79 + that can change its behavior. 80 + 81 + 1. fbcon=font:<name> 82 + 83 + Select the initial font to use. The value 'name' can be any of the 84 + compiled-in fonts: 10x18, 6x10, 7x14, Acorn8x8, MINI4x6, 85 + PEARL8x8, ProFont6x11, SUN12x22, SUN8x16, VGA8x16, VGA8x8. 86 + 87 + Note, not all drivers can handle font with widths not divisible by 8, 88 + such as vga16fb. 89 + 90 + 2. fbcon=scrollback:<value>[k] 91 + 92 + The scrollback buffer is memory that is used to preserve display 93 + contents that has already scrolled past your view. This is accessed 94 + by using the Shift-PageUp key combination. The value 'value' is any 95 + integer. It defaults to 32KB. The 'k' suffix is optional, and will 96 + multiply the 'value' by 1024. 97 + 98 + 3. fbcon=map:<0123> 99 + 100 + This is an interesting option. It tells which driver gets mapped to 101 + which console. The value '0123' is a sequence that gets repeated until 102 + the total length is 64 which is the number of consoles available. In 103 + the above example, it is expanded to 012301230123... and the mapping 104 + will be:: 105 + 106 + tty | 1 2 3 4 5 6 7 8 9 ... 107 + fb | 0 1 2 3 0 1 2 3 0 ... 108 + 109 + ('cat /proc/fb' should tell you what the fb numbers are) 110 + 111 + One side effect that may be useful is using a map value that exceeds 112 + the number of loaded fb drivers. For example, if only one driver is 113 + available, fb0, adding fbcon=map:1 tells fbcon not to take over the 114 + console. 115 + 116 + Later on, when you want to map the console the to the framebuffer 117 + device, you can use the con2fbmap utility. 118 + 119 + 4. fbcon=vc:<n1>-<n2> 120 + 121 + This option tells fbcon to take over only a range of consoles as 122 + specified by the values 'n1' and 'n2'. The rest of the consoles 123 + outside the given range will still be controlled by the standard 124 + console driver. 125 + 126 + NOTE: For x86 machines, the standard console is the VGA console which 127 + is typically located on the same video card. Thus, the consoles that 128 + are controlled by the VGA console will be garbled. 129 + 130 + 4. fbcon=rotate:<n> 131 + 132 + This option changes the orientation angle of the console display. The 133 + value 'n' accepts the following: 134 + 135 + - 0 - normal orientation (0 degree) 136 + - 1 - clockwise orientation (90 degrees) 137 + - 2 - upside down orientation (180 degrees) 138 + - 3 - counterclockwise orientation (270 degrees) 139 + 140 + The angle can be changed anytime afterwards by 'echoing' the same 141 + numbers to any one of the 2 attributes found in 142 + /sys/class/graphics/fbcon: 143 + 144 + - rotate - rotate the display of the active console 145 + - rotate_all - rotate the display of all consoles 146 + 147 + Console rotation will only become available if Framebuffer Console 148 + Rotation support is compiled in your kernel. 149 + 150 + NOTE: This is purely console rotation. Any other applications that 151 + use the framebuffer will remain at their 'normal' orientation. 152 + Actually, the underlying fb driver is totally ignorant of console 153 + rotation. 154 + 155 + 5. fbcon=margin:<color> 156 + 157 + This option specifies the color of the margins. The margins are the 158 + leftover area at the right and the bottom of the screen that are not 159 + used by text. By default, this area will be black. The 'color' value 160 + is an integer number that depends on the framebuffer driver being used. 161 + 162 + 6. fbcon=nodefer 163 + 164 + If the kernel is compiled with deferred fbcon takeover support, normally 165 + the framebuffer contents, left in place by the firmware/bootloader, will 166 + be preserved until there actually is some text is output to the console. 167 + This option causes fbcon to bind immediately to the fbdev device. 168 + 169 + 7. fbcon=logo-pos:<location> 170 + 171 + The only possible 'location' is 'center' (without quotes), and when 172 + given, the bootup logo is moved from the default top-left corner 173 + location to the center of the framebuffer. If more than one logo is 174 + displayed due to multiple CPUs, the collected line of logos is moved 175 + as a whole. 176 + 177 + C. Attaching, Detaching and Unloading 178 + 179 + Before going on to how to attach, detach and unload the framebuffer console, an 180 + illustration of the dependencies may help. 181 + 182 + The console layer, as with most subsystems, needs a driver that interfaces with 183 + the hardware. Thus, in a VGA console:: 184 + 185 + console ---> VGA driver ---> hardware. 186 + 187 + Assuming the VGA driver can be unloaded, one must first unbind the VGA driver 188 + from the console layer before unloading the driver. The VGA driver cannot be 189 + unloaded if it is still bound to the console layer. (See 190 + Documentation/console/console.txt for more information). 191 + 192 + This is more complicated in the case of the framebuffer console (fbcon), 193 + because fbcon is an intermediate layer between the console and the drivers:: 194 + 195 + console ---> fbcon ---> fbdev drivers ---> hardware 196 + 197 + The fbdev drivers cannot be unloaded if bound to fbcon, and fbcon cannot 198 + be unloaded if it's bound to the console layer. 199 + 200 + So to unload the fbdev drivers, one must first unbind fbcon from the console, 201 + then unbind the fbdev drivers from fbcon. Fortunately, unbinding fbcon from 202 + the console layer will automatically unbind framebuffer drivers from 203 + fbcon. Thus, there is no need to explicitly unbind the fbdev drivers from 204 + fbcon. 205 + 206 + So, how do we unbind fbcon from the console? Part of the answer is in 207 + Documentation/console/console.txt. To summarize: 208 + 209 + Echo a value to the bind file that represents the framebuffer console 210 + driver. So assuming vtcon1 represents fbcon, then:: 211 + 212 + echo 1 > sys/class/vtconsole/vtcon1/bind - attach framebuffer console to 213 + console layer 214 + echo 0 > sys/class/vtconsole/vtcon1/bind - detach framebuffer console from 215 + console layer 216 + 217 + If fbcon is detached from the console layer, your boot console driver (which is 218 + usually VGA text mode) will take over. A few drivers (rivafb and i810fb) will 219 + restore VGA text mode for you. With the rest, before detaching fbcon, you 220 + must take a few additional steps to make sure that your VGA text mode is 221 + restored properly. The following is one of the several methods that you can do: 222 + 223 + 1. Download or install vbetool. This utility is included with most 224 + distributions nowadays, and is usually part of the suspend/resume tool. 225 + 226 + 2. In your kernel configuration, ensure that CONFIG_FRAMEBUFFER_CONSOLE is set 227 + to 'y' or 'm'. Enable one or more of your favorite framebuffer drivers. 228 + 229 + 3. Boot into text mode and as root run:: 230 + 231 + vbetool vbestate save > <vga state file> 232 + 233 + The above command saves the register contents of your graphics 234 + hardware to <vga state file>. You need to do this step only once as 235 + the state file can be reused. 236 + 237 + 4. If fbcon is compiled as a module, load fbcon by doing:: 238 + 239 + modprobe fbcon 240 + 241 + 5. Now to detach fbcon:: 242 + 243 + vbetool vbestate restore < <vga state file> && \ 244 + echo 0 > /sys/class/vtconsole/vtcon1/bind 245 + 246 + 6. That's it, you're back to VGA mode. And if you compiled fbcon as a module, 247 + you can unload it by 'rmmod fbcon'. 248 + 249 + 7. To reattach fbcon:: 250 + 251 + echo 1 > /sys/class/vtconsole/vtcon1/bind 252 + 253 + 8. Once fbcon is unbound, all drivers registered to the system will also 254 + become unbound. This means that fbcon and individual framebuffer drivers 255 + can be unloaded or reloaded at will. Reloading the drivers or fbcon will 256 + automatically bind the console, fbcon and the drivers together. Unloading 257 + all the drivers without unloading fbcon will make it impossible for the 258 + console to bind fbcon. 259 + 260 + Notes for vesafb users: 261 + ======================= 262 + 263 + Unfortunately, if your bootline includes a vga=xxx parameter that sets the 264 + hardware in graphics mode, such as when loading vesafb, vgacon will not load. 265 + Instead, vgacon will replace the default boot console with dummycon, and you 266 + won't get any display after detaching fbcon. Your machine is still alive, so 267 + you can reattach vesafb. However, to reattach vesafb, you need to do one of 268 + the following: 269 + 270 + Variation 1: 271 + 272 + a. Before detaching fbcon, do:: 273 + 274 + vbetool vbemode save > <vesa state file> # do once for each vesafb mode, 275 + # the file can be reused 276 + 277 + b. Detach fbcon as in step 5. 278 + 279 + c. Attach fbcon:: 280 + 281 + vbetool vbestate restore < <vesa state file> && \ 282 + echo 1 > /sys/class/vtconsole/vtcon1/bind 283 + 284 + Variation 2: 285 + 286 + a. Before detaching fbcon, do:: 287 + 288 + echo <ID> > /sys/class/tty/console/bind 289 + 290 + vbetool vbemode get 291 + 292 + b. Take note of the mode number 293 + 294 + b. Detach fbcon as in step 5. 295 + 296 + c. Attach fbcon:: 297 + 298 + vbetool vbemode set <mode number> && \ 299 + echo 1 > /sys/class/vtconsole/vtcon1/bind 300 + 301 + Samples: 302 + ======== 303 + 304 + Here are 2 sample bash scripts that you can use to bind or unbind the 305 + framebuffer console driver if you are on an X86 box:: 306 + 307 + #!/bin/bash 308 + # Unbind fbcon 309 + 310 + # Change this to where your actual vgastate file is located 311 + # Or Use VGASTATE=$1 to indicate the state file at runtime 312 + VGASTATE=/tmp/vgastate 313 + 314 + # path to vbetool 315 + VBETOOL=/usr/local/bin 316 + 317 + 318 + for (( i = 0; i < 16; i++)) 319 + do 320 + if test -x /sys/class/vtconsole/vtcon$i; then 321 + if [ `cat /sys/class/vtconsole/vtcon$i/name | grep -c "frame buffer"` \ 322 + = 1 ]; then 323 + if test -x $VBETOOL/vbetool; then 324 + echo Unbinding vtcon$i 325 + $VBETOOL/vbetool vbestate restore < $VGASTATE 326 + echo 0 > /sys/class/vtconsole/vtcon$i/bind 327 + fi 328 + fi 329 + fi 330 + done 331 + 332 + --------------------------------------------------------------------------- 333 + 334 + :: 335 + 336 + #!/bin/bash 337 + # Bind fbcon 338 + 339 + for (( i = 0; i < 16; i++)) 340 + do 341 + if test -x /sys/class/vtconsole/vtcon$i; then 342 + if [ `cat /sys/class/vtconsole/vtcon$i/name | grep -c "frame buffer"` \ 343 + = 1 ]; then 344 + echo Unbinding vtcon$i 345 + echo 1 > /sys/class/vtconsole/vtcon$i/bind 346 + fi 347 + fi 348 + done 349 + 350 + Antonino Daplas <adaplas@pol.net>
-347
Documentation/fb/fbcon.txt
··· 1 - The Framebuffer Console 2 - ======================= 3 - 4 - The framebuffer console (fbcon), as its name implies, is a text 5 - console running on top of the framebuffer device. It has the functionality of 6 - any standard text console driver, such as the VGA console, with the added 7 - features that can be attributed to the graphical nature of the framebuffer. 8 - 9 - In the x86 architecture, the framebuffer console is optional, and 10 - some even treat it as a toy. For other architectures, it is the only available 11 - display device, text or graphical. 12 - 13 - What are the features of fbcon? The framebuffer console supports 14 - high resolutions, varying font types, display rotation, primitive multihead, 15 - etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature 16 - made available by the underlying graphics card are also possible. 17 - 18 - A. Configuration 19 - 20 - The framebuffer console can be enabled by using your favorite kernel 21 - configuration tool. It is under Device Drivers->Graphics Support->Frame 22 - buffer Devices->Console display driver support->Framebuffer Console Support. 23 - Select 'y' to compile support statically or 'm' for module support. The 24 - module will be fbcon. 25 - 26 - In order for fbcon to activate, at least one framebuffer driver is 27 - required, so choose from any of the numerous drivers available. For x86 28 - systems, they almost universally have VGA cards, so vga16fb and vesafb will 29 - always be available. However, using a chipset-specific driver will give you 30 - more speed and features, such as the ability to change the video mode 31 - dynamically. 32 - 33 - To display the penguin logo, choose any logo available in Graphics 34 - support->Bootup logo. 35 - 36 - Also, you will need to select at least one compiled-in font, but if 37 - you don't do anything, the kernel configuration tool will select one for you, 38 - usually an 8x16 font. 39 - 40 - GOTCHA: A common bug report is enabling the framebuffer without enabling the 41 - framebuffer console. Depending on the driver, you may get a blanked or 42 - garbled display, but the system still boots to completion. If you are 43 - fortunate to have a driver that does not alter the graphics chip, then you 44 - will still get a VGA console. 45 - 46 - B. Loading 47 - 48 - Possible scenarios: 49 - 50 - 1. Driver and fbcon are compiled statically 51 - 52 - Usually, fbcon will automatically take over your console. The notable 53 - exception is vesafb. It needs to be explicitly activated with the 54 - vga= boot option parameter. 55 - 56 - 2. Driver is compiled statically, fbcon is compiled as a module 57 - 58 - Depending on the driver, you either get a standard console, or a 59 - garbled display, as mentioned above. To get a framebuffer console, 60 - do a 'modprobe fbcon'. 61 - 62 - 3. Driver is compiled as a module, fbcon is compiled statically 63 - 64 - You get your standard console. Once the driver is loaded with 65 - 'modprobe xxxfb', fbcon automatically takes over the console with 66 - the possible exception of using the fbcon=map:n option. See below. 67 - 68 - 4. Driver and fbcon are compiled as a module. 69 - 70 - You can load them in any order. Once both are loaded, fbcon will take 71 - over the console. 72 - 73 - C. Boot options 74 - 75 - The framebuffer console has several, largely unknown, boot options 76 - that can change its behavior. 77 - 78 - 1. fbcon=font:<name> 79 - 80 - Select the initial font to use. The value 'name' can be any of the 81 - compiled-in fonts: 10x18, 6x10, 7x14, Acorn8x8, MINI4x6, 82 - PEARL8x8, ProFont6x11, SUN12x22, SUN8x16, VGA8x16, VGA8x8. 83 - 84 - Note, not all drivers can handle font with widths not divisible by 8, 85 - such as vga16fb. 86 - 87 - 2. fbcon=scrollback:<value>[k] 88 - 89 - The scrollback buffer is memory that is used to preserve display 90 - contents that has already scrolled past your view. This is accessed 91 - by using the Shift-PageUp key combination. The value 'value' is any 92 - integer. It defaults to 32KB. The 'k' suffix is optional, and will 93 - multiply the 'value' by 1024. 94 - 95 - 3. fbcon=map:<0123> 96 - 97 - This is an interesting option. It tells which driver gets mapped to 98 - which console. The value '0123' is a sequence that gets repeated until 99 - the total length is 64 which is the number of consoles available. In 100 - the above example, it is expanded to 012301230123... and the mapping 101 - will be: 102 - 103 - tty | 1 2 3 4 5 6 7 8 9 ... 104 - fb | 0 1 2 3 0 1 2 3 0 ... 105 - 106 - ('cat /proc/fb' should tell you what the fb numbers are) 107 - 108 - One side effect that may be useful is using a map value that exceeds 109 - the number of loaded fb drivers. For example, if only one driver is 110 - available, fb0, adding fbcon=map:1 tells fbcon not to take over the 111 - console. 112 - 113 - Later on, when you want to map the console the to the framebuffer 114 - device, you can use the con2fbmap utility. 115 - 116 - 4. fbcon=vc:<n1>-<n2> 117 - 118 - This option tells fbcon to take over only a range of consoles as 119 - specified by the values 'n1' and 'n2'. The rest of the consoles 120 - outside the given range will still be controlled by the standard 121 - console driver. 122 - 123 - NOTE: For x86 machines, the standard console is the VGA console which 124 - is typically located on the same video card. Thus, the consoles that 125 - are controlled by the VGA console will be garbled. 126 - 127 - 4. fbcon=rotate:<n> 128 - 129 - This option changes the orientation angle of the console display. The 130 - value 'n' accepts the following: 131 - 132 - 0 - normal orientation (0 degree) 133 - 1 - clockwise orientation (90 degrees) 134 - 2 - upside down orientation (180 degrees) 135 - 3 - counterclockwise orientation (270 degrees) 136 - 137 - The angle can be changed anytime afterwards by 'echoing' the same 138 - numbers to any one of the 2 attributes found in 139 - /sys/class/graphics/fbcon: 140 - 141 - rotate - rotate the display of the active console 142 - rotate_all - rotate the display of all consoles 143 - 144 - Console rotation will only become available if Framebuffer Console 145 - Rotation support is compiled in your kernel. 146 - 147 - NOTE: This is purely console rotation. Any other applications that 148 - use the framebuffer will remain at their 'normal' orientation. 149 - Actually, the underlying fb driver is totally ignorant of console 150 - rotation. 151 - 152 - 5. fbcon=margin:<color> 153 - 154 - This option specifies the color of the margins. The margins are the 155 - leftover area at the right and the bottom of the screen that are not 156 - used by text. By default, this area will be black. The 'color' value 157 - is an integer number that depends on the framebuffer driver being used. 158 - 159 - 6. fbcon=nodefer 160 - 161 - If the kernel is compiled with deferred fbcon takeover support, normally 162 - the framebuffer contents, left in place by the firmware/bootloader, will 163 - be preserved until there actually is some text is output to the console. 164 - This option causes fbcon to bind immediately to the fbdev device. 165 - 166 - 7. fbcon=logo-pos:<location> 167 - 168 - The only possible 'location' is 'center' (without quotes), and when 169 - given, the bootup logo is moved from the default top-left corner 170 - location to the center of the framebuffer. If more than one logo is 171 - displayed due to multiple CPUs, the collected line of logos is moved 172 - as a whole. 173 - 174 - C. Attaching, Detaching and Unloading 175 - 176 - Before going on to how to attach, detach and unload the framebuffer console, an 177 - illustration of the dependencies may help. 178 - 179 - The console layer, as with most subsystems, needs a driver that interfaces with 180 - the hardware. Thus, in a VGA console: 181 - 182 - console ---> VGA driver ---> hardware. 183 - 184 - Assuming the VGA driver can be unloaded, one must first unbind the VGA driver 185 - from the console layer before unloading the driver. The VGA driver cannot be 186 - unloaded if it is still bound to the console layer. (See 187 - Documentation/console/console.txt for more information). 188 - 189 - This is more complicated in the case of the framebuffer console (fbcon), 190 - because fbcon is an intermediate layer between the console and the drivers: 191 - 192 - console ---> fbcon ---> fbdev drivers ---> hardware 193 - 194 - The fbdev drivers cannot be unloaded if bound to fbcon, and fbcon cannot 195 - be unloaded if it's bound to the console layer. 196 - 197 - So to unload the fbdev drivers, one must first unbind fbcon from the console, 198 - then unbind the fbdev drivers from fbcon. Fortunately, unbinding fbcon from 199 - the console layer will automatically unbind framebuffer drivers from 200 - fbcon. Thus, there is no need to explicitly unbind the fbdev drivers from 201 - fbcon. 202 - 203 - So, how do we unbind fbcon from the console? Part of the answer is in 204 - Documentation/console/console.txt. To summarize: 205 - 206 - Echo a value to the bind file that represents the framebuffer console 207 - driver. So assuming vtcon1 represents fbcon, then: 208 - 209 - echo 1 > sys/class/vtconsole/vtcon1/bind - attach framebuffer console to 210 - console layer 211 - echo 0 > sys/class/vtconsole/vtcon1/bind - detach framebuffer console from 212 - console layer 213 - 214 - If fbcon is detached from the console layer, your boot console driver (which is 215 - usually VGA text mode) will take over. A few drivers (rivafb and i810fb) will 216 - restore VGA text mode for you. With the rest, before detaching fbcon, you 217 - must take a few additional steps to make sure that your VGA text mode is 218 - restored properly. The following is one of the several methods that you can do: 219 - 220 - 1. Download or install vbetool. This utility is included with most 221 - distributions nowadays, and is usually part of the suspend/resume tool. 222 - 223 - 2. In your kernel configuration, ensure that CONFIG_FRAMEBUFFER_CONSOLE is set 224 - to 'y' or 'm'. Enable one or more of your favorite framebuffer drivers. 225 - 226 - 3. Boot into text mode and as root run: 227 - 228 - vbetool vbestate save > <vga state file> 229 - 230 - The above command saves the register contents of your graphics 231 - hardware to <vga state file>. You need to do this step only once as 232 - the state file can be reused. 233 - 234 - 4. If fbcon is compiled as a module, load fbcon by doing: 235 - 236 - modprobe fbcon 237 - 238 - 5. Now to detach fbcon: 239 - 240 - vbetool vbestate restore < <vga state file> && \ 241 - echo 0 > /sys/class/vtconsole/vtcon1/bind 242 - 243 - 6. That's it, you're back to VGA mode. And if you compiled fbcon as a module, 244 - you can unload it by 'rmmod fbcon'. 245 - 246 - 7. To reattach fbcon: 247 - 248 - echo 1 > /sys/class/vtconsole/vtcon1/bind 249 - 250 - 8. Once fbcon is unbound, all drivers registered to the system will also 251 - become unbound. This means that fbcon and individual framebuffer drivers 252 - can be unloaded or reloaded at will. Reloading the drivers or fbcon will 253 - automatically bind the console, fbcon and the drivers together. Unloading 254 - all the drivers without unloading fbcon will make it impossible for the 255 - console to bind fbcon. 256 - 257 - Notes for vesafb users: 258 - ======================= 259 - 260 - Unfortunately, if your bootline includes a vga=xxx parameter that sets the 261 - hardware in graphics mode, such as when loading vesafb, vgacon will not load. 262 - Instead, vgacon will replace the default boot console with dummycon, and you 263 - won't get any display after detaching fbcon. Your machine is still alive, so 264 - you can reattach vesafb. However, to reattach vesafb, you need to do one of 265 - the following: 266 - 267 - Variation 1: 268 - 269 - a. Before detaching fbcon, do 270 - 271 - vbetool vbemode save > <vesa state file> # do once for each vesafb mode, 272 - # the file can be reused 273 - 274 - b. Detach fbcon as in step 5. 275 - 276 - c. Attach fbcon 277 - 278 - vbetool vbestate restore < <vesa state file> && \ 279 - echo 1 > /sys/class/vtconsole/vtcon1/bind 280 - 281 - Variation 2: 282 - 283 - a. Before detaching fbcon, do: 284 - echo <ID> > /sys/class/tty/console/bind 285 - 286 - 287 - vbetool vbemode get 288 - 289 - b. Take note of the mode number 290 - 291 - b. Detach fbcon as in step 5. 292 - 293 - c. Attach fbcon: 294 - 295 - vbetool vbemode set <mode number> && \ 296 - echo 1 > /sys/class/vtconsole/vtcon1/bind 297 - 298 - Samples: 299 - ======== 300 - 301 - Here are 2 sample bash scripts that you can use to bind or unbind the 302 - framebuffer console driver if you are on an X86 box: 303 - 304 - --------------------------------------------------------------------------- 305 - #!/bin/bash 306 - # Unbind fbcon 307 - 308 - # Change this to where your actual vgastate file is located 309 - # Or Use VGASTATE=$1 to indicate the state file at runtime 310 - VGASTATE=/tmp/vgastate 311 - 312 - # path to vbetool 313 - VBETOOL=/usr/local/bin 314 - 315 - 316 - for (( i = 0; i < 16; i++)) 317 - do 318 - if test -x /sys/class/vtconsole/vtcon$i; then 319 - if [ `cat /sys/class/vtconsole/vtcon$i/name | grep -c "frame buffer"` \ 320 - = 1 ]; then 321 - if test -x $VBETOOL/vbetool; then 322 - echo Unbinding vtcon$i 323 - $VBETOOL/vbetool vbestate restore < $VGASTATE 324 - echo 0 > /sys/class/vtconsole/vtcon$i/bind 325 - fi 326 - fi 327 - fi 328 - done 329 - 330 - --------------------------------------------------------------------------- 331 - #!/bin/bash 332 - # Bind fbcon 333 - 334 - for (( i = 0; i < 16; i++)) 335 - do 336 - if test -x /sys/class/vtconsole/vtcon$i; then 337 - if [ `cat /sys/class/vtconsole/vtcon$i/name | grep -c "frame buffer"` \ 338 - = 1 ]; then 339 - echo Unbinding vtcon$i 340 - echo 1 > /sys/class/vtconsole/vtcon$i/bind 341 - fi 342 - fi 343 - done 344 - --------------------------------------------------------------------------- 345 - 346 - -- 347 - Antonino Daplas <adaplas@pol.net>
+353
Documentation/fb/framebuffer.rst
··· 1 + ======================= 2 + The Frame Buffer Device 3 + ======================= 4 + 5 + Last revised: May 10, 2001 6 + 7 + 8 + 0. Introduction 9 + --------------- 10 + 11 + The frame buffer device provides an abstraction for the graphics hardware. It 12 + represents the frame buffer of some video hardware and allows application 13 + software to access the graphics hardware through a well-defined interface, so 14 + the software doesn't need to know anything about the low-level (hardware 15 + register) stuff. 16 + 17 + The device is accessed through special device nodes, usually located in the 18 + /dev directory, i.e. /dev/fb*. 19 + 20 + 21 + 1. User's View of /dev/fb* 22 + -------------------------- 23 + 24 + From the user's point of view, the frame buffer device looks just like any 25 + other device in /dev. It's a character device using major 29; the minor 26 + specifies the frame buffer number. 27 + 28 + By convention, the following device nodes are used (numbers indicate the device 29 + minor numbers):: 30 + 31 + 0 = /dev/fb0 First frame buffer 32 + 1 = /dev/fb1 Second frame buffer 33 + ... 34 + 31 = /dev/fb31 32nd frame buffer 35 + 36 + For backwards compatibility, you may want to create the following symbolic 37 + links:: 38 + 39 + /dev/fb0current -> fb0 40 + /dev/fb1current -> fb1 41 + 42 + and so on... 43 + 44 + The frame buffer devices are also `normal` memory devices, this means, you can 45 + read and write their contents. You can, for example, make a screen snapshot by:: 46 + 47 + cp /dev/fb0 myfile 48 + 49 + There also can be more than one frame buffer at a time, e.g. if you have a 50 + graphics card in addition to the built-in hardware. The corresponding frame 51 + buffer devices (/dev/fb0 and /dev/fb1 etc.) work independently. 52 + 53 + Application software that uses the frame buffer device (e.g. the X server) will 54 + use /dev/fb0 by default (older software uses /dev/fb0current). You can specify 55 + an alternative frame buffer device by setting the environment variable 56 + $FRAMEBUFFER to the path name of a frame buffer device, e.g. (for sh/bash 57 + users):: 58 + 59 + export FRAMEBUFFER=/dev/fb1 60 + 61 + or (for csh users):: 62 + 63 + setenv FRAMEBUFFER /dev/fb1 64 + 65 + After this the X server will use the second frame buffer. 66 + 67 + 68 + 2. Programmer's View of /dev/fb* 69 + -------------------------------- 70 + 71 + As you already know, a frame buffer device is a memory device like /dev/mem and 72 + it has the same features. You can read it, write it, seek to some location in 73 + it and mmap() it (the main usage). The difference is just that the memory that 74 + appears in the special file is not the whole memory, but the frame buffer of 75 + some video hardware. 76 + 77 + /dev/fb* also allows several ioctls on it, by which lots of information about 78 + the hardware can be queried and set. The color map handling works via ioctls, 79 + too. Look into <linux/fb.h> for more information on what ioctls exist and on 80 + which data structures they work. Here's just a brief overview: 81 + 82 + - You can request unchangeable information about the hardware, like name, 83 + organization of the screen memory (planes, packed pixels, ...) and address 84 + and length of the screen memory. 85 + 86 + - You can request and change variable information about the hardware, like 87 + visible and virtual geometry, depth, color map format, timing, and so on. 88 + If you try to change that information, the driver maybe will round up some 89 + values to meet the hardware's capabilities (or return EINVAL if that isn't 90 + possible). 91 + 92 + - You can get and set parts of the color map. Communication is done with 16 93 + bits per color part (red, green, blue, transparency) to support all 94 + existing hardware. The driver does all the computations needed to apply 95 + it to the hardware (round it down to less bits, maybe throw away 96 + transparency). 97 + 98 + All this hardware abstraction makes the implementation of application programs 99 + easier and more portable. E.g. the X server works completely on /dev/fb* and 100 + thus doesn't need to know, for example, how the color registers of the concrete 101 + hardware are organized. XF68_FBDev is a general X server for bitmapped, 102 + unaccelerated video hardware. The only thing that has to be built into 103 + application programs is the screen organization (bitplanes or chunky pixels 104 + etc.), because it works on the frame buffer image data directly. 105 + 106 + For the future it is planned that frame buffer drivers for graphics cards and 107 + the like can be implemented as kernel modules that are loaded at runtime. Such 108 + a driver just has to call register_framebuffer() and supply some functions. 109 + Writing and distributing such drivers independently from the kernel will save 110 + much trouble... 111 + 112 + 113 + 3. Frame Buffer Resolution Maintenance 114 + -------------------------------------- 115 + 116 + Frame buffer resolutions are maintained using the utility `fbset`. It can 117 + change the video mode properties of a frame buffer device. Its main usage is 118 + to change the current video mode, e.g. during boot up in one of your `/etc/rc.*` 119 + or `/etc/init.d/*` files. 120 + 121 + Fbset uses a video mode database stored in a configuration file, so you can 122 + easily add your own modes and refer to them with a simple identifier. 123 + 124 + 125 + 4. The X Server 126 + --------------- 127 + 128 + The X server (XF68_FBDev) is the most notable application program for the frame 129 + buffer device. Starting with XFree86 release 3.2, the X server is part of 130 + XFree86 and has 2 modes: 131 + 132 + - If the `Display` subsection for the `fbdev` driver in the /etc/XF86Config 133 + file contains a:: 134 + 135 + Modes "default" 136 + 137 + line, the X server will use the scheme discussed above, i.e. it will start 138 + up in the resolution determined by /dev/fb0 (or $FRAMEBUFFER, if set). You 139 + still have to specify the color depth (using the Depth keyword) and virtual 140 + resolution (using the Virtual keyword) though. This is the default for the 141 + configuration file supplied with XFree86. It's the most simple 142 + configuration, but it has some limitations. 143 + 144 + - Therefore it's also possible to specify resolutions in the /etc/XF86Config 145 + file. This allows for on-the-fly resolution switching while retaining the 146 + same virtual desktop size. The frame buffer device that's used is still 147 + /dev/fb0current (or $FRAMEBUFFER), but the available resolutions are 148 + defined by /etc/XF86Config now. The disadvantage is that you have to 149 + specify the timings in a different format (but `fbset -x` may help). 150 + 151 + To tune a video mode, you can use fbset or xvidtune. Note that xvidtune doesn't 152 + work 100% with XF68_FBDev: the reported clock values are always incorrect. 153 + 154 + 155 + 5. Video Mode Timings 156 + --------------------- 157 + 158 + A monitor draws an image on the screen by using an electron beam (3 electron 159 + beams for color models, 1 electron beam for monochrome monitors). The front of 160 + the screen is covered by a pattern of colored phosphors (pixels). If a phosphor 161 + is hit by an electron, it emits a photon and thus becomes visible. 162 + 163 + The electron beam draws horizontal lines (scanlines) from left to right, and 164 + from the top to the bottom of the screen. By modifying the intensity of the 165 + electron beam, pixels with various colors and intensities can be shown. 166 + 167 + After each scanline the electron beam has to move back to the left side of the 168 + screen and to the next line: this is called the horizontal retrace. After the 169 + whole screen (frame) was painted, the beam moves back to the upper left corner: 170 + this is called the vertical retrace. During both the horizontal and vertical 171 + retrace, the electron beam is turned off (blanked). 172 + 173 + The speed at which the electron beam paints the pixels is determined by the 174 + dotclock in the graphics board. For a dotclock of e.g. 28.37516 MHz (millions 175 + of cycles per second), each pixel is 35242 ps (picoseconds) long:: 176 + 177 + 1/(28.37516E6 Hz) = 35.242E-9 s 178 + 179 + If the screen resolution is 640x480, it will take:: 180 + 181 + 640*35.242E-9 s = 22.555E-6 s 182 + 183 + to paint the 640 (xres) pixels on one scanline. But the horizontal retrace 184 + also takes time (e.g. 272 `pixels`), so a full scanline takes:: 185 + 186 + (640+272)*35.242E-9 s = 32.141E-6 s 187 + 188 + We'll say that the horizontal scanrate is about 31 kHz:: 189 + 190 + 1/(32.141E-6 s) = 31.113E3 Hz 191 + 192 + A full screen counts 480 (yres) lines, but we have to consider the vertical 193 + retrace too (e.g. 49 `lines`). So a full screen will take:: 194 + 195 + (480+49)*32.141E-6 s = 17.002E-3 s 196 + 197 + The vertical scanrate is about 59 Hz:: 198 + 199 + 1/(17.002E-3 s) = 58.815 Hz 200 + 201 + This means the screen data is refreshed about 59 times per second. To have a 202 + stable picture without visible flicker, VESA recommends a vertical scanrate of 203 + at least 72 Hz. But the perceived flicker is very human dependent: some people 204 + can use 50 Hz without any trouble, while I'll notice if it's less than 80 Hz. 205 + 206 + Since the monitor doesn't know when a new scanline starts, the graphics board 207 + will supply a synchronization pulse (horizontal sync or hsync) for each 208 + scanline. Similarly it supplies a synchronization pulse (vertical sync or 209 + vsync) for each new frame. The position of the image on the screen is 210 + influenced by the moments at which the synchronization pulses occur. 211 + 212 + The following picture summarizes all timings. The horizontal retrace time is 213 + the sum of the left margin, the right margin and the hsync length, while the 214 + vertical retrace time is the sum of the upper margin, the lower margin and the 215 + vsync length:: 216 + 217 + +----------+---------------------------------------------+----------+-------+ 218 + | | ↑ | | | 219 + | | |upper_margin | | | 220 + | | ↓ | | | 221 + +----------###############################################----------+-------+ 222 + | # ↑ # | | 223 + | # | # | | 224 + | # | # | | 225 + | # | # | | 226 + | left # | # right | hsync | 227 + | margin # | xres # margin | len | 228 + |<-------->#<---------------+--------------------------->#<-------->|<----->| 229 + | # | # | | 230 + | # | # | | 231 + | # | # | | 232 + | # |yres # | | 233 + | # | # | | 234 + | # | # | | 235 + | # | # | | 236 + | # | # | | 237 + | # | # | | 238 + | # | # | | 239 + | # | # | | 240 + | # | # | | 241 + | # ↓ # | | 242 + +----------###############################################----------+-------+ 243 + | | ↑ | | | 244 + | | |lower_margin | | | 245 + | | ↓ | | | 246 + +----------+---------------------------------------------+----------+-------+ 247 + | | ↑ | | | 248 + | | |vsync_len | | | 249 + | | ↓ | | | 250 + +----------+---------------------------------------------+----------+-------+ 251 + 252 + The frame buffer device expects all horizontal timings in number of dotclocks 253 + (in picoseconds, 1E-12 s), and vertical timings in number of scanlines. 254 + 255 + 256 + 6. Converting XFree86 timing values info frame buffer device timings 257 + -------------------------------------------------------------------- 258 + 259 + An XFree86 mode line consists of the following fields:: 260 + 261 + "800x600" 50 800 856 976 1040 600 637 643 666 262 + < name > DCF HR SH1 SH2 HFL VR SV1 SV2 VFL 263 + 264 + The frame buffer device uses the following fields: 265 + 266 + - pixclock: pixel clock in ps (pico seconds) 267 + - left_margin: time from sync to picture 268 + - right_margin: time from picture to sync 269 + - upper_margin: time from sync to picture 270 + - lower_margin: time from picture to sync 271 + - hsync_len: length of horizontal sync 272 + - vsync_len: length of vertical sync 273 + 274 + 1) Pixelclock: 275 + 276 + xfree: in MHz 277 + 278 + fb: in picoseconds (ps) 279 + 280 + pixclock = 1000000 / DCF 281 + 282 + 2) horizontal timings: 283 + 284 + left_margin = HFL - SH2 285 + 286 + right_margin = SH1 - HR 287 + 288 + hsync_len = SH2 - SH1 289 + 290 + 3) vertical timings: 291 + 292 + upper_margin = VFL - SV2 293 + 294 + lower_margin = SV1 - VR 295 + 296 + vsync_len = SV2 - SV1 297 + 298 + Good examples for VESA timings can be found in the XFree86 source tree, 299 + under "xc/programs/Xserver/hw/xfree86/doc/modeDB.txt". 300 + 301 + 302 + 7. References 303 + ------------- 304 + 305 + For more specific information about the frame buffer device and its 306 + applications, please refer to the Linux-fbdev website: 307 + 308 + http://linux-fbdev.sourceforge.net/ 309 + 310 + and to the following documentation: 311 + 312 + - The manual pages for fbset: fbset(8), fb.modes(5) 313 + - The manual pages for XFree86: XF68_FBDev(1), XF86Config(4/5) 314 + - The mighty kernel sources: 315 + 316 + - linux/drivers/video/ 317 + - linux/include/linux/fb.h 318 + - linux/include/video/ 319 + 320 + 321 + 322 + 8. Mailing list 323 + --------------- 324 + 325 + There is a frame buffer device related mailing list at kernel.org: 326 + linux-fbdev@vger.kernel.org. 327 + 328 + Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for 329 + subscription information and archive browsing. 330 + 331 + 332 + 9. Downloading 333 + -------------- 334 + 335 + All necessary files can be found at 336 + 337 + ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/680x0/ 338 + 339 + and on its mirrors. 340 + 341 + The latest version of fbset can be found at 342 + 343 + http://www.linux-fbdev.org/ 344 + 345 + 346 + 10. Credits 347 + ----------- 348 + 349 + This readme was written by Geert Uytterhoeven, partly based on the original 350 + `X-framebuffer.README` by Roman Hodek and Martin Schaller. Section 6 was 351 + provided by Frank Neumann. 352 + 353 + The frame buffer device abstraction was designed by Martin Schaller.
-343
Documentation/fb/framebuffer.txt
··· 1 - The Frame Buffer Device 2 - ----------------------- 3 - 4 - Maintained by Geert Uytterhoeven <geert@linux-m68k.org> 5 - Last revised: May 10, 2001 6 - 7 - 8 - 0. Introduction 9 - --------------- 10 - 11 - The frame buffer device provides an abstraction for the graphics hardware. It 12 - represents the frame buffer of some video hardware and allows application 13 - software to access the graphics hardware through a well-defined interface, so 14 - the software doesn't need to know anything about the low-level (hardware 15 - register) stuff. 16 - 17 - The device is accessed through special device nodes, usually located in the 18 - /dev directory, i.e. /dev/fb*. 19 - 20 - 21 - 1. User's View of /dev/fb* 22 - -------------------------- 23 - 24 - From the user's point of view, the frame buffer device looks just like any 25 - other device in /dev. It's a character device using major 29; the minor 26 - specifies the frame buffer number. 27 - 28 - By convention, the following device nodes are used (numbers indicate the device 29 - minor numbers): 30 - 31 - 0 = /dev/fb0 First frame buffer 32 - 1 = /dev/fb1 Second frame buffer 33 - ... 34 - 31 = /dev/fb31 32nd frame buffer 35 - 36 - For backwards compatibility, you may want to create the following symbolic 37 - links: 38 - 39 - /dev/fb0current -> fb0 40 - /dev/fb1current -> fb1 41 - 42 - and so on... 43 - 44 - The frame buffer devices are also `normal' memory devices, this means, you can 45 - read and write their contents. You can, for example, make a screen snapshot by 46 - 47 - cp /dev/fb0 myfile 48 - 49 - There also can be more than one frame buffer at a time, e.g. if you have a 50 - graphics card in addition to the built-in hardware. The corresponding frame 51 - buffer devices (/dev/fb0 and /dev/fb1 etc.) work independently. 52 - 53 - Application software that uses the frame buffer device (e.g. the X server) will 54 - use /dev/fb0 by default (older software uses /dev/fb0current). You can specify 55 - an alternative frame buffer device by setting the environment variable 56 - $FRAMEBUFFER to the path name of a frame buffer device, e.g. (for sh/bash 57 - users): 58 - 59 - export FRAMEBUFFER=/dev/fb1 60 - 61 - or (for csh users): 62 - 63 - setenv FRAMEBUFFER /dev/fb1 64 - 65 - After this the X server will use the second frame buffer. 66 - 67 - 68 - 2. Programmer's View of /dev/fb* 69 - -------------------------------- 70 - 71 - As you already know, a frame buffer device is a memory device like /dev/mem and 72 - it has the same features. You can read it, write it, seek to some location in 73 - it and mmap() it (the main usage). The difference is just that the memory that 74 - appears in the special file is not the whole memory, but the frame buffer of 75 - some video hardware. 76 - 77 - /dev/fb* also allows several ioctls on it, by which lots of information about 78 - the hardware can be queried and set. The color map handling works via ioctls, 79 - too. Look into <linux/fb.h> for more information on what ioctls exist and on 80 - which data structures they work. Here's just a brief overview: 81 - 82 - - You can request unchangeable information about the hardware, like name, 83 - organization of the screen memory (planes, packed pixels, ...) and address 84 - and length of the screen memory. 85 - 86 - - You can request and change variable information about the hardware, like 87 - visible and virtual geometry, depth, color map format, timing, and so on. 88 - If you try to change that information, the driver maybe will round up some 89 - values to meet the hardware's capabilities (or return EINVAL if that isn't 90 - possible). 91 - 92 - - You can get and set parts of the color map. Communication is done with 16 93 - bits per color part (red, green, blue, transparency) to support all 94 - existing hardware. The driver does all the computations needed to apply 95 - it to the hardware (round it down to less bits, maybe throw away 96 - transparency). 97 - 98 - All this hardware abstraction makes the implementation of application programs 99 - easier and more portable. E.g. the X server works completely on /dev/fb* and 100 - thus doesn't need to know, for example, how the color registers of the concrete 101 - hardware are organized. XF68_FBDev is a general X server for bitmapped, 102 - unaccelerated video hardware. The only thing that has to be built into 103 - application programs is the screen organization (bitplanes or chunky pixels 104 - etc.), because it works on the frame buffer image data directly. 105 - 106 - For the future it is planned that frame buffer drivers for graphics cards and 107 - the like can be implemented as kernel modules that are loaded at runtime. Such 108 - a driver just has to call register_framebuffer() and supply some functions. 109 - Writing and distributing such drivers independently from the kernel will save 110 - much trouble... 111 - 112 - 113 - 3. Frame Buffer Resolution Maintenance 114 - -------------------------------------- 115 - 116 - Frame buffer resolutions are maintained using the utility `fbset'. It can 117 - change the video mode properties of a frame buffer device. Its main usage is 118 - to change the current video mode, e.g. during boot up in one of your /etc/rc.* 119 - or /etc/init.d/* files. 120 - 121 - Fbset uses a video mode database stored in a configuration file, so you can 122 - easily add your own modes and refer to them with a simple identifier. 123 - 124 - 125 - 4. The X Server 126 - --------------- 127 - 128 - The X server (XF68_FBDev) is the most notable application program for the frame 129 - buffer device. Starting with XFree86 release 3.2, the X server is part of 130 - XFree86 and has 2 modes: 131 - 132 - - If the `Display' subsection for the `fbdev' driver in the /etc/XF86Config 133 - file contains a 134 - 135 - Modes "default" 136 - 137 - line, the X server will use the scheme discussed above, i.e. it will start 138 - up in the resolution determined by /dev/fb0 (or $FRAMEBUFFER, if set). You 139 - still have to specify the color depth (using the Depth keyword) and virtual 140 - resolution (using the Virtual keyword) though. This is the default for the 141 - configuration file supplied with XFree86. It's the most simple 142 - configuration, but it has some limitations. 143 - 144 - - Therefore it's also possible to specify resolutions in the /etc/XF86Config 145 - file. This allows for on-the-fly resolution switching while retaining the 146 - same virtual desktop size. The frame buffer device that's used is still 147 - /dev/fb0current (or $FRAMEBUFFER), but the available resolutions are 148 - defined by /etc/XF86Config now. The disadvantage is that you have to 149 - specify the timings in a different format (but `fbset -x' may help). 150 - 151 - To tune a video mode, you can use fbset or xvidtune. Note that xvidtune doesn't 152 - work 100% with XF68_FBDev: the reported clock values are always incorrect. 153 - 154 - 155 - 5. Video Mode Timings 156 - --------------------- 157 - 158 - A monitor draws an image on the screen by using an electron beam (3 electron 159 - beams for color models, 1 electron beam for monochrome monitors). The front of 160 - the screen is covered by a pattern of colored phosphors (pixels). If a phosphor 161 - is hit by an electron, it emits a photon and thus becomes visible. 162 - 163 - The electron beam draws horizontal lines (scanlines) from left to right, and 164 - from the top to the bottom of the screen. By modifying the intensity of the 165 - electron beam, pixels with various colors and intensities can be shown. 166 - 167 - After each scanline the electron beam has to move back to the left side of the 168 - screen and to the next line: this is called the horizontal retrace. After the 169 - whole screen (frame) was painted, the beam moves back to the upper left corner: 170 - this is called the vertical retrace. During both the horizontal and vertical 171 - retrace, the electron beam is turned off (blanked). 172 - 173 - The speed at which the electron beam paints the pixels is determined by the 174 - dotclock in the graphics board. For a dotclock of e.g. 28.37516 MHz (millions 175 - of cycles per second), each pixel is 35242 ps (picoseconds) long: 176 - 177 - 1/(28.37516E6 Hz) = 35.242E-9 s 178 - 179 - If the screen resolution is 640x480, it will take 180 - 181 - 640*35.242E-9 s = 22.555E-6 s 182 - 183 - to paint the 640 (xres) pixels on one scanline. But the horizontal retrace 184 - also takes time (e.g. 272 `pixels'), so a full scanline takes 185 - 186 - (640+272)*35.242E-9 s = 32.141E-6 s 187 - 188 - We'll say that the horizontal scanrate is about 31 kHz: 189 - 190 - 1/(32.141E-6 s) = 31.113E3 Hz 191 - 192 - A full screen counts 480 (yres) lines, but we have to consider the vertical 193 - retrace too (e.g. 49 `lines'). So a full screen will take 194 - 195 - (480+49)*32.141E-6 s = 17.002E-3 s 196 - 197 - The vertical scanrate is about 59 Hz: 198 - 199 - 1/(17.002E-3 s) = 58.815 Hz 200 - 201 - This means the screen data is refreshed about 59 times per second. To have a 202 - stable picture without visible flicker, VESA recommends a vertical scanrate of 203 - at least 72 Hz. But the perceived flicker is very human dependent: some people 204 - can use 50 Hz without any trouble, while I'll notice if it's less than 80 Hz. 205 - 206 - Since the monitor doesn't know when a new scanline starts, the graphics board 207 - will supply a synchronization pulse (horizontal sync or hsync) for each 208 - scanline. Similarly it supplies a synchronization pulse (vertical sync or 209 - vsync) for each new frame. The position of the image on the screen is 210 - influenced by the moments at which the synchronization pulses occur. 211 - 212 - The following picture summarizes all timings. The horizontal retrace time is 213 - the sum of the left margin, the right margin and the hsync length, while the 214 - vertical retrace time is the sum of the upper margin, the lower margin and the 215 - vsync length. 216 - 217 - +----------+---------------------------------------------+----------+-------+ 218 - | | ↑ | | | 219 - | | |upper_margin | | | 220 - | | ↓ | | | 221 - +----------###############################################----------+-------+ 222 - | # ↑ # | | 223 - | # | # | | 224 - | # | # | | 225 - | # | # | | 226 - | left # | # right | hsync | 227 - | margin # | xres # margin | len | 228 - |<-------->#<---------------+--------------------------->#<-------->|<----->| 229 - | # | # | | 230 - | # | # | | 231 - | # | # | | 232 - | # |yres # | | 233 - | # | # | | 234 - | # | # | | 235 - | # | # | | 236 - | # | # | | 237 - | # | # | | 238 - | # | # | | 239 - | # | # | | 240 - | # | # | | 241 - | # ↓ # | | 242 - +----------###############################################----------+-------+ 243 - | | ↑ | | | 244 - | | |lower_margin | | | 245 - | | ↓ | | | 246 - +----------+---------------------------------------------+----------+-------+ 247 - | | ↑ | | | 248 - | | |vsync_len | | | 249 - | | ↓ | | | 250 - +----------+---------------------------------------------+----------+-------+ 251 - 252 - The frame buffer device expects all horizontal timings in number of dotclocks 253 - (in picoseconds, 1E-12 s), and vertical timings in number of scanlines. 254 - 255 - 256 - 6. Converting XFree86 timing values info frame buffer device timings 257 - -------------------------------------------------------------------- 258 - 259 - An XFree86 mode line consists of the following fields: 260 - "800x600" 50 800 856 976 1040 600 637 643 666 261 - < name > DCF HR SH1 SH2 HFL VR SV1 SV2 VFL 262 - 263 - The frame buffer device uses the following fields: 264 - 265 - - pixclock: pixel clock in ps (pico seconds) 266 - - left_margin: time from sync to picture 267 - - right_margin: time from picture to sync 268 - - upper_margin: time from sync to picture 269 - - lower_margin: time from picture to sync 270 - - hsync_len: length of horizontal sync 271 - - vsync_len: length of vertical sync 272 - 273 - 1) Pixelclock: 274 - xfree: in MHz 275 - fb: in picoseconds (ps) 276 - 277 - pixclock = 1000000 / DCF 278 - 279 - 2) horizontal timings: 280 - left_margin = HFL - SH2 281 - right_margin = SH1 - HR 282 - hsync_len = SH2 - SH1 283 - 284 - 3) vertical timings: 285 - upper_margin = VFL - SV2 286 - lower_margin = SV1 - VR 287 - vsync_len = SV2 - SV1 288 - 289 - Good examples for VESA timings can be found in the XFree86 source tree, 290 - under "xc/programs/Xserver/hw/xfree86/doc/modeDB.txt". 291 - 292 - 293 - 7. References 294 - ------------- 295 - 296 - For more specific information about the frame buffer device and its 297 - applications, please refer to the Linux-fbdev website: 298 - 299 - http://linux-fbdev.sourceforge.net/ 300 - 301 - and to the following documentation: 302 - 303 - - The manual pages for fbset: fbset(8), fb.modes(5) 304 - - The manual pages for XFree86: XF68_FBDev(1), XF86Config(4/5) 305 - - The mighty kernel sources: 306 - o linux/drivers/video/ 307 - o linux/include/linux/fb.h 308 - o linux/include/video/ 309 - 310 - 311 - 312 - 8. Mailing list 313 - --------------- 314 - 315 - There is a frame buffer device related mailing list at kernel.org: 316 - linux-fbdev@vger.kernel.org. 317 - 318 - Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for 319 - subscription information and archive browsing. 320 - 321 - 322 - 9. Downloading 323 - -------------- 324 - 325 - All necessary files can be found at 326 - 327 - ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/680x0/ 328 - 329 - and on its mirrors. 330 - 331 - The latest version of fbset can be found at 332 - 333 - http://www.linux-fbdev.org/ 334 - 335 - 336 - 10. Credits 337 - ---------- 338 - 339 - This readme was written by Geert Uytterhoeven, partly based on the original 340 - `X-framebuffer.README' by Roman Hodek and Martin Schaller. Section 6 was 341 - provided by Frank Neumann. 342 - 343 - The frame buffer device abstraction was designed by Martin Schaller.
+54
Documentation/fb/gxfb.rst
··· 1 + ============= 2 + What is gxfb? 3 + ============= 4 + 5 + .. [This file is cloned from VesaFB/aty128fb] 6 + 7 + This is a graphics framebuffer driver for AMD Geode GX2 based processors. 8 + 9 + Advantages: 10 + 11 + * No need to use AMD's VSA code (or other VESA emulation layer) in the 12 + BIOS. 13 + * It provides a nice large console (128 cols + 48 lines with 1024x768) 14 + without using tiny, unreadable fonts. 15 + * You can run XF68_FBDev on top of /dev/fb0 16 + * Most important: boot logo :-) 17 + 18 + Disadvantages: 19 + 20 + * graphic mode is slower than text mode... 21 + 22 + 23 + How to use it? 24 + ============== 25 + 26 + Switching modes is done using gxfb.mode_option=<resolution>... boot 27 + parameter or using `fbset` program. 28 + 29 + See Documentation/fb/modedb.rst for more information on modedb 30 + resolutions. 31 + 32 + 33 + X11 34 + === 35 + 36 + XF68_FBDev should generally work fine, but it is non-accelerated. 37 + 38 + 39 + Configuration 40 + ============= 41 + 42 + You can pass kernel command line options to gxfb with gxfb.<option>. 43 + For example, gxfb.mode_option=800x600@75. 44 + Accepted options: 45 + 46 + ================ ================================================== 47 + mode_option specify the video mode. Of the form 48 + <x>x<y>[-<bpp>][@<refresh>] 49 + vram size of video ram (normally auto-detected) 50 + vt_switch enable vt switching during suspend/resume. The vt 51 + switch is slow, but harmless. 52 + ================ ================================================== 53 + 54 + Andres Salomon <dilinger@debian.org>
-52
Documentation/fb/gxfb.txt
··· 1 - [This file is cloned from VesaFB/aty128fb] 2 - 3 - What is gxfb? 4 - ================= 5 - 6 - This is a graphics framebuffer driver for AMD Geode GX2 based processors. 7 - 8 - Advantages: 9 - 10 - * No need to use AMD's VSA code (or other VESA emulation layer) in the 11 - BIOS. 12 - * It provides a nice large console (128 cols + 48 lines with 1024x768) 13 - without using tiny, unreadable fonts. 14 - * You can run XF68_FBDev on top of /dev/fb0 15 - * Most important: boot logo :-) 16 - 17 - Disadvantages: 18 - 19 - * graphic mode is slower than text mode... 20 - 21 - 22 - How to use it? 23 - ============== 24 - 25 - Switching modes is done using gxfb.mode_option=<resolution>... boot 26 - parameter or using `fbset' program. 27 - 28 - See Documentation/fb/modedb.txt for more information on modedb 29 - resolutions. 30 - 31 - 32 - X11 33 - === 34 - 35 - XF68_FBDev should generally work fine, but it is non-accelerated. 36 - 37 - 38 - Configuration 39 - ============= 40 - 41 - You can pass kernel command line options to gxfb with gxfb.<option>. 42 - For example, gxfb.mode_option=800x600@75. 43 - Accepted options: 44 - 45 - mode_option - specify the video mode. Of the form 46 - <x>x<y>[-<bpp>][@<refresh>] 47 - vram - size of video ram (normally auto-detected) 48 - vt_switch - enable vt switching during suspend/resume. The vt 49 - switch is slow, but harmless. 50 - 51 - -- 52 - Andres Salomon <dilinger@debian.org>
+50
Documentation/fb/index.rst
··· 1 + :orphan: 2 + 3 + ============ 4 + Frame Buffer 5 + ============ 6 + 7 + .. toctree:: 8 + :maxdepth: 1 9 + 10 + api 11 + arkfb 12 + aty128fb 13 + cirrusfb 14 + cmap_xfbdev 15 + deferred_io 16 + efifb 17 + ep93xx-fb 18 + fbcon 19 + framebuffer 20 + gxfb 21 + intel810 22 + intelfb 23 + internals 24 + lxfb 25 + matroxfb 26 + metronomefb 27 + modedb 28 + pvr2fb 29 + pxafb 30 + s3fb 31 + sa1100fb 32 + sh7760fb 33 + sisfb 34 + sm501 35 + sm712fb 36 + sstfb 37 + tgafb 38 + tridentfb 39 + udlfb 40 + uvesafb 41 + vesafb 42 + viafb 43 + vt8623fb 44 + 45 + .. only:: subproject and html 46 + 47 + Indices 48 + ======= 49 + 50 + * :ref:`genindex`
+287
Documentation/fb/intel810.rst
··· 1 + ================================ 2 + Intel 810/815 Framebuffer driver 3 + ================================ 4 + 5 + Tony Daplas <adaplas@pol.net> 6 + 7 + http://i810fb.sourceforge.net 8 + 9 + March 17, 2002 10 + 11 + First Released: July 2001 12 + Last Update: September 12, 2005 13 + 14 + A. Introduction 15 + =============== 16 + 17 + This is a framebuffer driver for various Intel 810/815 compatible 18 + graphics devices. These include: 19 + 20 + - Intel 810 21 + - Intel 810E 22 + - Intel 810-DC100 23 + - Intel 815 Internal graphics only, 100Mhz FSB 24 + - Intel 815 Internal graphics only 25 + - Intel 815 Internal graphics and AGP 26 + 27 + B. Features 28 + ============ 29 + 30 + - Choice of using Discrete Video Timings, VESA Generalized Timing 31 + Formula, or a framebuffer specific database to set the video mode 32 + 33 + - Supports a variable range of horizontal and vertical resolution and 34 + vertical refresh rates if the VESA Generalized Timing Formula is 35 + enabled. 36 + 37 + - Supports color depths of 8, 16, 24 and 32 bits per pixel 38 + 39 + - Supports pseudocolor, directcolor, or truecolor visuals 40 + 41 + - Full and optimized hardware acceleration at 8, 16 and 24 bpp 42 + 43 + - Robust video state save and restore 44 + 45 + - MTRR support 46 + 47 + - Utilizes user-entered monitor specifications to automatically 48 + calculate required video mode parameters. 49 + 50 + - Can concurrently run with xfree86 running with native i810 drivers 51 + 52 + - Hardware Cursor Support 53 + 54 + - Supports EDID probing either by DDC/I2C or through the BIOS 55 + 56 + C. List of available options 57 + ============================= 58 + 59 + a. "video=i810fb" 60 + enables the i810 driver 61 + 62 + Recommendation: required 63 + 64 + b. "xres:<value>" 65 + select horizontal resolution in pixels. (This parameter will be 66 + ignored if 'mode_option' is specified. See 'o' below). 67 + 68 + Recommendation: user preference 69 + (default = 640) 70 + 71 + c. "yres:<value>" 72 + select vertical resolution in scanlines. If Discrete Video Timings 73 + is enabled, this will be ignored and computed as 3*xres/4. (This 74 + parameter will be ignored if 'mode_option' is specified. See 'o' 75 + below) 76 + 77 + Recommendation: user preference 78 + (default = 480) 79 + 80 + d. "vyres:<value>" 81 + select virtual vertical resolution in scanlines. If (0) or none 82 + is specified, this will be computed against maximum available memory. 83 + 84 + Recommendation: do not set 85 + (default = 480) 86 + 87 + e. "vram:<value>" 88 + select amount of system RAM in MB to allocate for the video memory 89 + 90 + Recommendation: 1 - 4 MB. 91 + (default = 4) 92 + 93 + f. "bpp:<value>" 94 + select desired pixel depth 95 + 96 + Recommendation: 8 97 + (default = 8) 98 + 99 + g. "hsync1/hsync2:<value>" 100 + select the minimum and maximum Horizontal Sync Frequency of the 101 + monitor in kHz. If using a fixed frequency monitor, hsync1 must 102 + be equal to hsync2. If EDID probing is successful, these will be 103 + ignored and values will be taken from the EDID block. 104 + 105 + Recommendation: check monitor manual for correct values 106 + (default = 29/30) 107 + 108 + h. "vsync1/vsync2:<value>" 109 + select the minimum and maximum Vertical Sync Frequency of the monitor 110 + in Hz. You can also use this option to lock your monitor's refresh 111 + rate. If EDID probing is successful, these will be ignored and values 112 + will be taken from the EDID block. 113 + 114 + Recommendation: check monitor manual for correct values 115 + (default = 60/60) 116 + 117 + IMPORTANT: If you need to clamp your timings, try to give some 118 + leeway for computational errors (over/underflows). Example: if 119 + using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least 120 + a 1 unit difference, and vice versa. 121 + 122 + i. "voffset:<value>" 123 + select at what offset in MB of the logical memory to allocate the 124 + framebuffer memory. The intent is to avoid the memory blocks 125 + used by standard graphics applications (XFree86). The default 126 + offset (16 MB for a 64 MB aperture, 8 MB for a 32 MB aperture) will 127 + avoid XFree86's usage and allows up to 7 MB/15 MB of framebuffer 128 + memory. Depending on your usage, adjust the value up or down 129 + (0 for maximum usage, 31/63 MB for the least amount). Note, an 130 + arbitrary setting may conflict with XFree86. 131 + 132 + Recommendation: do not set 133 + (default = 8 or 16 MB) 134 + 135 + j. "accel" 136 + enable text acceleration. This can be enabled/reenabled anytime 137 + by using 'fbset -accel true/false'. 138 + 139 + Recommendation: enable 140 + (default = not set) 141 + 142 + k. "mtrr" 143 + enable MTRR. This allows data transfers to the framebuffer memory 144 + to occur in bursts which can significantly increase performance. 145 + Not very helpful with the i810/i815 because of 'shared memory'. 146 + 147 + Recommendation: do not set 148 + (default = not set) 149 + 150 + l. "extvga" 151 + if specified, secondary/external VGA output will always be enabled. 152 + Useful if the BIOS turns off the VGA port when no monitor is attached. 153 + The external VGA monitor can then be attached without rebooting. 154 + 155 + Recommendation: do not set 156 + (default = not set) 157 + 158 + m. "sync" 159 + Forces the hardware engine to do a "sync" or wait for the hardware 160 + to finish before starting another instruction. This will produce a 161 + more stable setup, but will be slower. 162 + 163 + Recommendation: do not set 164 + (default = not set) 165 + 166 + n. "dcolor" 167 + Use directcolor visual instead of truecolor for pixel depths greater 168 + than 8 bpp. Useful for color tuning, such as gamma control. 169 + 170 + Recommendation: do not set 171 + (default = not set) 172 + 173 + o. <xres>x<yres>[-<bpp>][@<refresh>] 174 + The driver will now accept specification of boot mode option. If this 175 + is specified, the options 'xres' and 'yres' will be ignored. See 176 + Documentation/fb/modedb.rst for usage. 177 + 178 + D. Kernel booting 179 + ================= 180 + 181 + Separate each option/option-pair by commas (,) and the option from its value 182 + with a colon (:) as in the following:: 183 + 184 + video=i810fb:option1,option2:value2 185 + 186 + Sample Usage 187 + ------------ 188 + 189 + In /etc/lilo.conf, add the line:: 190 + 191 + append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \ 192 + vsync1:50,vsync2:85,accel,mtrr" 193 + 194 + This will initialize the framebuffer to 1024x768 at 8bpp. The framebuffer 195 + will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate 196 + will be computed based on the hsync1/hsync2 and vsync1/vsync2 values. 197 + 198 + IMPORTANT: 199 + You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes 200 + better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination 201 + supports I2C and has an EDID block, you can safely exclude hsync1, hsync2, 202 + vsync1 and vsync2 parameters. These parameters will be taken from the EDID 203 + block. 204 + 205 + E. Module options 206 + ================== 207 + 208 + The module parameters are essentially similar to the kernel 209 + parameters. The main difference is that you need to include a Boolean value 210 + (1 for TRUE, and 0 for FALSE) for those options which don't need a value. 211 + 212 + Example, to enable MTRR, include "mtrr=1". 213 + 214 + Sample Usage 215 + ------------ 216 + 217 + Using the same setup as described above, load the module like this:: 218 + 219 + modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \ 220 + vsync2=85 accel=1 mtrr=1 221 + 222 + Or just add the following to a configuration file in /etc/modprobe.d/:: 223 + 224 + options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \ 225 + vsync2=85 accel=1 mtrr=1 226 + 227 + and just do a:: 228 + 229 + modprobe i810fb 230 + 231 + 232 + F. Setup 233 + ========= 234 + 235 + a. Do your usual method of configuring the kernel 236 + 237 + make menuconfig/xconfig/config 238 + 239 + b. Under "Code maturity level options" enable "Prompt for development 240 + and/or incomplete code/drivers". 241 + 242 + c. Enable agpgart support for the Intel 810/815 on-board graphics. 243 + This is required. The option is under "Character Devices". 244 + 245 + d. Under "Graphics Support", select "Intel 810/815" either statically 246 + or as a module. Choose "use VESA Generalized Timing Formula" if 247 + you need to maximize the capability of your display. To be on the 248 + safe side, you can leave this unselected. 249 + 250 + e. If you want support for DDC/I2C probing (Plug and Play Displays), 251 + set 'Enable DDC Support' to 'y'. To make this option appear, set 252 + 'use VESA Generalized Timing Formula' to 'y'. 253 + 254 + f. If you want a framebuffer console, enable it under "Console 255 + Drivers". 256 + 257 + g. Compile your kernel. 258 + 259 + h. Load the driver as described in sections D and E. 260 + 261 + i. Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver 262 + patch to see the chipset in action (or inaction :-). 263 + 264 + G. Acknowledgment: 265 + =================== 266 + 267 + 1. Geert Uytterhoeven - his excellent howto and the virtual 268 + framebuffer driver code made this possible. 269 + 270 + 2. Jeff Hartmann for his agpgart code. 271 + 272 + 3. The X developers. Insights were provided just by reading the 273 + XFree86 source code. 274 + 275 + 4. Intel(c). For this value-oriented chipset driver and for 276 + providing documentation. 277 + 278 + 5. Matt Sottek. His inputs and ideas helped in making some 279 + optimizations possible. 280 + 281 + H. Home Page: 282 + ============== 283 + 284 + A more complete, and probably updated information is provided at 285 + http://i810fb.sourceforge.net. 286 + 287 + Tony
-278
Documentation/fb/intel810.txt
··· 1 - Intel 810/815 Framebuffer driver 2 - Tony Daplas <adaplas@pol.net> 3 - http://i810fb.sourceforge.net 4 - 5 - March 17, 2002 6 - 7 - First Released: July 2001 8 - Last Update: September 12, 2005 9 - ================================================================ 10 - 11 - A. Introduction 12 - 13 - This is a framebuffer driver for various Intel 810/815 compatible 14 - graphics devices. These include: 15 - 16 - Intel 810 17 - Intel 810E 18 - Intel 810-DC100 19 - Intel 815 Internal graphics only, 100Mhz FSB 20 - Intel 815 Internal graphics only 21 - Intel 815 Internal graphics and AGP 22 - 23 - B. Features 24 - 25 - - Choice of using Discrete Video Timings, VESA Generalized Timing 26 - Formula, or a framebuffer specific database to set the video mode 27 - 28 - - Supports a variable range of horizontal and vertical resolution and 29 - vertical refresh rates if the VESA Generalized Timing Formula is 30 - enabled. 31 - 32 - - Supports color depths of 8, 16, 24 and 32 bits per pixel 33 - 34 - - Supports pseudocolor, directcolor, or truecolor visuals 35 - 36 - - Full and optimized hardware acceleration at 8, 16 and 24 bpp 37 - 38 - - Robust video state save and restore 39 - 40 - - MTRR support 41 - 42 - - Utilizes user-entered monitor specifications to automatically 43 - calculate required video mode parameters. 44 - 45 - - Can concurrently run with xfree86 running with native i810 drivers 46 - 47 - - Hardware Cursor Support 48 - 49 - - Supports EDID probing either by DDC/I2C or through the BIOS 50 - 51 - C. List of available options 52 - 53 - a. "video=i810fb" 54 - enables the i810 driver 55 - 56 - Recommendation: required 57 - 58 - b. "xres:<value>" 59 - select horizontal resolution in pixels. (This parameter will be 60 - ignored if 'mode_option' is specified. See 'o' below). 61 - 62 - Recommendation: user preference 63 - (default = 640) 64 - 65 - c. "yres:<value>" 66 - select vertical resolution in scanlines. If Discrete Video Timings 67 - is enabled, this will be ignored and computed as 3*xres/4. (This 68 - parameter will be ignored if 'mode_option' is specified. See 'o' 69 - below) 70 - 71 - Recommendation: user preference 72 - (default = 480) 73 - 74 - d. "vyres:<value>" 75 - select virtual vertical resolution in scanlines. If (0) or none 76 - is specified, this will be computed against maximum available memory. 77 - 78 - Recommendation: do not set 79 - (default = 480) 80 - 81 - e. "vram:<value>" 82 - select amount of system RAM in MB to allocate for the video memory 83 - 84 - Recommendation: 1 - 4 MB. 85 - (default = 4) 86 - 87 - f. "bpp:<value>" 88 - select desired pixel depth 89 - 90 - Recommendation: 8 91 - (default = 8) 92 - 93 - g. "hsync1/hsync2:<value>" 94 - select the minimum and maximum Horizontal Sync Frequency of the 95 - monitor in kHz. If using a fixed frequency monitor, hsync1 must 96 - be equal to hsync2. If EDID probing is successful, these will be 97 - ignored and values will be taken from the EDID block. 98 - 99 - Recommendation: check monitor manual for correct values 100 - (default = 29/30) 101 - 102 - h. "vsync1/vsync2:<value>" 103 - select the minimum and maximum Vertical Sync Frequency of the monitor 104 - in Hz. You can also use this option to lock your monitor's refresh 105 - rate. If EDID probing is successful, these will be ignored and values 106 - will be taken from the EDID block. 107 - 108 - Recommendation: check monitor manual for correct values 109 - (default = 60/60) 110 - 111 - IMPORTANT: If you need to clamp your timings, try to give some 112 - leeway for computational errors (over/underflows). Example: if 113 - using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least 114 - a 1 unit difference, and vice versa. 115 - 116 - i. "voffset:<value>" 117 - select at what offset in MB of the logical memory to allocate the 118 - framebuffer memory. The intent is to avoid the memory blocks 119 - used by standard graphics applications (XFree86). The default 120 - offset (16 MB for a 64 MB aperture, 8 MB for a 32 MB aperture) will 121 - avoid XFree86's usage and allows up to 7 MB/15 MB of framebuffer 122 - memory. Depending on your usage, adjust the value up or down 123 - (0 for maximum usage, 31/63 MB for the least amount). Note, an 124 - arbitrary setting may conflict with XFree86. 125 - 126 - Recommendation: do not set 127 - (default = 8 or 16 MB) 128 - 129 - j. "accel" 130 - enable text acceleration. This can be enabled/reenabled anytime 131 - by using 'fbset -accel true/false'. 132 - 133 - Recommendation: enable 134 - (default = not set) 135 - 136 - k. "mtrr" 137 - enable MTRR. This allows data transfers to the framebuffer memory 138 - to occur in bursts which can significantly increase performance. 139 - Not very helpful with the i810/i815 because of 'shared memory'. 140 - 141 - Recommendation: do not set 142 - (default = not set) 143 - 144 - l. "extvga" 145 - if specified, secondary/external VGA output will always be enabled. 146 - Useful if the BIOS turns off the VGA port when no monitor is attached. 147 - The external VGA monitor can then be attached without rebooting. 148 - 149 - Recommendation: do not set 150 - (default = not set) 151 - 152 - m. "sync" 153 - Forces the hardware engine to do a "sync" or wait for the hardware 154 - to finish before starting another instruction. This will produce a 155 - more stable setup, but will be slower. 156 - 157 - Recommendation: do not set 158 - (default = not set) 159 - 160 - n. "dcolor" 161 - Use directcolor visual instead of truecolor for pixel depths greater 162 - than 8 bpp. Useful for color tuning, such as gamma control. 163 - 164 - Recommendation: do not set 165 - (default = not set) 166 - 167 - o. <xres>x<yres>[-<bpp>][@<refresh>] 168 - The driver will now accept specification of boot mode option. If this 169 - is specified, the options 'xres' and 'yres' will be ignored. See 170 - Documentation/fb/modedb.txt for usage. 171 - 172 - D. Kernel booting 173 - 174 - Separate each option/option-pair by commas (,) and the option from its value 175 - with a colon (:) as in the following: 176 - 177 - video=i810fb:option1,option2:value2 178 - 179 - Sample Usage 180 - ------------ 181 - 182 - In /etc/lilo.conf, add the line: 183 - 184 - append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \ 185 - vsync1:50,vsync2:85,accel,mtrr" 186 - 187 - This will initialize the framebuffer to 1024x768 at 8bpp. The framebuffer 188 - will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate 189 - will be computed based on the hsync1/hsync2 and vsync1/vsync2 values. 190 - 191 - IMPORTANT: 192 - You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes 193 - better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination 194 - supports I2C and has an EDID block, you can safely exclude hsync1, hsync2, 195 - vsync1 and vsync2 parameters. These parameters will be taken from the EDID 196 - block. 197 - 198 - E. Module options 199 - 200 - The module parameters are essentially similar to the kernel 201 - parameters. The main difference is that you need to include a Boolean value 202 - (1 for TRUE, and 0 for FALSE) for those options which don't need a value. 203 - 204 - Example, to enable MTRR, include "mtrr=1". 205 - 206 - Sample Usage 207 - ------------ 208 - 209 - Using the same setup as described above, load the module like this: 210 - 211 - modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \ 212 - vsync2=85 accel=1 mtrr=1 213 - 214 - Or just add the following to a configuration file in /etc/modprobe.d/ 215 - 216 - options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \ 217 - vsync2=85 accel=1 mtrr=1 218 - 219 - and just do a 220 - 221 - modprobe i810fb 222 - 223 - 224 - F. Setup 225 - 226 - a. Do your usual method of configuring the kernel. 227 - 228 - make menuconfig/xconfig/config 229 - 230 - b. Under "Code maturity level options" enable "Prompt for development 231 - and/or incomplete code/drivers". 232 - 233 - c. Enable agpgart support for the Intel 810/815 on-board graphics. 234 - This is required. The option is under "Character Devices". 235 - 236 - d. Under "Graphics Support", select "Intel 810/815" either statically 237 - or as a module. Choose "use VESA Generalized Timing Formula" if 238 - you need to maximize the capability of your display. To be on the 239 - safe side, you can leave this unselected. 240 - 241 - e. If you want support for DDC/I2C probing (Plug and Play Displays), 242 - set 'Enable DDC Support' to 'y'. To make this option appear, set 243 - 'use VESA Generalized Timing Formula' to 'y'. 244 - 245 - f. If you want a framebuffer console, enable it under "Console 246 - Drivers". 247 - 248 - g. Compile your kernel. 249 - 250 - h. Load the driver as described in sections D and E. 251 - 252 - i. Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver 253 - patch to see the chipset in action (or inaction :-). 254 - 255 - G. Acknowledgment: 256 - 257 - 1. Geert Uytterhoeven - his excellent howto and the virtual 258 - framebuffer driver code made this possible. 259 - 260 - 2. Jeff Hartmann for his agpgart code. 261 - 262 - 3. The X developers. Insights were provided just by reading the 263 - XFree86 source code. 264 - 265 - 4. Intel(c). For this value-oriented chipset driver and for 266 - providing documentation. 267 - 268 - 5. Matt Sottek. His inputs and ideas helped in making some 269 - optimizations possible. 270 - 271 - H. Home Page: 272 - 273 - A more complete, and probably updated information is provided at 274 - http://i810fb.sourceforge.net. 275 - 276 - ########################### 277 - Tony 278 -
+155
Documentation/fb/intelfb.rst
··· 1 + ============================================================= 2 + Intel 830M/845G/852GM/855GM/865G/915G/945G Framebuffer driver 3 + ============================================================= 4 + 5 + A. Introduction 6 + =============== 7 + 8 + This is a framebuffer driver for various Intel 8xx/9xx compatible 9 + graphics devices. These would include: 10 + 11 + - Intel 830M 12 + - Intel 845G 13 + - Intel 852GM 14 + - Intel 855GM 15 + - Intel 865G 16 + - Intel 915G 17 + - Intel 915GM 18 + - Intel 945G 19 + - Intel 945GM 20 + - Intel 945GME 21 + - Intel 965G 22 + - Intel 965GM 23 + 24 + B. List of available options 25 + ============================= 26 + 27 + a. "video=intelfb" 28 + enables the intelfb driver 29 + 30 + Recommendation: required 31 + 32 + b. "mode=<xres>x<yres>[-<bpp>][@<refresh>]" 33 + select mode 34 + 35 + Recommendation: user preference 36 + (default = 1024x768-32@70) 37 + 38 + c. "vram=<value>" 39 + select amount of system RAM in MB to allocate for the video memory 40 + if not enough RAM was already allocated by the BIOS. 41 + 42 + Recommendation: 1 - 4 MB. 43 + (default = 4 MB) 44 + 45 + d. "voffset=<value>" 46 + select at what offset in MB of the logical memory to allocate the 47 + framebuffer memory. The intent is to avoid the memory blocks 48 + used by standard graphics applications (XFree86). Depending on your 49 + usage, adjust the value up or down, (0 for maximum usage, 63/127 MB 50 + for the least amount). Note, an arbitrary setting may conflict 51 + with XFree86. 52 + 53 + Recommendation: do not set 54 + (default = 48 MB) 55 + 56 + e. "accel" 57 + enable text acceleration. This can be enabled/reenabled anytime 58 + by using 'fbset -accel true/false'. 59 + 60 + Recommendation: enable 61 + (default = set) 62 + 63 + f. "hwcursor" 64 + enable cursor acceleration. 65 + 66 + Recommendation: enable 67 + (default = set) 68 + 69 + g. "mtrr" 70 + enable MTRR. This allows data transfers to the framebuffer memory 71 + to occur in bursts which can significantly increase performance. 72 + Not very helpful with the intel chips because of 'shared memory'. 73 + 74 + Recommendation: set 75 + (default = set) 76 + 77 + h. "fixed" 78 + disable mode switching. 79 + 80 + Recommendation: do not set 81 + (default = not set) 82 + 83 + The binary parameters can be unset with a "no" prefix, example "noaccel". 84 + The default parameter (not named) is the mode. 85 + 86 + C. Kernel booting 87 + ================= 88 + 89 + Separate each option/option-pair by commas (,) and the option from its value 90 + with an equals sign (=) as in the following:: 91 + 92 + video=intelfb:option1,option2=value2 93 + 94 + Sample Usage 95 + ------------ 96 + 97 + In /etc/lilo.conf, add the line:: 98 + 99 + append="video=intelfb:mode=800x600-32@75,accel,hwcursor,vram=8" 100 + 101 + This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The 102 + framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor 103 + will be enabled. 104 + 105 + Remarks 106 + ------- 107 + 108 + If setting this parameter doesn't work (you stay in a 80x25 text-mode), 109 + you might need to set the "vga=<mode>" parameter too - see vesafb.txt 110 + in this directory. 111 + 112 + 113 + D. Module options 114 + ================== 115 + 116 + The module parameters are essentially similar to the kernel 117 + parameters. The main difference is that you need to include a Boolean value 118 + (1 for TRUE, and 0 for FALSE) for those options which don't need a value. 119 + 120 + Example, to enable MTRR, include "mtrr=1". 121 + 122 + Sample Usage 123 + ------------ 124 + 125 + Using the same setup as described above, load the module like this:: 126 + 127 + modprobe intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1 128 + 129 + Or just add the following to a configuration file in /etc/modprobe.d/:: 130 + 131 + options intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1 132 + 133 + and just do a:: 134 + 135 + modprobe intelfb 136 + 137 + 138 + E. Acknowledgment: 139 + =================== 140 + 141 + 1. Geert Uytterhoeven - his excellent howto and the virtual 142 + framebuffer driver code made this possible. 143 + 144 + 2. Jeff Hartmann for his agpgart code. 145 + 146 + 3. David Dawes for his original kernel 2.4 code. 147 + 148 + 4. The X developers. Insights were provided just by reading the 149 + XFree86 source code. 150 + 151 + 5. Antonino A. Daplas for his inspiring i810fb driver. 152 + 153 + 6. Andrew Morton for his kernel patches maintenance. 154 + 155 + Sylvain
-149
Documentation/fb/intelfb.txt
··· 1 - Intel 830M/845G/852GM/855GM/865G/915G/945G Framebuffer driver 2 - ================================================================ 3 - 4 - A. Introduction 5 - This is a framebuffer driver for various Intel 8xx/9xx compatible 6 - graphics devices. These would include: 7 - 8 - Intel 830M 9 - Intel 845G 10 - Intel 852GM 11 - Intel 855GM 12 - Intel 865G 13 - Intel 915G 14 - Intel 915GM 15 - Intel 945G 16 - Intel 945GM 17 - Intel 945GME 18 - Intel 965G 19 - Intel 965GM 20 - 21 - B. List of available options 22 - 23 - a. "video=intelfb" 24 - enables the intelfb driver 25 - 26 - Recommendation: required 27 - 28 - b. "mode=<xres>x<yres>[-<bpp>][@<refresh>]" 29 - select mode 30 - 31 - Recommendation: user preference 32 - (default = 1024x768-32@70) 33 - 34 - c. "vram=<value>" 35 - select amount of system RAM in MB to allocate for the video memory 36 - if not enough RAM was already allocated by the BIOS. 37 - 38 - Recommendation: 1 - 4 MB. 39 - (default = 4 MB) 40 - 41 - d. "voffset=<value>" 42 - select at what offset in MB of the logical memory to allocate the 43 - framebuffer memory. The intent is to avoid the memory blocks 44 - used by standard graphics applications (XFree86). Depending on your 45 - usage, adjust the value up or down, (0 for maximum usage, 63/127 MB 46 - for the least amount). Note, an arbitrary setting may conflict 47 - with XFree86. 48 - 49 - Recommendation: do not set 50 - (default = 48 MB) 51 - 52 - e. "accel" 53 - enable text acceleration. This can be enabled/reenabled anytime 54 - by using 'fbset -accel true/false'. 55 - 56 - Recommendation: enable 57 - (default = set) 58 - 59 - f. "hwcursor" 60 - enable cursor acceleration. 61 - 62 - Recommendation: enable 63 - (default = set) 64 - 65 - g. "mtrr" 66 - enable MTRR. This allows data transfers to the framebuffer memory 67 - to occur in bursts which can significantly increase performance. 68 - Not very helpful with the intel chips because of 'shared memory'. 69 - 70 - Recommendation: set 71 - (default = set) 72 - 73 - h. "fixed" 74 - disable mode switching. 75 - 76 - Recommendation: do not set 77 - (default = not set) 78 - 79 - The binary parameters can be unset with a "no" prefix, example "noaccel". 80 - The default parameter (not named) is the mode. 81 - 82 - C. Kernel booting 83 - 84 - Separate each option/option-pair by commas (,) and the option from its value 85 - with an equals sign (=) as in the following: 86 - 87 - video=intelfb:option1,option2=value2 88 - 89 - Sample Usage 90 - ------------ 91 - 92 - In /etc/lilo.conf, add the line: 93 - 94 - append="video=intelfb:mode=800x600-32@75,accel,hwcursor,vram=8" 95 - 96 - This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The 97 - framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor 98 - will be enabled. 99 - 100 - Remarks 101 - ------- 102 - 103 - If setting this parameter doesn't work (you stay in a 80x25 text-mode), 104 - you might need to set the "vga=<mode>" parameter too - see vesafb.txt 105 - in this directory. 106 - 107 - 108 - D. Module options 109 - 110 - The module parameters are essentially similar to the kernel 111 - parameters. The main difference is that you need to include a Boolean value 112 - (1 for TRUE, and 0 for FALSE) for those options which don't need a value. 113 - 114 - Example, to enable MTRR, include "mtrr=1". 115 - 116 - Sample Usage 117 - ------------ 118 - 119 - Using the same setup as described above, load the module like this: 120 - 121 - modprobe intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1 122 - 123 - Or just add the following to a configuration file in /etc/modprobe.d/ 124 - 125 - options intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1 126 - 127 - and just do a 128 - 129 - modprobe intelfb 130 - 131 - 132 - E. Acknowledgment: 133 - 134 - 1. Geert Uytterhoeven - his excellent howto and the virtual 135 - framebuffer driver code made this possible. 136 - 137 - 2. Jeff Hartmann for his agpgart code. 138 - 139 - 3. David Dawes for his original kernel 2.4 code. 140 - 141 - 4. The X developers. Insights were provided just by reading the 142 - XFree86 source code. 143 - 144 - 5. Antonino A. Daplas for his inspiring i810fb driver. 145 - 146 - 6. Andrew Morton for his kernel patches maintenance. 147 - 148 - ########################### 149 - Sylvain
+86
Documentation/fb/internals.rst
··· 1 + ============================= 2 + Frame Buffer device internals 3 + ============================= 4 + 5 + This is a first start for some documentation about frame buffer device 6 + internals. 7 + 8 + Authors: 9 + 10 + - Geert Uytterhoeven <geert@linux-m68k.org>, 21 July 1998 11 + - James Simmons <jsimmons@user.sf.net>, Nov 26 2002 12 + 13 + -------------------------------------------------------------------------------- 14 + 15 + Structures used by the frame buffer device API 16 + ============================================== 17 + 18 + The following structures play a role in the game of frame buffer devices. They 19 + are defined in <linux/fb.h>. 20 + 21 + 1. Outside the kernel (user space) 22 + 23 + - struct fb_fix_screeninfo 24 + 25 + Device independent unchangeable information about a frame buffer device and 26 + a specific video mode. This can be obtained using the FBIOGET_FSCREENINFO 27 + ioctl. 28 + 29 + - struct fb_var_screeninfo 30 + 31 + Device independent changeable information about a frame buffer device and a 32 + specific video mode. This can be obtained using the FBIOGET_VSCREENINFO 33 + ioctl, and updated with the FBIOPUT_VSCREENINFO ioctl. If you want to pan 34 + the screen only, you can use the FBIOPAN_DISPLAY ioctl. 35 + 36 + - struct fb_cmap 37 + 38 + Device independent colormap information. You can get and set the colormap 39 + using the FBIOGETCMAP and FBIOPUTCMAP ioctls. 40 + 41 + 42 + 2. Inside the kernel 43 + 44 + - struct fb_info 45 + 46 + Generic information, API and low level information about a specific frame 47 + buffer device instance (slot number, board address, ...). 48 + 49 + - struct `par` 50 + 51 + Device dependent information that uniquely defines the video mode for this 52 + particular piece of hardware. 53 + 54 + 55 + Visuals used by the frame buffer device API 56 + =========================================== 57 + 58 + 59 + Monochrome (FB_VISUAL_MONO01 and FB_VISUAL_MONO10) 60 + -------------------------------------------------- 61 + Each pixel is either black or white. 62 + 63 + 64 + Pseudo color (FB_VISUAL_PSEUDOCOLOR and FB_VISUAL_STATIC_PSEUDOCOLOR) 65 + --------------------------------------------------------------------- 66 + The whole pixel value is fed through a programmable lookup table that has one 67 + color (including red, green, and blue intensities) for each possible pixel 68 + value, and that color is displayed. 69 + 70 + 71 + True color (FB_VISUAL_TRUECOLOR) 72 + -------------------------------- 73 + The pixel value is broken up into red, green, and blue fields. 74 + 75 + 76 + Direct color (FB_VISUAL_DIRECTCOLOR) 77 + ------------------------------------ 78 + The pixel value is broken up into red, green, and blue fields, each of which 79 + are looked up in separate red, green, and blue lookup tables. 80 + 81 + 82 + Grayscale displays 83 + ------------------ 84 + Grayscale and static grayscale are special variants of pseudo color and static 85 + pseudo color, where the red, green and blue components are always equal to 86 + each other.
-82
Documentation/fb/internals.txt
··· 1 - 2 - This is a first start for some documentation about frame buffer device 3 - internals. 4 - 5 - Geert Uytterhoeven <geert@linux-m68k.org>, 21 July 1998 6 - James Simmons <jsimmons@user.sf.net>, Nov 26 2002 7 - 8 - -------------------------------------------------------------------------------- 9 - 10 - *** STRUCTURES USED BY THE FRAME BUFFER DEVICE API *** 11 - 12 - The following structures play a role in the game of frame buffer devices. They 13 - are defined in <linux/fb.h>. 14 - 15 - 1. Outside the kernel (user space) 16 - 17 - - struct fb_fix_screeninfo 18 - 19 - Device independent unchangeable information about a frame buffer device and 20 - a specific video mode. This can be obtained using the FBIOGET_FSCREENINFO 21 - ioctl. 22 - 23 - - struct fb_var_screeninfo 24 - 25 - Device independent changeable information about a frame buffer device and a 26 - specific video mode. This can be obtained using the FBIOGET_VSCREENINFO 27 - ioctl, and updated with the FBIOPUT_VSCREENINFO ioctl. If you want to pan 28 - the screen only, you can use the FBIOPAN_DISPLAY ioctl. 29 - 30 - - struct fb_cmap 31 - 32 - Device independent colormap information. You can get and set the colormap 33 - using the FBIOGETCMAP and FBIOPUTCMAP ioctls. 34 - 35 - 36 - 2. Inside the kernel 37 - 38 - - struct fb_info 39 - 40 - Generic information, API and low level information about a specific frame 41 - buffer device instance (slot number, board address, ...). 42 - 43 - - struct `par' 44 - 45 - Device dependent information that uniquely defines the video mode for this 46 - particular piece of hardware. 47 - 48 - 49 - -------------------------------------------------------------------------------- 50 - 51 - *** VISUALS USED BY THE FRAME BUFFER DEVICE API *** 52 - 53 - 54 - Monochrome (FB_VISUAL_MONO01 and FB_VISUAL_MONO10) 55 - ------------------------------------------------- 56 - Each pixel is either black or white. 57 - 58 - 59 - Pseudo color (FB_VISUAL_PSEUDOCOLOR and FB_VISUAL_STATIC_PSEUDOCOLOR) 60 - --------------------------------------------------------------------- 61 - The whole pixel value is fed through a programmable lookup table that has one 62 - color (including red, green, and blue intensities) for each possible pixel 63 - value, and that color is displayed. 64 - 65 - 66 - True color (FB_VISUAL_TRUECOLOR) 67 - -------------------------------- 68 - The pixel value is broken up into red, green, and blue fields. 69 - 70 - 71 - Direct color (FB_VISUAL_DIRECTCOLOR) 72 - ------------------------------------ 73 - The pixel value is broken up into red, green, and blue fields, each of which 74 - are looked up in separate red, green, and blue lookup tables. 75 - 76 - 77 - Grayscale displays 78 - ------------------ 79 - Grayscale and static grayscale are special variants of pseudo color and static 80 - pseudo color, where the red, green and blue components are always equal to 81 - each other. 82 -
+55
Documentation/fb/lxfb.rst
··· 1 + ============= 2 + What is lxfb? 3 + ============= 4 + 5 + .. [This file is cloned from VesaFB/aty128fb] 6 + 7 + 8 + This is a graphics framebuffer driver for AMD Geode LX based processors. 9 + 10 + Advantages: 11 + 12 + * No need to use AMD's VSA code (or other VESA emulation layer) in the 13 + BIOS. 14 + * It provides a nice large console (128 cols + 48 lines with 1024x768) 15 + without using tiny, unreadable fonts. 16 + * You can run XF68_FBDev on top of /dev/fb0 17 + * Most important: boot logo :-) 18 + 19 + Disadvantages: 20 + 21 + * graphic mode is slower than text mode... 22 + 23 + 24 + How to use it? 25 + ============== 26 + 27 + Switching modes is done using lxfb.mode_option=<resolution>... boot 28 + parameter or using `fbset` program. 29 + 30 + See Documentation/fb/modedb.rst for more information on modedb 31 + resolutions. 32 + 33 + 34 + X11 35 + === 36 + 37 + XF68_FBDev should generally work fine, but it is non-accelerated. 38 + 39 + 40 + Configuration 41 + ============= 42 + 43 + You can pass kernel command line options to lxfb with lxfb.<option>. 44 + For example, lxfb.mode_option=800x600@75. 45 + Accepted options: 46 + 47 + ================ ================================================== 48 + mode_option specify the video mode. Of the form 49 + <x>x<y>[-<bpp>][@<refresh>] 50 + vram size of video ram (normally auto-detected) 51 + vt_switch enable vt switching during suspend/resume. The vt 52 + switch is slow, but harmless. 53 + ================ ================================================== 54 + 55 + Andres Salomon <dilinger@debian.org>
-52
Documentation/fb/lxfb.txt
··· 1 - [This file is cloned from VesaFB/aty128fb] 2 - 3 - What is lxfb? 4 - ================= 5 - 6 - This is a graphics framebuffer driver for AMD Geode LX based processors. 7 - 8 - Advantages: 9 - 10 - * No need to use AMD's VSA code (or other VESA emulation layer) in the 11 - BIOS. 12 - * It provides a nice large console (128 cols + 48 lines with 1024x768) 13 - without using tiny, unreadable fonts. 14 - * You can run XF68_FBDev on top of /dev/fb0 15 - * Most important: boot logo :-) 16 - 17 - Disadvantages: 18 - 19 - * graphic mode is slower than text mode... 20 - 21 - 22 - How to use it? 23 - ============== 24 - 25 - Switching modes is done using lxfb.mode_option=<resolution>... boot 26 - parameter or using `fbset' program. 27 - 28 - See Documentation/fb/modedb.txt for more information on modedb 29 - resolutions. 30 - 31 - 32 - X11 33 - === 34 - 35 - XF68_FBDev should generally work fine, but it is non-accelerated. 36 - 37 - 38 - Configuration 39 - ============= 40 - 41 - You can pass kernel command line options to lxfb with lxfb.<option>. 42 - For example, lxfb.mode_option=800x600@75. 43 - Accepted options: 44 - 45 - mode_option - specify the video mode. Of the form 46 - <x>x<y>[-<bpp>][@<refresh>] 47 - vram - size of video ram (normally auto-detected) 48 - vt_switch - enable vt switching during suspend/resume. The vt 49 - switch is slow, but harmless. 50 - 51 - -- 52 - Andres Salomon <dilinger@debian.org>
+443
Documentation/fb/matroxfb.rst
··· 1 + ================= 2 + What is matroxfb? 3 + ================= 4 + 5 + .. [This file is cloned from VesaFB. Thanks go to Gerd Knorr] 6 + 7 + 8 + This is a driver for a graphic framebuffer for Matrox devices on 9 + Alpha, Intel and PPC boxes. 10 + 11 + Advantages: 12 + 13 + * It provides a nice large console (128 cols + 48 lines with 1024x768) 14 + without using tiny, unreadable fonts. 15 + * You can run XF{68,86}_FBDev or XFree86 fbdev driver on top of /dev/fb0 16 + * Most important: boot logo :-) 17 + 18 + Disadvantages: 19 + 20 + * graphic mode is slower than text mode... but you should not notice 21 + if you use same resolution as you used in textmode. 22 + 23 + 24 + How to use it? 25 + ============== 26 + 27 + Switching modes is done using the video=matroxfb:vesa:... boot parameter 28 + or using `fbset` program. 29 + 30 + If you want, for example, enable a resolution of 1280x1024x24bpp you should 31 + pass to the kernel this command line: "video=matroxfb:vesa:0x1BB". 32 + 33 + You should compile in both vgacon (to boot if you remove you Matrox from 34 + box) and matroxfb (for graphics mode). You should not compile-in vesafb 35 + unless you have primary display on non-Matrox VBE2.0 device (see 36 + Documentation/fb/vesafb.rst for details). 37 + 38 + Currently supported video modes are (through vesa:... interface, PowerMac 39 + has [as addon] compatibility code): 40 + 41 + 42 + Graphic modes 43 + ------------- 44 + 45 + === ======= ======= ======= ======= ======= 46 + bpp 640x400 640x480 768x576 800x600 960x720 47 + === ======= ======= ======= ======= ======= 48 + 4 0x12 0x102 49 + 8 0x100 0x101 0x180 0x103 0x188 50 + 15 0x110 0x181 0x113 0x189 51 + 16 0x111 0x182 0x114 0x18A 52 + 24 0x1B2 0x184 0x1B5 0x18C 53 + 32 0x112 0x183 0x115 0x18B 54 + === ======= ======= ======= ======= ======= 55 + 56 + 57 + Graphic modes (continued) 58 + ------------------------- 59 + 60 + === ======== ======== ========= ========= ========= 61 + bpp 1024x768 1152x864 1280x1024 1408x1056 1600x1200 62 + === ======== ======== ========= ========= ========= 63 + 4 0x104 0x106 64 + 8 0x105 0x190 0x107 0x198 0x11C 65 + 15 0x116 0x191 0x119 0x199 0x11D 66 + 16 0x117 0x192 0x11A 0x19A 0x11E 67 + 24 0x1B8 0x194 0x1BB 0x19C 0x1BF 68 + 32 0x118 0x193 0x11B 0x19B 69 + === ======== ======== ========= ========= ========= 70 + 71 + 72 + Text modes 73 + ---------- 74 + 75 + ==== ======= ======= ======== ======== ======== 76 + text 640x400 640x480 1056x344 1056x400 1056x480 77 + ==== ======= ======= ======== ======== ======== 78 + 8x8 0x1C0 0x108 0x10A 0x10B 0x10C 79 + 8x16 2, 3, 7 0x109 80 + ==== ======= ======= ======== ======== ======== 81 + 82 + You can enter these number either hexadecimal (leading `0x`) or decimal 83 + (0x100 = 256). You can also use value + 512 to achieve compatibility 84 + with your old number passed to vesafb. 85 + 86 + Non-listed number can be achieved by more complicated command-line, for 87 + example 1600x1200x32bpp can be specified by `video=matroxfb:vesa:0x11C,depth:32`. 88 + 89 + 90 + X11 91 + === 92 + 93 + XF{68,86}_FBDev should work just fine, but it is non-accelerated. On non-intel 94 + architectures there are some glitches for 24bpp videomodes. 8, 16 and 32bpp 95 + works fine. 96 + 97 + Running another (accelerated) X-Server like XF86_SVGA works too. But (at least) 98 + XFree servers have big troubles in multihead configurations (even on first 99 + head, not even talking about second). Running XFree86 4.x accelerated mga 100 + driver is possible, but you must not enable DRI - if you do, resolution and 101 + color depth of your X desktop must match resolution and color depths of your 102 + virtual consoles, otherwise X will corrupt accelerator settings. 103 + 104 + 105 + SVGALib 106 + ======= 107 + 108 + Driver contains SVGALib compatibility code. It is turned on by choosing textual 109 + mode for console. You can do it at boot time by using videomode 110 + 2,3,7,0x108-0x10C or 0x1C0. At runtime, `fbset -depth 0` does this work. 111 + Unfortunately, after SVGALib application exits, screen contents is corrupted. 112 + Switching to another console and back fixes it. I hope that it is SVGALib's 113 + problem and not mine, but I'm not sure. 114 + 115 + 116 + Configuration 117 + ============= 118 + 119 + You can pass kernel command line options to matroxfb with 120 + `video=matroxfb:option1,option2:value2,option3` (multiple options should be 121 + separated by comma, values are separated from options by `:`). 122 + Accepted options: 123 + 124 + ============ =================================================================== 125 + mem:X size of memory (X can be in megabytes, kilobytes or bytes) 126 + You can only decrease value determined by driver because of 127 + it always probe for memory. Default is to use whole detected 128 + memory usable for on-screen display (i.e. max. 8 MB). 129 + disabled do not load driver; you can use also `off`, but `disabled` 130 + is here too. 131 + enabled load driver, if you have `video=matroxfb:disabled` in LILO 132 + configuration, you can override it by this (you cannot override 133 + `off`). It is default. 134 + noaccel do not use acceleration engine. It does not work on Alphas. 135 + accel use acceleration engine. It is default. 136 + nopan create initial consoles with vyres = yres, thus disabling virtual 137 + scrolling. 138 + pan create initial consoles as tall as possible (vyres = memory/vxres). 139 + It is default. 140 + nopciretry disable PCI retries. It is needed for some broken chipsets, 141 + it is autodetected for intel's 82437. In this case device does 142 + not comply to PCI 2.1 specs (it will not guarantee that every 143 + transaction terminate with success or retry in 32 PCLK). 144 + pciretry enable PCI retries. It is default, except for intel's 82437. 145 + novga disables VGA I/O ports. It is default if BIOS did not enable 146 + device. You should not use this option, some boards then do not 147 + restart without power off. 148 + vga preserve state of VGA I/O ports. It is default. Driver does not 149 + enable VGA I/O if BIOS did not it (it is not safe to enable it in 150 + most cases). 151 + nobios disables BIOS ROM. It is default if BIOS did not enable BIOS 152 + itself. You should not use this option, some boards then do not 153 + restart without power off. 154 + bios preserve state of BIOS ROM. It is default. Driver does not enable 155 + BIOS if BIOS was not enabled before. 156 + noinit tells driver, that devices were already initialized. You should use 157 + it if you have G100 and/or if driver cannot detect memory, you see 158 + strange pattern on screen and so on. Devices not enabled by BIOS 159 + are still initialized. It is default. 160 + init driver initializes every device it knows about. 161 + memtype specifies memory type, implies 'init'. This is valid only for G200 162 + and G400 and has following meaning: 163 + 164 + G200: 165 + - 0 -> 2x128Kx32 chips, 2MB onboard, probably sgram 166 + - 1 -> 2x128Kx32 chips, 4MB onboard, probably sgram 167 + - 2 -> 2x256Kx32 chips, 4MB onboard, probably sgram 168 + - 3 -> 2x256Kx32 chips, 8MB onboard, probably sgram 169 + - 4 -> 2x512Kx16 chips, 8/16MB onboard, probably sdram only 170 + - 5 -> same as above 171 + - 6 -> 4x128Kx32 chips, 4MB onboard, probably sgram 172 + - 7 -> 4x128Kx32 chips, 8MB onboard, probably sgram 173 + G400: 174 + - 0 -> 2x512Kx16 SDRAM, 16/32MB 175 + - 2x512Kx32 SGRAM, 16/32MB 176 + - 1 -> 2x256Kx32 SGRAM, 8/16MB 177 + - 2 -> 4x128Kx32 SGRAM, 8/16MB 178 + - 3 -> 4x512Kx32 SDRAM, 32MB 179 + - 4 -> 4x256Kx32 SGRAM, 16/32MB 180 + - 5 -> 2x1Mx32 SDRAM, 32MB 181 + - 6 -> reserved 182 + - 7 -> reserved 183 + 184 + You should use sdram or sgram parameter in addition to memtype 185 + parameter. 186 + nomtrr disables write combining on frame buffer. This slows down driver 187 + but there is reported minor incompatibility between GUS DMA and 188 + XFree under high loads if write combining is enabled (sound 189 + dropouts). 190 + mtrr enables write combining on frame buffer. It speeds up video 191 + accesses much. It is default. You must have MTRR support enabled 192 + in kernel and your CPU must have MTRR (f.e. Pentium II have them). 193 + sgram tells to driver that you have Gxx0 with SGRAM memory. It has no 194 + effect without `init`. 195 + sdram tells to driver that you have Gxx0 with SDRAM memory. 196 + It is a default. 197 + inv24 change timings parameters for 24bpp modes on Millennium and 198 + Millennium II. Specify this if you see strange color shadows 199 + around characters. 200 + noinv24 use standard timings. It is the default. 201 + inverse invert colors on screen (for LCD displays) 202 + noinverse show true colors on screen. It is default. 203 + dev:X bind driver to device X. Driver numbers device from 0 up to N, 204 + where device 0 is first `known` device found, 1 second and so on. 205 + lspci lists devices in this order. 206 + Default is `every` known device. 207 + nohwcursor disables hardware cursor (use software cursor instead). 208 + hwcursor enables hardware cursor. It is default. If you are using 209 + non-accelerated mode (`noaccel` or `fbset -accel false`), software 210 + cursor is used (except for text mode). 211 + noblink disables cursor blinking. Cursor in text mode always blinks (hw 212 + limitation). 213 + blink enables cursor blinking. It is default. 214 + nofastfont disables fastfont feature. It is default. 215 + fastfont:X enables fastfont feature. X specifies size of memory reserved for 216 + font data, it must be >= (fontwidth*fontheight*chars_in_font)/8. 217 + It is faster on Gx00 series, but slower on older cards. 218 + grayscale enable grayscale summing. It works in PSEUDOCOLOR modes (text, 219 + 4bpp, 8bpp). In DIRECTCOLOR modes it is limited to characters 220 + displayed through putc/putcs. Direct accesses to framebuffer 221 + can paint colors. 222 + nograyscale disable grayscale summing. It is default. 223 + cross4MB enables that pixel line can cross 4MB boundary. It is default for 224 + non-Millennium. 225 + nocross4MB pixel line must not cross 4MB boundary. It is default for 226 + Millennium I or II, because of these devices have hardware 227 + limitations which do not allow this. But this option is 228 + incompatible with some (if not all yet released) versions of 229 + XF86_FBDev. 230 + dfp enables digital flat panel interface. This option is incompatible 231 + with secondary (TV) output - if DFP is active, TV output must be 232 + inactive and vice versa. DFP always uses same timing as primary 233 + (monitor) output. 234 + dfp:X use settings X for digital flat panel interface. X is number from 235 + 0 to 0xFF, and meaning of each individual bit is described in 236 + G400 manual, in description of DAC register 0x1F. For normal 237 + operation you should set all bits to zero, except lowest bit. This 238 + lowest bit selects who is source of display clocks, whether G400, 239 + or panel. Default value is now read back from hardware - so you 240 + should specify this value only if you are also using `init` 241 + parameter. 242 + outputs:XYZ set mapping between CRTC and outputs. Each letter can have value 243 + of 0 (for no CRTC), 1 (CRTC1) or 2 (CRTC2), and first letter 244 + corresponds to primary analog output, second letter to the 245 + secondary analog output and third letter to the DVI output. 246 + Default setting is 100 for cards below G400 or G400 without DFP, 247 + 101 for G400 with DFP, and 111 for G450 and G550. You can set 248 + mapping only on first card, use matroxset for setting up other 249 + devices. 250 + vesa:X selects startup videomode. X is number from 0 to 0x1FF, see table 251 + above for detailed explanation. Default is 640x480x8bpp if driver 252 + has 8bpp support. Otherwise first available of 640x350x4bpp, 253 + 640x480x15bpp, 640x480x24bpp, 640x480x32bpp or 80x25 text 254 + (80x25 text is always available). 255 + ============ =================================================================== 256 + 257 + If you are not satisfied with videomode selected by `vesa` option, you 258 + can modify it with these options: 259 + 260 + ============ =================================================================== 261 + xres:X horizontal resolution, in pixels. Default is derived from `vesa` 262 + option. 263 + yres:X vertical resolution, in pixel lines. Default is derived from `vesa` 264 + option. 265 + upper:X top boundary: lines between end of VSYNC pulse and start of first 266 + pixel line of picture. Default is derived from `vesa` option. 267 + lower:X bottom boundary: lines between end of picture and start of VSYNC 268 + pulse. Default is derived from `vesa` option. 269 + vslen:X length of VSYNC pulse, in lines. Default is derived from `vesa` 270 + option. 271 + left:X left boundary: pixels between end of HSYNC pulse and first pixel. 272 + Default is derived from `vesa` option. 273 + right:X right boundary: pixels between end of picture and start of HSYNC 274 + pulse. Default is derived from `vesa` option. 275 + hslen:X length of HSYNC pulse, in pixels. Default is derived from `vesa` 276 + option. 277 + pixclock:X dotclocks, in ps (picoseconds). Default is derived from `vesa` 278 + option and from `fh` and `fv` options. 279 + sync:X sync. pulse - bit 0 inverts HSYNC polarity, bit 1 VSYNC polarity. 280 + If bit 3 (value 0x08) is set, composite sync instead of HSYNC is 281 + generated. If bit 5 (value 0x20) is set, sync on green is turned 282 + on. Do not forget that if you want sync on green, you also probably 283 + want composite sync. 284 + Default depends on `vesa`. 285 + depth:X Bits per pixel: 0=text, 4,8,15,16,24 or 32. Default depends on 286 + `vesa`. 287 + ============ =================================================================== 288 + 289 + If you know capabilities of your monitor, you can specify some (or all) of 290 + `maxclk`, `fh` and `fv`. In this case, `pixclock` is computed so that 291 + pixclock <= maxclk, real_fh <= fh and real_fv <= fv. 292 + 293 + ============ ================================================================== 294 + maxclk:X maximum dotclock. X can be specified in MHz, kHz or Hz. Default is 295 + `don`t care`. 296 + fh:X maximum horizontal synchronization frequency. X can be specified 297 + in kHz or Hz. Default is `don't care`. 298 + fv:X maximum vertical frequency. X must be specified in Hz. Default is 299 + 70 for modes derived from `vesa` with yres <= 400, 60Hz for 300 + yres > 400. 301 + ============ ================================================================== 302 + 303 + 304 + Limitations 305 + =========== 306 + 307 + There are known and unknown bugs, features and misfeatures. 308 + Currently there are following known bugs: 309 + 310 + - SVGALib does not restore screen on exit 311 + - generic fbcon-cfbX procedures do not work on Alphas. Due to this, 312 + `noaccel` (and cfb4 accel) driver does not work on Alpha. So everyone 313 + with access to `/dev/fb*` on Alpha can hang machine (you should restrict 314 + access to `/dev/fb*` - everyone with access to this device can destroy 315 + your monitor, believe me...). 316 + - 24bpp does not support correctly XF-FBDev on big-endian architectures. 317 + - interlaced text mode is not supported; it looks like hardware limitation, 318 + but I'm not sure. 319 + - Gxx0 SGRAM/SDRAM is not autodetected. 320 + - If you are using more than one framebuffer device, you must boot kernel 321 + with 'video=scrollback:0'. 322 + - maybe more... 323 + 324 + And following misfeatures: 325 + 326 + - SVGALib does not restore screen on exit. 327 + - pixclock for text modes is limited by hardware to 328 + 329 + - 83 MHz on G200 330 + - 66 MHz on Millennium I 331 + - 60 MHz on Millennium II 332 + 333 + Because I have no access to other devices, I do not know specific 334 + frequencies for them. So driver does not check this and allows you to 335 + set frequency higher that this. It causes sparks, black holes and other 336 + pretty effects on screen. Device was not destroyed during tests. :-) 337 + - my Millennium G200 oscillator has frequency range from 35 MHz to 380 MHz 338 + (and it works with 8bpp on about 320 MHz dotclocks (and changed mclk)). 339 + But Matrox says on product sheet that VCO limit is 50-250 MHz, so I believe 340 + them (maybe that chip overheats, but it has a very big cooler (G100 has 341 + none), so it should work). 342 + - special mixed video/graphics videomodes of Mystique and Gx00 - 2G8V16 and 343 + G16V16 are not supported 344 + - color keying is not supported 345 + - feature connector of Mystique and Gx00 is set to VGA mode (it is disabled 346 + by BIOS) 347 + - DDC (monitor detection) is supported through dualhead driver 348 + - some check for input values are not so strict how it should be (you can 349 + specify vslen=4000 and so on). 350 + - maybe more... 351 + 352 + And following features: 353 + 354 + - 4bpp is available only on Millennium I and Millennium II. It is hardware 355 + limitation. 356 + - selection between 1:5:5:5 and 5:6:5 16bpp videomode is done by -rgba 357 + option of fbset: "fbset -depth 16 -rgba 5,5,5" selects 1:5:5:5, anything 358 + else selects 5:6:5 mode. 359 + - text mode uses 6 bit VGA palette instead of 8 bit (one of 262144 colors 360 + instead of one of 16M colors). It is due to hardware limitation of 361 + Millennium I/II and SVGALib compatibility. 362 + 363 + 364 + Benchmarks 365 + ========== 366 + It is time to redraw whole screen 1000 times in 1024x768, 60Hz. It is 367 + time for draw 6144000 characters on screen through /dev/vcsa 368 + (for 32bpp it is about 3GB of data (exactly 3000 MB); for 8x16 font in 369 + 16 seconds, i.e. 187 MBps). 370 + Times were obtained from one older version of driver, now they are about 3% 371 + faster, it is kernel-space only time on P-II/350 MHz, Millennium I in 33 MHz 372 + PCI slot, G200 in AGP 2x slot. I did not test vgacon:: 373 + 374 + NOACCEL 375 + 8x16 12x22 376 + Millennium I G200 Millennium I G200 377 + 8bpp 16.42 9.54 12.33 9.13 378 + 16bpp 21.00 15.70 19.11 15.02 379 + 24bpp 36.66 36.66 35.00 35.00 380 + 32bpp 35.00 30.00 33.85 28.66 381 + 382 + ACCEL, nofastfont 383 + 8x16 12x22 6x11 384 + Millennium I G200 Millennium I G200 Millennium I G200 385 + 8bpp 7.79 7.24 13.55 7.78 30.00 21.01 386 + 16bpp 9.13 7.78 16.16 7.78 30.00 21.01 387 + 24bpp 14.17 10.72 18.69 10.24 34.99 21.01 388 + 32bpp 16.15 16.16 18.73 13.09 34.99 21.01 389 + 390 + ACCEL, fastfont 391 + 8x16 12x22 6x11 392 + Millennium I G200 Millennium I G200 Millennium I G200 393 + 8bpp 8.41 6.01 6.54 4.37 16.00 10.51 394 + 16bpp 9.54 9.12 8.76 6.17 17.52 14.01 395 + 24bpp 15.00 12.36 11.67 10.00 22.01 18.32 396 + 32bpp 16.18 18.29* 12.71 12.74 24.44 21.00 397 + 398 + TEXT 399 + 8x16 400 + Millennium I G200 401 + TEXT 3.29 1.50 402 + 403 + * Yes, it is slower than Millennium I. 404 + 405 + 406 + Dualhead G400 407 + ============= 408 + Driver supports dualhead G400 with some limitations: 409 + + secondary head shares videomemory with primary head. It is not problem 410 + if you have 32MB of videoram, but if you have only 16MB, you may have 411 + to think twice before choosing videomode (for example twice 1880x1440x32bpp 412 + is not possible). 413 + + due to hardware limitation, secondary head can use only 16 and 32bpp 414 + videomodes. 415 + + secondary head is not accelerated. There were bad problems with accelerated 416 + XFree when secondary head used to use acceleration. 417 + + secondary head always powerups in 640x480@60-32 videomode. You have to use 418 + fbset to change this mode. 419 + + secondary head always powerups in monitor mode. You have to use fbmatroxset 420 + to change it to TV mode. Also, you must select at least 525 lines for 421 + NTSC output and 625 lines for PAL output. 422 + + kernel is not fully multihead ready. So some things are impossible to do. 423 + + if you compiled it as module, you must insert i2c-matroxfb, matroxfb_maven 424 + and matroxfb_crtc2 into kernel. 425 + 426 + 427 + Dualhead G450 428 + ============= 429 + Driver supports dualhead G450 with some limitations: 430 + + secondary head shares videomemory with primary head. It is not problem 431 + if you have 32MB of videoram, but if you have only 16MB, you may have 432 + to think twice before choosing videomode. 433 + + due to hardware limitation, secondary head can use only 16 and 32bpp 434 + videomodes. 435 + + secondary head is not accelerated. 436 + + secondary head always powerups in 640x480@60-32 videomode. You have to use 437 + fbset to change this mode. 438 + + TV output is not supported 439 + + kernel is not fully multihead ready, so some things are impossible to do. 440 + + if you compiled it as module, you must insert matroxfb_g450 and matroxfb_crtc2 441 + into kernel. 442 + 443 + Petr Vandrovec <vandrove@vc.cvut.cz>
-413
Documentation/fb/matroxfb.txt
··· 1 - [This file is cloned from VesaFB. Thanks go to Gerd Knorr] 2 - 3 - What is matroxfb? 4 - ================= 5 - 6 - This is a driver for a graphic framebuffer for Matrox devices on 7 - Alpha, Intel and PPC boxes. 8 - 9 - Advantages: 10 - 11 - * It provides a nice large console (128 cols + 48 lines with 1024x768) 12 - without using tiny, unreadable fonts. 13 - * You can run XF{68,86}_FBDev or XFree86 fbdev driver on top of /dev/fb0 14 - * Most important: boot logo :-) 15 - 16 - Disadvantages: 17 - 18 - * graphic mode is slower than text mode... but you should not notice 19 - if you use same resolution as you used in textmode. 20 - 21 - 22 - How to use it? 23 - ============== 24 - 25 - Switching modes is done using the video=matroxfb:vesa:... boot parameter 26 - or using `fbset' program. 27 - 28 - If you want, for example, enable a resolution of 1280x1024x24bpp you should 29 - pass to the kernel this command line: "video=matroxfb:vesa:0x1BB". 30 - 31 - You should compile in both vgacon (to boot if you remove you Matrox from 32 - box) and matroxfb (for graphics mode). You should not compile-in vesafb 33 - unless you have primary display on non-Matrox VBE2.0 device (see 34 - Documentation/fb/vesafb.txt for details). 35 - 36 - Currently supported video modes are (through vesa:... interface, PowerMac 37 - has [as addon] compatibility code): 38 - 39 - 40 - [Graphic modes] 41 - 42 - bpp | 640x400 640x480 768x576 800x600 960x720 43 - ----+-------------------------------------------- 44 - 4 | 0x12 0x102 45 - 8 | 0x100 0x101 0x180 0x103 0x188 46 - 15 | 0x110 0x181 0x113 0x189 47 - 16 | 0x111 0x182 0x114 0x18A 48 - 24 | 0x1B2 0x184 0x1B5 0x18C 49 - 32 | 0x112 0x183 0x115 0x18B 50 - 51 - 52 - [Graphic modes (continued)] 53 - 54 - bpp | 1024x768 1152x864 1280x1024 1408x1056 1600x1200 55 - ----+------------------------------------------------ 56 - 4 | 0x104 0x106 57 - 8 | 0x105 0x190 0x107 0x198 0x11C 58 - 15 | 0x116 0x191 0x119 0x199 0x11D 59 - 16 | 0x117 0x192 0x11A 0x19A 0x11E 60 - 24 | 0x1B8 0x194 0x1BB 0x19C 0x1BF 61 - 32 | 0x118 0x193 0x11B 0x19B 62 - 63 - 64 - [Text modes] 65 - 66 - text | 640x400 640x480 1056x344 1056x400 1056x480 67 - -----+------------------------------------------------ 68 - 8x8 | 0x1C0 0x108 0x10A 0x10B 0x10C 69 - 8x16 | 2, 3, 7 0x109 70 - 71 - You can enter these number either hexadecimal (leading `0x') or decimal 72 - (0x100 = 256). You can also use value + 512 to achieve compatibility 73 - with your old number passed to vesafb. 74 - 75 - Non-listed number can be achieved by more complicated command-line, for 76 - example 1600x1200x32bpp can be specified by `video=matroxfb:vesa:0x11C,depth:32'. 77 - 78 - 79 - X11 80 - === 81 - 82 - XF{68,86}_FBDev should work just fine, but it is non-accelerated. On non-intel 83 - architectures there are some glitches for 24bpp videomodes. 8, 16 and 32bpp 84 - works fine. 85 - 86 - Running another (accelerated) X-Server like XF86_SVGA works too. But (at least) 87 - XFree servers have big troubles in multihead configurations (even on first 88 - head, not even talking about second). Running XFree86 4.x accelerated mga 89 - driver is possible, but you must not enable DRI - if you do, resolution and 90 - color depth of your X desktop must match resolution and color depths of your 91 - virtual consoles, otherwise X will corrupt accelerator settings. 92 - 93 - 94 - SVGALib 95 - ======= 96 - 97 - Driver contains SVGALib compatibility code. It is turned on by choosing textual 98 - mode for console. You can do it at boot time by using videomode 99 - 2,3,7,0x108-0x10C or 0x1C0. At runtime, `fbset -depth 0' does this work. 100 - Unfortunately, after SVGALib application exits, screen contents is corrupted. 101 - Switching to another console and back fixes it. I hope that it is SVGALib's 102 - problem and not mine, but I'm not sure. 103 - 104 - 105 - Configuration 106 - ============= 107 - 108 - You can pass kernel command line options to matroxfb with 109 - `video=matroxfb:option1,option2:value2,option3' (multiple options should be 110 - separated by comma, values are separated from options by `:'). 111 - Accepted options: 112 - 113 - mem:X - size of memory (X can be in megabytes, kilobytes or bytes) 114 - You can only decrease value determined by driver because of 115 - it always probe for memory. Default is to use whole detected 116 - memory usable for on-screen display (i.e. max. 8 MB). 117 - disabled - do not load driver; you can use also `off', but `disabled' 118 - is here too. 119 - enabled - load driver, if you have `video=matroxfb:disabled' in LILO 120 - configuration, you can override it by this (you cannot override 121 - `off'). It is default. 122 - noaccel - do not use acceleration engine. It does not work on Alphas. 123 - accel - use acceleration engine. It is default. 124 - nopan - create initial consoles with vyres = yres, thus disabling virtual 125 - scrolling. 126 - pan - create initial consoles as tall as possible (vyres = memory/vxres). 127 - It is default. 128 - nopciretry - disable PCI retries. It is needed for some broken chipsets, 129 - it is autodetected for intel's 82437. In this case device does 130 - not comply to PCI 2.1 specs (it will not guarantee that every 131 - transaction terminate with success or retry in 32 PCLK). 132 - pciretry - enable PCI retries. It is default, except for intel's 82437. 133 - novga - disables VGA I/O ports. It is default if BIOS did not enable device. 134 - You should not use this option, some boards then do not restart 135 - without power off. 136 - vga - preserve state of VGA I/O ports. It is default. Driver does not 137 - enable VGA I/O if BIOS did not it (it is not safe to enable it in 138 - most cases). 139 - nobios - disables BIOS ROM. It is default if BIOS did not enable BIOS itself. 140 - You should not use this option, some boards then do not restart 141 - without power off. 142 - bios - preserve state of BIOS ROM. It is default. Driver does not enable 143 - BIOS if BIOS was not enabled before. 144 - noinit - tells driver, that devices were already initialized. You should use 145 - it if you have G100 and/or if driver cannot detect memory, you see 146 - strange pattern on screen and so on. Devices not enabled by BIOS 147 - are still initialized. It is default. 148 - init - driver initializes every device it knows about. 149 - memtype - specifies memory type, implies 'init'. This is valid only for G200 150 - and G400 and has following meaning: 151 - G200: 0 -> 2x128Kx32 chips, 2MB onboard, probably sgram 152 - 1 -> 2x128Kx32 chips, 4MB onboard, probably sgram 153 - 2 -> 2x256Kx32 chips, 4MB onboard, probably sgram 154 - 3 -> 2x256Kx32 chips, 8MB onboard, probably sgram 155 - 4 -> 2x512Kx16 chips, 8/16MB onboard, probably sdram only 156 - 5 -> same as above 157 - 6 -> 4x128Kx32 chips, 4MB onboard, probably sgram 158 - 7 -> 4x128Kx32 chips, 8MB onboard, probably sgram 159 - G400: 0 -> 2x512Kx16 SDRAM, 16/32MB 160 - 2x512Kx32 SGRAM, 16/32MB 161 - 1 -> 2x256Kx32 SGRAM, 8/16MB 162 - 2 -> 4x128Kx32 SGRAM, 8/16MB 163 - 3 -> 4x512Kx32 SDRAM, 32MB 164 - 4 -> 4x256Kx32 SGRAM, 16/32MB 165 - 5 -> 2x1Mx32 SDRAM, 32MB 166 - 6 -> reserved 167 - 7 -> reserved 168 - You should use sdram or sgram parameter in addition to memtype 169 - parameter. 170 - nomtrr - disables write combining on frame buffer. This slows down driver but 171 - there is reported minor incompatibility between GUS DMA and XFree 172 - under high loads if write combining is enabled (sound dropouts). 173 - mtrr - enables write combining on frame buffer. It speeds up video accesses 174 - much. It is default. You must have MTRR support enabled in kernel 175 - and your CPU must have MTRR (f.e. Pentium II have them). 176 - sgram - tells to driver that you have Gxx0 with SGRAM memory. It has no 177 - effect without `init'. 178 - sdram - tells to driver that you have Gxx0 with SDRAM memory. 179 - It is a default. 180 - inv24 - change timings parameters for 24bpp modes on Millennium and 181 - Millennium II. Specify this if you see strange color shadows around 182 - characters. 183 - noinv24 - use standard timings. It is the default. 184 - inverse - invert colors on screen (for LCD displays) 185 - noinverse - show true colors on screen. It is default. 186 - dev:X - bind driver to device X. Driver numbers device from 0 up to N, 187 - where device 0 is first `known' device found, 1 second and so on. 188 - lspci lists devices in this order. 189 - Default is `every' known device. 190 - nohwcursor - disables hardware cursor (use software cursor instead). 191 - hwcursor - enables hardware cursor. It is default. If you are using 192 - non-accelerated mode (`noaccel' or `fbset -accel false'), software 193 - cursor is used (except for text mode). 194 - noblink - disables cursor blinking. Cursor in text mode always blinks (hw 195 - limitation). 196 - blink - enables cursor blinking. It is default. 197 - nofastfont - disables fastfont feature. It is default. 198 - fastfont:X - enables fastfont feature. X specifies size of memory reserved for 199 - font data, it must be >= (fontwidth*fontheight*chars_in_font)/8. 200 - It is faster on Gx00 series, but slower on older cards. 201 - grayscale - enable grayscale summing. It works in PSEUDOCOLOR modes (text, 202 - 4bpp, 8bpp). In DIRECTCOLOR modes it is limited to characters 203 - displayed through putc/putcs. Direct accesses to framebuffer 204 - can paint colors. 205 - nograyscale - disable grayscale summing. It is default. 206 - cross4MB - enables that pixel line can cross 4MB boundary. It is default for 207 - non-Millennium. 208 - nocross4MB - pixel line must not cross 4MB boundary. It is default for 209 - Millennium I or II, because of these devices have hardware 210 - limitations which do not allow this. But this option is 211 - incompatible with some (if not all yet released) versions of 212 - XF86_FBDev. 213 - dfp - enables digital flat panel interface. This option is incompatible with 214 - secondary (TV) output - if DFP is active, TV output must be 215 - inactive and vice versa. DFP always uses same timing as primary 216 - (monitor) output. 217 - dfp:X - use settings X for digital flat panel interface. X is number from 218 - 0 to 0xFF, and meaning of each individual bit is described in 219 - G400 manual, in description of DAC register 0x1F. For normal operation 220 - you should set all bits to zero, except lowest bit. This lowest bit 221 - selects who is source of display clocks, whether G400, or panel. 222 - Default value is now read back from hardware - so you should specify 223 - this value only if you are also using `init' parameter. 224 - outputs:XYZ - set mapping between CRTC and outputs. Each letter can have value 225 - of 0 (for no CRTC), 1 (CRTC1) or 2 (CRTC2), and first letter corresponds 226 - to primary analog output, second letter to the secondary analog output 227 - and third letter to the DVI output. Default setting is 100 for 228 - cards below G400 or G400 without DFP, 101 for G400 with DFP, and 229 - 111 for G450 and G550. You can set mapping only on first card, 230 - use matroxset for setting up other devices. 231 - vesa:X - selects startup videomode. X is number from 0 to 0x1FF, see table 232 - above for detailed explanation. Default is 640x480x8bpp if driver 233 - has 8bpp support. Otherwise first available of 640x350x4bpp, 234 - 640x480x15bpp, 640x480x24bpp, 640x480x32bpp or 80x25 text 235 - (80x25 text is always available). 236 - 237 - If you are not satisfied with videomode selected by `vesa' option, you 238 - can modify it with these options: 239 - 240 - xres:X - horizontal resolution, in pixels. Default is derived from `vesa' 241 - option. 242 - yres:X - vertical resolution, in pixel lines. Default is derived from `vesa' 243 - option. 244 - upper:X - top boundary: lines between end of VSYNC pulse and start of first 245 - pixel line of picture. Default is derived from `vesa' option. 246 - lower:X - bottom boundary: lines between end of picture and start of VSYNC 247 - pulse. Default is derived from `vesa' option. 248 - vslen:X - length of VSYNC pulse, in lines. Default is derived from `vesa' 249 - option. 250 - left:X - left boundary: pixels between end of HSYNC pulse and first pixel. 251 - Default is derived from `vesa' option. 252 - right:X - right boundary: pixels between end of picture and start of HSYNC 253 - pulse. Default is derived from `vesa' option. 254 - hslen:X - length of HSYNC pulse, in pixels. Default is derived from `vesa' 255 - option. 256 - pixclock:X - dotclocks, in ps (picoseconds). Default is derived from `vesa' 257 - option and from `fh' and `fv' options. 258 - sync:X - sync. pulse - bit 0 inverts HSYNC polarity, bit 1 VSYNC polarity. 259 - If bit 3 (value 0x08) is set, composite sync instead of HSYNC is 260 - generated. If bit 5 (value 0x20) is set, sync on green is turned on. 261 - Do not forget that if you want sync on green, you also probably 262 - want composite sync. 263 - Default depends on `vesa'. 264 - depth:X - Bits per pixel: 0=text, 4,8,15,16,24 or 32. Default depends on 265 - `vesa'. 266 - 267 - If you know capabilities of your monitor, you can specify some (or all) of 268 - `maxclk', `fh' and `fv'. In this case, `pixclock' is computed so that 269 - pixclock <= maxclk, real_fh <= fh and real_fv <= fv. 270 - 271 - maxclk:X - maximum dotclock. X can be specified in MHz, kHz or Hz. Default is 272 - `don't care'. 273 - fh:X - maximum horizontal synchronization frequency. X can be specified 274 - in kHz or Hz. Default is `don't care'. 275 - fv:X - maximum vertical frequency. X must be specified in Hz. Default is 276 - 70 for modes derived from `vesa' with yres <= 400, 60Hz for 277 - yres > 400. 278 - 279 - 280 - Limitations 281 - =========== 282 - 283 - There are known and unknown bugs, features and misfeatures. 284 - Currently there are following known bugs: 285 - + SVGALib does not restore screen on exit 286 - + generic fbcon-cfbX procedures do not work on Alphas. Due to this, 287 - `noaccel' (and cfb4 accel) driver does not work on Alpha. So everyone 288 - with access to /dev/fb* on Alpha can hang machine (you should restrict 289 - access to /dev/fb* - everyone with access to this device can destroy 290 - your monitor, believe me...). 291 - + 24bpp does not support correctly XF-FBDev on big-endian architectures. 292 - + interlaced text mode is not supported; it looks like hardware limitation, 293 - but I'm not sure. 294 - + Gxx0 SGRAM/SDRAM is not autodetected. 295 - + If you are using more than one framebuffer device, you must boot kernel 296 - with 'video=scrollback:0'. 297 - + maybe more... 298 - And following misfeatures: 299 - + SVGALib does not restore screen on exit. 300 - + pixclock for text modes is limited by hardware to 301 - 83 MHz on G200 302 - 66 MHz on Millennium I 303 - 60 MHz on Millennium II 304 - Because I have no access to other devices, I do not know specific 305 - frequencies for them. So driver does not check this and allows you to 306 - set frequency higher that this. It causes sparks, black holes and other 307 - pretty effects on screen. Device was not destroyed during tests. :-) 308 - + my Millennium G200 oscillator has frequency range from 35 MHz to 380 MHz 309 - (and it works with 8bpp on about 320 MHz dotclocks (and changed mclk)). 310 - But Matrox says on product sheet that VCO limit is 50-250 MHz, so I believe 311 - them (maybe that chip overheats, but it has a very big cooler (G100 has 312 - none), so it should work). 313 - + special mixed video/graphics videomodes of Mystique and Gx00 - 2G8V16 and 314 - G16V16 are not supported 315 - + color keying is not supported 316 - + feature connector of Mystique and Gx00 is set to VGA mode (it is disabled 317 - by BIOS) 318 - + DDC (monitor detection) is supported through dualhead driver 319 - + some check for input values are not so strict how it should be (you can 320 - specify vslen=4000 and so on). 321 - + maybe more... 322 - And following features: 323 - + 4bpp is available only on Millennium I and Millennium II. It is hardware 324 - limitation. 325 - + selection between 1:5:5:5 and 5:6:5 16bpp videomode is done by -rgba 326 - option of fbset: "fbset -depth 16 -rgba 5,5,5" selects 1:5:5:5, anything 327 - else selects 5:6:5 mode. 328 - + text mode uses 6 bit VGA palette instead of 8 bit (one of 262144 colors 329 - instead of one of 16M colors). It is due to hardware limitation of 330 - Millennium I/II and SVGALib compatibility. 331 - 332 - 333 - Benchmarks 334 - ========== 335 - It is time to redraw whole screen 1000 times in 1024x768, 60Hz. It is 336 - time for draw 6144000 characters on screen through /dev/vcsa 337 - (for 32bpp it is about 3GB of data (exactly 3000 MB); for 8x16 font in 338 - 16 seconds, i.e. 187 MBps). 339 - Times were obtained from one older version of driver, now they are about 3% 340 - faster, it is kernel-space only time on P-II/350 MHz, Millennium I in 33 MHz 341 - PCI slot, G200 in AGP 2x slot. I did not test vgacon. 342 - 343 - NOACCEL 344 - 8x16 12x22 345 - Millennium I G200 Millennium I G200 346 - 8bpp 16.42 9.54 12.33 9.13 347 - 16bpp 21.00 15.70 19.11 15.02 348 - 24bpp 36.66 36.66 35.00 35.00 349 - 32bpp 35.00 30.00 33.85 28.66 350 - 351 - ACCEL, nofastfont 352 - 8x16 12x22 6x11 353 - Millennium I G200 Millennium I G200 Millennium I G200 354 - 8bpp 7.79 7.24 13.55 7.78 30.00 21.01 355 - 16bpp 9.13 7.78 16.16 7.78 30.00 21.01 356 - 24bpp 14.17 10.72 18.69 10.24 34.99 21.01 357 - 32bpp 16.15 16.16 18.73 13.09 34.99 21.01 358 - 359 - ACCEL, fastfont 360 - 8x16 12x22 6x11 361 - Millennium I G200 Millennium I G200 Millennium I G200 362 - 8bpp 8.41 6.01 6.54 4.37 16.00 10.51 363 - 16bpp 9.54 9.12 8.76 6.17 17.52 14.01 364 - 24bpp 15.00 12.36 11.67 10.00 22.01 18.32 365 - 32bpp 16.18 18.29* 12.71 12.74 24.44 21.00 366 - 367 - TEXT 368 - 8x16 369 - Millennium I G200 370 - TEXT 3.29 1.50 371 - 372 - * Yes, it is slower than Millennium I. 373 - 374 - 375 - Dualhead G400 376 - ============= 377 - Driver supports dualhead G400 with some limitations: 378 - + secondary head shares videomemory with primary head. It is not problem 379 - if you have 32MB of videoram, but if you have only 16MB, you may have 380 - to think twice before choosing videomode (for example twice 1880x1440x32bpp 381 - is not possible). 382 - + due to hardware limitation, secondary head can use only 16 and 32bpp 383 - videomodes. 384 - + secondary head is not accelerated. There were bad problems with accelerated 385 - XFree when secondary head used to use acceleration. 386 - + secondary head always powerups in 640x480@60-32 videomode. You have to use 387 - fbset to change this mode. 388 - + secondary head always powerups in monitor mode. You have to use fbmatroxset 389 - to change it to TV mode. Also, you must select at least 525 lines for 390 - NTSC output and 625 lines for PAL output. 391 - + kernel is not fully multihead ready. So some things are impossible to do. 392 - + if you compiled it as module, you must insert i2c-matroxfb, matroxfb_maven 393 - and matroxfb_crtc2 into kernel. 394 - 395 - 396 - Dualhead G450 397 - ============= 398 - Driver supports dualhead G450 with some limitations: 399 - + secondary head shares videomemory with primary head. It is not problem 400 - if you have 32MB of videoram, but if you have only 16MB, you may have 401 - to think twice before choosing videomode. 402 - + due to hardware limitation, secondary head can use only 16 and 32bpp 403 - videomodes. 404 - + secondary head is not accelerated. 405 - + secondary head always powerups in 640x480@60-32 videomode. You have to use 406 - fbset to change this mode. 407 - + TV output is not supported 408 - + kernel is not fully multihead ready, so some things are impossible to do. 409 - + if you compiled it as module, you must insert matroxfb_g450 and matroxfb_crtc2 410 - into kernel. 411 - 412 - -- 413 - Petr Vandrovec <vandrove@vc.cvut.cz>
+38
Documentation/fb/metronomefb.rst
··· 1 + =========== 2 + Metronomefb 3 + =========== 4 + 5 + Maintained by Jaya Kumar <jayakumar.lkml.gmail.com> 6 + 7 + Last revised: Mar 10, 2008 8 + 9 + Metronomefb is a driver for the Metronome display controller. The controller 10 + is from E-Ink Corporation. It is intended to be used to drive the E-Ink 11 + Vizplex display media. E-Ink hosts some details of this controller and the 12 + display media here http://www.e-ink.com/products/matrix/metronome.html . 13 + 14 + Metronome is interfaced to the host CPU through the AMLCD interface. The 15 + host CPU generates the control information and the image in a framebuffer 16 + which is then delivered to the AMLCD interface by a host specific method. 17 + The display and error status are each pulled through individual GPIOs. 18 + 19 + Metronomefb is platform independent and depends on a board specific driver 20 + to do all physical IO work. Currently, an example is implemented for the 21 + PXA board used in the AM-200 EPD devkit. This example is am200epd.c 22 + 23 + Metronomefb requires waveform information which is delivered via the AMLCD 24 + interface to the metronome controller. The waveform information is expected to 25 + be delivered from userspace via the firmware class interface. The waveform file 26 + can be compressed as long as your udev or hotplug script is aware of the need 27 + to uncompress it before delivering it. metronomefb will ask for metronome.wbf 28 + which would typically go into /lib/firmware/metronome.wbf depending on your 29 + udev/hotplug setup. I have only tested with a single waveform file which was 30 + originally labeled 23P01201_60_WT0107_MTC. I do not know what it stands for. 31 + Caution should be exercised when manipulating the waveform as there may be 32 + a possibility that it could have some permanent effects on the display media. 33 + I neither have access to nor know exactly what the waveform does in terms of 34 + the physical media. 35 + 36 + Metronomefb uses the deferred IO interface so that it can provide a memory 37 + mappable frame buffer. It has been tested with tinyx (Xfbdev). It is known 38 + to work at this time with xeyes, xclock, xloadimage, xpdf.
-36
Documentation/fb/metronomefb.txt
··· 1 - Metronomefb 2 - ----------- 3 - Maintained by Jaya Kumar <jayakumar.lkml.gmail.com> 4 - Last revised: Mar 10, 2008 5 - 6 - Metronomefb is a driver for the Metronome display controller. The controller 7 - is from E-Ink Corporation. It is intended to be used to drive the E-Ink 8 - Vizplex display media. E-Ink hosts some details of this controller and the 9 - display media here http://www.e-ink.com/products/matrix/metronome.html . 10 - 11 - Metronome is interfaced to the host CPU through the AMLCD interface. The 12 - host CPU generates the control information and the image in a framebuffer 13 - which is then delivered to the AMLCD interface by a host specific method. 14 - The display and error status are each pulled through individual GPIOs. 15 - 16 - Metronomefb is platform independent and depends on a board specific driver 17 - to do all physical IO work. Currently, an example is implemented for the 18 - PXA board used in the AM-200 EPD devkit. This example is am200epd.c 19 - 20 - Metronomefb requires waveform information which is delivered via the AMLCD 21 - interface to the metronome controller. The waveform information is expected to 22 - be delivered from userspace via the firmware class interface. The waveform file 23 - can be compressed as long as your udev or hotplug script is aware of the need 24 - to uncompress it before delivering it. metronomefb will ask for metronome.wbf 25 - which would typically go into /lib/firmware/metronome.wbf depending on your 26 - udev/hotplug setup. I have only tested with a single waveform file which was 27 - originally labeled 23P01201_60_WT0107_MTC. I do not know what it stands for. 28 - Caution should be exercised when manipulating the waveform as there may be 29 - a possibility that it could have some permanent effects on the display media. 30 - I neither have access to nor know exactly what the waveform does in terms of 31 - the physical media. 32 - 33 - Metronomefb uses the deferred IO interface so that it can provide a memory 34 - mappable frame buffer. It has been tested with tinyx (Xfbdev). It is known 35 - to work at this time with xeyes, xclock, xloadimage, xpdf. 36 -
+155
Documentation/fb/modedb.rst
··· 1 + ================================= 2 + modedb default video mode support 3 + ================================= 4 + 5 + 6 + Currently all frame buffer device drivers have their own video mode databases, 7 + which is a mess and a waste of resources. The main idea of modedb is to have 8 + 9 + - one routine to probe for video modes, which can be used by all frame buffer 10 + devices 11 + - one generic video mode database with a fair amount of standard videomodes 12 + (taken from XFree86) 13 + - the possibility to supply your own mode database for graphics hardware that 14 + needs non-standard modes, like amifb and Mac frame buffer drivers (which 15 + use macmodes.c) 16 + 17 + When a frame buffer device receives a video= option it doesn't know, it should 18 + consider that to be a video mode option. If no frame buffer device is specified 19 + in a video= option, fbmem considers that to be a global video mode option. 20 + 21 + Valid mode specifiers (mode_option argument):: 22 + 23 + <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd] 24 + <name>[-<bpp>][@<refresh>] 25 + 26 + with <xres>, <yres>, <bpp> and <refresh> decimal numbers and <name> a string. 27 + Things between square brackets are optional. 28 + 29 + If 'M' is specified in the mode_option argument (after <yres> and before 30 + <bpp> and <refresh>, if specified) the timings will be calculated using 31 + VESA(TM) Coordinated Video Timings instead of looking up the mode from a table. 32 + If 'R' is specified, do a 'reduced blanking' calculation for digital displays. 33 + If 'i' is specified, calculate for an interlaced mode. And if 'm' is 34 + specified, add margins to the calculation (1.8% of xres rounded down to 8 35 + pixels and 1.8% of yres). 36 + 37 + Sample usage: 1024x768M@60m - CVT timing with margins 38 + 39 + DRM drivers also add options to enable or disable outputs: 40 + 41 + 'e' will force the display to be enabled, i.e. it will override the detection 42 + if a display is connected. 'D' will force the display to be enabled and use 43 + digital output. This is useful for outputs that have both analog and digital 44 + signals (e.g. HDMI and DVI-I). For other outputs it behaves like 'e'. If 'd' 45 + is specified the output is disabled. 46 + 47 + You can additionally specify which output the options matches to. 48 + To force the VGA output to be enabled and drive a specific mode say:: 49 + 50 + video=VGA-1:1280x1024@60me 51 + 52 + Specifying the option multiple times for different ports is possible, e.g.:: 53 + 54 + video=LVDS-1:d video=HDMI-1:D 55 + 56 + ----------------------------------------------------------------------------- 57 + 58 + What is the VESA(TM) Coordinated Video Timings (CVT)? 59 + ===================================================== 60 + 61 + From the VESA(TM) Website: 62 + 63 + "The purpose of CVT is to provide a method for generating a consistent 64 + and coordinated set of standard formats, display refresh rates, and 65 + timing specifications for computer display products, both those 66 + employing CRTs, and those using other display technologies. The 67 + intention of CVT is to give both source and display manufacturers a 68 + common set of tools to enable new timings to be developed in a 69 + consistent manner that ensures greater compatibility." 70 + 71 + This is the third standard approved by VESA(TM) concerning video timings. The 72 + first was the Discrete Video Timings (DVT) which is a collection of 73 + pre-defined modes approved by VESA(TM). The second is the Generalized Timing 74 + Formula (GTF) which is an algorithm to calculate the timings, given the 75 + pixelclock, the horizontal sync frequency, or the vertical refresh rate. 76 + 77 + The GTF is limited by the fact that it is designed mainly for CRT displays. 78 + It artificially increases the pixelclock because of its high blanking 79 + requirement. This is inappropriate for digital display interface with its high 80 + data rate which requires that it conserves the pixelclock as much as possible. 81 + Also, GTF does not take into account the aspect ratio of the display. 82 + 83 + The CVT addresses these limitations. If used with CRT's, the formula used 84 + is a derivation of GTF with a few modifications. If used with digital 85 + displays, the "reduced blanking" calculation can be used. 86 + 87 + From the framebuffer subsystem perspective, new formats need not be added 88 + to the global mode database whenever a new mode is released by display 89 + manufacturers. Specifying for CVT will work for most, if not all, relatively 90 + new CRT displays and probably with most flatpanels, if 'reduced blanking' 91 + calculation is specified. (The CVT compatibility of the display can be 92 + determined from its EDID. The version 1.3 of the EDID has extra 128-byte 93 + blocks where additional timing information is placed. As of this time, there 94 + is no support yet in the layer to parse this additional blocks.) 95 + 96 + CVT also introduced a new naming convention (should be seen from dmesg output):: 97 + 98 + <pix>M<a>[-R] 99 + 100 + where: pix = total amount of pixels in MB (xres x yres) 101 + M = always present 102 + a = aspect ratio (3 - 4:3; 4 - 5:4; 9 - 15:9, 16:9; A - 16:10) 103 + -R = reduced blanking 104 + 105 + example: .48M3-R - 800x600 with reduced blanking 106 + 107 + Note: VESA(TM) has restrictions on what is a standard CVT timing: 108 + 109 + - aspect ratio can only be one of the above values 110 + - acceptable refresh rates are 50, 60, 70 or 85 Hz only 111 + - if reduced blanking, the refresh rate must be at 60Hz 112 + 113 + If one of the above are not satisfied, the kernel will print a warning but the 114 + timings will still be calculated. 115 + 116 + ----------------------------------------------------------------------------- 117 + 118 + To find a suitable video mode, you just call:: 119 + 120 + int __init fb_find_mode(struct fb_var_screeninfo *var, 121 + struct fb_info *info, const char *mode_option, 122 + const struct fb_videomode *db, unsigned int dbsize, 123 + const struct fb_videomode *default_mode, 124 + unsigned int default_bpp) 125 + 126 + with db/dbsize your non-standard video mode database, or NULL to use the 127 + standard video mode database. 128 + 129 + fb_find_mode() first tries the specified video mode (or any mode that matches, 130 + e.g. there can be multiple 640x480 modes, each of them is tried). If that 131 + fails, the default mode is tried. If that fails, it walks over all modes. 132 + 133 + To specify a video mode at bootup, use the following boot options:: 134 + 135 + video=<driver>:<xres>x<yres>[-<bpp>][@refresh] 136 + 137 + where <driver> is a name from the table below. Valid default modes can be 138 + found in linux/drivers/video/modedb.c. Check your driver's documentation. 139 + There may be more modes:: 140 + 141 + Drivers that support modedb boot options 142 + Boot Name Cards Supported 143 + 144 + amifb - Amiga chipset frame buffer 145 + aty128fb - ATI Rage128 / Pro frame buffer 146 + atyfb - ATI Mach64 frame buffer 147 + pm2fb - Permedia 2/2V frame buffer 148 + pm3fb - Permedia 3 frame buffer 149 + sstfb - Voodoo 1/2 (SST1) chipset frame buffer 150 + tdfxfb - 3D Fx frame buffer 151 + tridentfb - Trident (Cyber)blade chipset frame buffer 152 + vt8623fb - VIA 8623 frame buffer 153 + 154 + BTW, only a few fb drivers use this at the moment. Others are to follow 155 + (feel free to send patches). The DRM drivers also support this.
-151
Documentation/fb/modedb.txt
··· 1 - 2 - 3 - modedb default video mode support 4 - 5 - 6 - Currently all frame buffer device drivers have their own video mode databases, 7 - which is a mess and a waste of resources. The main idea of modedb is to have 8 - 9 - - one routine to probe for video modes, which can be used by all frame buffer 10 - devices 11 - - one generic video mode database with a fair amount of standard videomodes 12 - (taken from XFree86) 13 - - the possibility to supply your own mode database for graphics hardware that 14 - needs non-standard modes, like amifb and Mac frame buffer drivers (which 15 - use macmodes.c) 16 - 17 - When a frame buffer device receives a video= option it doesn't know, it should 18 - consider that to be a video mode option. If no frame buffer device is specified 19 - in a video= option, fbmem considers that to be a global video mode option. 20 - 21 - Valid mode specifiers (mode_option argument): 22 - 23 - <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd] 24 - <name>[-<bpp>][@<refresh>] 25 - 26 - with <xres>, <yres>, <bpp> and <refresh> decimal numbers and <name> a string. 27 - Things between square brackets are optional. 28 - 29 - If 'M' is specified in the mode_option argument (after <yres> and before 30 - <bpp> and <refresh>, if specified) the timings will be calculated using 31 - VESA(TM) Coordinated Video Timings instead of looking up the mode from a table. 32 - If 'R' is specified, do a 'reduced blanking' calculation for digital displays. 33 - If 'i' is specified, calculate for an interlaced mode. And if 'm' is 34 - specified, add margins to the calculation (1.8% of xres rounded down to 8 35 - pixels and 1.8% of yres). 36 - 37 - Sample usage: 1024x768M@60m - CVT timing with margins 38 - 39 - DRM drivers also add options to enable or disable outputs: 40 - 41 - 'e' will force the display to be enabled, i.e. it will override the detection 42 - if a display is connected. 'D' will force the display to be enabled and use 43 - digital output. This is useful for outputs that have both analog and digital 44 - signals (e.g. HDMI and DVI-I). For other outputs it behaves like 'e'. If 'd' 45 - is specified the output is disabled. 46 - 47 - You can additionally specify which output the options matches to. 48 - To force the VGA output to be enabled and drive a specific mode say: 49 - video=VGA-1:1280x1024@60me 50 - 51 - Specifying the option multiple times for different ports is possible, e.g.: 52 - video=LVDS-1:d video=HDMI-1:D 53 - 54 - ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** 55 - 56 - What is the VESA(TM) Coordinated Video Timings (CVT)? 57 - 58 - From the VESA(TM) Website: 59 - 60 - "The purpose of CVT is to provide a method for generating a consistent 61 - and coordinated set of standard formats, display refresh rates, and 62 - timing specifications for computer display products, both those 63 - employing CRTs, and those using other display technologies. The 64 - intention of CVT is to give both source and display manufacturers a 65 - common set of tools to enable new timings to be developed in a 66 - consistent manner that ensures greater compatibility." 67 - 68 - This is the third standard approved by VESA(TM) concerning video timings. The 69 - first was the Discrete Video Timings (DVT) which is a collection of 70 - pre-defined modes approved by VESA(TM). The second is the Generalized Timing 71 - Formula (GTF) which is an algorithm to calculate the timings, given the 72 - pixelclock, the horizontal sync frequency, or the vertical refresh rate. 73 - 74 - The GTF is limited by the fact that it is designed mainly for CRT displays. 75 - It artificially increases the pixelclock because of its high blanking 76 - requirement. This is inappropriate for digital display interface with its high 77 - data rate which requires that it conserves the pixelclock as much as possible. 78 - Also, GTF does not take into account the aspect ratio of the display. 79 - 80 - The CVT addresses these limitations. If used with CRT's, the formula used 81 - is a derivation of GTF with a few modifications. If used with digital 82 - displays, the "reduced blanking" calculation can be used. 83 - 84 - From the framebuffer subsystem perspective, new formats need not be added 85 - to the global mode database whenever a new mode is released by display 86 - manufacturers. Specifying for CVT will work for most, if not all, relatively 87 - new CRT displays and probably with most flatpanels, if 'reduced blanking' 88 - calculation is specified. (The CVT compatibility of the display can be 89 - determined from its EDID. The version 1.3 of the EDID has extra 128-byte 90 - blocks where additional timing information is placed. As of this time, there 91 - is no support yet in the layer to parse this additional blocks.) 92 - 93 - CVT also introduced a new naming convention (should be seen from dmesg output): 94 - 95 - <pix>M<a>[-R] 96 - 97 - where: pix = total amount of pixels in MB (xres x yres) 98 - M = always present 99 - a = aspect ratio (3 - 4:3; 4 - 5:4; 9 - 15:9, 16:9; A - 16:10) 100 - -R = reduced blanking 101 - 102 - example: .48M3-R - 800x600 with reduced blanking 103 - 104 - Note: VESA(TM) has restrictions on what is a standard CVT timing: 105 - 106 - - aspect ratio can only be one of the above values 107 - - acceptable refresh rates are 50, 60, 70 or 85 Hz only 108 - - if reduced blanking, the refresh rate must be at 60Hz 109 - 110 - If one of the above are not satisfied, the kernel will print a warning but the 111 - timings will still be calculated. 112 - 113 - ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** 114 - 115 - To find a suitable video mode, you just call 116 - 117 - int __init fb_find_mode(struct fb_var_screeninfo *var, 118 - struct fb_info *info, const char *mode_option, 119 - const struct fb_videomode *db, unsigned int dbsize, 120 - const struct fb_videomode *default_mode, 121 - unsigned int default_bpp) 122 - 123 - with db/dbsize your non-standard video mode database, or NULL to use the 124 - standard video mode database. 125 - 126 - fb_find_mode() first tries the specified video mode (or any mode that matches, 127 - e.g. there can be multiple 640x480 modes, each of them is tried). If that 128 - fails, the default mode is tried. If that fails, it walks over all modes. 129 - 130 - To specify a video mode at bootup, use the following boot options: 131 - video=<driver>:<xres>x<yres>[-<bpp>][@refresh] 132 - 133 - where <driver> is a name from the table below. Valid default modes can be 134 - found in linux/drivers/video/modedb.c. Check your driver's documentation. 135 - There may be more modes. 136 - 137 - Drivers that support modedb boot options 138 - Boot Name Cards Supported 139 - 140 - amifb - Amiga chipset frame buffer 141 - aty128fb - ATI Rage128 / Pro frame buffer 142 - atyfb - ATI Mach64 frame buffer 143 - pm2fb - Permedia 2/2V frame buffer 144 - pm3fb - Permedia 3 frame buffer 145 - sstfb - Voodoo 1/2 (SST1) chipset frame buffer 146 - tdfxfb - 3D Fx frame buffer 147 - tridentfb - Trident (Cyber)blade chipset frame buffer 148 - vt8623fb - VIA 8623 frame buffer 149 - 150 - BTW, only a few fb drivers use this at the moment. Others are to follow 151 - (feel free to send patches). The DRM drivers also support this.
+66
Documentation/fb/pvr2fb.rst
··· 1 + =============== 2 + What is pvr2fb? 3 + =============== 4 + 5 + This is a driver for PowerVR 2 based graphics frame buffers, such as the 6 + one found in the Dreamcast. 7 + 8 + Advantages: 9 + 10 + * It provides a nice large console (128 cols + 48 lines with 1024x768) 11 + without using tiny, unreadable fonts (NOT on the Dreamcast) 12 + * You can run XF86_FBDev on top of /dev/fb0 13 + * Most important: boot logo :-) 14 + 15 + Disadvantages: 16 + 17 + * Driver is largely untested on non-Dreamcast systems. 18 + 19 + Configuration 20 + ============= 21 + 22 + You can pass kernel command line options to pvr2fb with 23 + `video=pvr2fb:option1,option2:value2,option3` (multiple options should be 24 + separated by comma, values are separated from options by `:`). 25 + 26 + Accepted options: 27 + 28 + ========== ================================================================== 29 + font:X default font to use. All fonts are supported, including the 30 + SUN12x22 font which is very nice at high resolutions. 31 + 32 + 33 + mode:X default video mode with format [xres]x[yres]-<bpp>@<refresh rate> 34 + The following video modes are supported: 35 + 640x640-16@60, 640x480-24@60, 640x480-32@60. The Dreamcast 36 + defaults to 640x480-16@60. At the time of writing the 37 + 24bpp and 32bpp modes function poorly. Work to fix that is 38 + ongoing 39 + 40 + Note: the 640x240 mode is currently broken, and should not be 41 + used for any reason. It is only mentioned here as a reference. 42 + 43 + inverse invert colors on screen (for LCD displays) 44 + 45 + nomtrr disables write combining on frame buffer. This slows down driver 46 + but there is reported minor incompatibility between GUS DMA and 47 + XFree under high loads if write combining is enabled (sound 48 + dropouts). MTRR is enabled by default on systems that have it 49 + configured and that support it. 50 + 51 + cable:X cable type. This can be any of the following: vga, rgb, and 52 + composite. If none is specified, we guess. 53 + 54 + output:X output type. This can be any of the following: pal, ntsc, and 55 + vga. If none is specified, we guess. 56 + ========== ================================================================== 57 + 58 + X11 59 + === 60 + 61 + XF86_FBDev has been shown to work on the Dreamcast in the past - though not yet 62 + on any 2.6 series kernel. 63 + 64 + Paul Mundt <lethal@linuxdc.org> 65 + 66 + Updated by Adrian McMenamin <adrian@mcmen.demon.co.uk>
-65
Documentation/fb/pvr2fb.txt
··· 1 - $Id: pvr2fb.txt,v 1.1 2001/05/24 05:09:16 mrbrown Exp $ 2 - 3 - What is pvr2fb? 4 - =============== 5 - 6 - This is a driver for PowerVR 2 based graphics frame buffers, such as the 7 - one found in the Dreamcast. 8 - 9 - Advantages: 10 - 11 - * It provides a nice large console (128 cols + 48 lines with 1024x768) 12 - without using tiny, unreadable fonts (NOT on the Dreamcast) 13 - * You can run XF86_FBDev on top of /dev/fb0 14 - * Most important: boot logo :-) 15 - 16 - Disadvantages: 17 - 18 - * Driver is largely untested on non-Dreamcast systems. 19 - 20 - Configuration 21 - ============= 22 - 23 - You can pass kernel command line options to pvr2fb with 24 - `video=pvr2fb:option1,option2:value2,option3' (multiple options should be 25 - separated by comma, values are separated from options by `:'). 26 - Accepted options: 27 - 28 - font:X - default font to use. All fonts are supported, including the 29 - SUN12x22 font which is very nice at high resolutions. 30 - 31 - 32 - mode:X - default video mode with format [xres]x[yres]-<bpp>@<refresh rate> 33 - The following video modes are supported: 34 - 640x640-16@60, 640x480-24@60, 640x480-32@60. The Dreamcast 35 - defaults to 640x480-16@60. At the time of writing the 36 - 24bpp and 32bpp modes function poorly. Work to fix that is 37 - ongoing 38 - 39 - Note: the 640x240 mode is currently broken, and should not be 40 - used for any reason. It is only mentioned here as a reference. 41 - 42 - inverse - invert colors on screen (for LCD displays) 43 - 44 - nomtrr - disables write combining on frame buffer. This slows down driver 45 - but there is reported minor incompatibility between GUS DMA and 46 - XFree under high loads if write combining is enabled (sound 47 - dropouts). MTRR is enabled by default on systems that have it 48 - configured and that support it. 49 - 50 - cable:X - cable type. This can be any of the following: vga, rgb, and 51 - composite. If none is specified, we guess. 52 - 53 - output:X - output type. This can be any of the following: pal, ntsc, and 54 - vga. If none is specified, we guess. 55 - 56 - X11 57 - === 58 - 59 - XF86_FBDev has been shown to work on the Dreamcast in the past - though not yet 60 - on any 2.6 series kernel. 61 - 62 - -- 63 - Paul Mundt <lethal@linuxdc.org> 64 - Updated by Adrian McMenamin <adrian@mcmen.demon.co.uk> 65 -
+173
Documentation/fb/pxafb.rst
··· 1 + ================================ 2 + Driver for PXA25x LCD controller 3 + ================================ 4 + 5 + The driver supports the following options, either via 6 + options=<OPTIONS> when modular or video=pxafb:<OPTIONS> when built in. 7 + 8 + For example:: 9 + 10 + modprobe pxafb options=vmem:2M,mode:640x480-8,passive 11 + 12 + or on the kernel command line:: 13 + 14 + video=pxafb:vmem:2M,mode:640x480-8,passive 15 + 16 + vmem: VIDEO_MEM_SIZE 17 + 18 + Amount of video memory to allocate (can be suffixed with K or M 19 + for kilobytes or megabytes) 20 + 21 + mode:XRESxYRES[-BPP] 22 + 23 + XRES == LCCR1_PPL + 1 24 + 25 + YRES == LLCR2_LPP + 1 26 + 27 + The resolution of the display in pixels 28 + 29 + BPP == The bit depth. Valid values are 1, 2, 4, 8 and 16. 30 + 31 + pixclock:PIXCLOCK 32 + 33 + Pixel clock in picoseconds 34 + 35 + left:LEFT == LCCR1_BLW + 1 36 + 37 + right:RIGHT == LCCR1_ELW + 1 38 + 39 + hsynclen:HSYNC == LCCR1_HSW + 1 40 + 41 + upper:UPPER == LCCR2_BFW 42 + 43 + lower:LOWER == LCCR2_EFR 44 + 45 + vsynclen:VSYNC == LCCR2_VSW + 1 46 + 47 + Display margins and sync times 48 + 49 + color | mono => LCCR0_CMS 50 + 51 + umm... 52 + 53 + active | passive => LCCR0_PAS 54 + 55 + Active (TFT) or Passive (STN) display 56 + 57 + single | dual => LCCR0_SDS 58 + 59 + Single or dual panel passive display 60 + 61 + 4pix | 8pix => LCCR0_DPD 62 + 63 + 4 or 8 pixel monochrome single panel data 64 + 65 + hsync:HSYNC, vsync:VSYNC 66 + 67 + Horizontal and vertical sync. 0 => active low, 1 => active 68 + high. 69 + 70 + dpc:DPC 71 + 72 + Double pixel clock. 1=>true, 0=>false 73 + 74 + outputen:POLARITY 75 + 76 + Output Enable Polarity. 0 => active low, 1 => active high 77 + 78 + pixclockpol:POLARITY 79 + 80 + pixel clock polarity 81 + 0 => falling edge, 1 => rising edge 82 + 83 + 84 + Overlay Support for PXA27x and later LCD controllers 85 + ==================================================== 86 + 87 + PXA27x and later processors support overlay1 and overlay2 on-top of the 88 + base framebuffer (although under-neath the base is also possible). They 89 + support palette and no-palette RGB formats, as well as YUV formats (only 90 + available on overlay2). These overlays have dedicated DMA channels and 91 + behave in a similar way as a framebuffer. 92 + 93 + However, there are some differences between these overlay framebuffers 94 + and normal framebuffers, as listed below: 95 + 96 + 1. overlay can start at a 32-bit word aligned position within the base 97 + framebuffer, which means they have a start (x, y). This information 98 + is encoded into var->nonstd (no, var->xoffset and var->yoffset are 99 + not for such purpose). 100 + 101 + 2. overlay framebuffer is allocated dynamically according to specified 102 + 'struct fb_var_screeninfo', the amount is decided by:: 103 + 104 + var->xres_virtual * var->yres_virtual * bpp 105 + 106 + bpp = 16 -- for RGB565 or RGBT555 107 + 108 + bpp = 24 -- for YUV444 packed 109 + 110 + bpp = 24 -- for YUV444 planar 111 + 112 + bpp = 16 -- for YUV422 planar (1 pixel = 1 Y + 1/2 Cb + 1/2 Cr) 113 + 114 + bpp = 12 -- for YUV420 planar (1 pixel = 1 Y + 1/4 Cb + 1/4 Cr) 115 + 116 + NOTE: 117 + 118 + a. overlay does not support panning in x-direction, thus 119 + var->xres_virtual will always be equal to var->xres 120 + 121 + b. line length of overlay(s) must be on a 32-bit word boundary, 122 + for YUV planar modes, it is a requirement for the component 123 + with minimum bits per pixel, e.g. for YUV420, Cr component 124 + for one pixel is actually 2-bits, it means the line length 125 + should be a multiple of 16-pixels 126 + 127 + c. starting horizontal position (XPOS) should start on a 32-bit 128 + word boundary, otherwise the fb_check_var() will just fail. 129 + 130 + d. the rectangle of the overlay should be within the base plane, 131 + otherwise fail 132 + 133 + Applications should follow the sequence below to operate an overlay 134 + framebuffer: 135 + 136 + a. open("/dev/fb[1-2]", ...) 137 + b. ioctl(fd, FBIOGET_VSCREENINFO, ...) 138 + c. modify 'var' with desired parameters: 139 + 140 + 1) var->xres and var->yres 141 + 2) larger var->yres_virtual if more memory is required, 142 + usually for double-buffering 143 + 3) var->nonstd for starting (x, y) and color format 144 + 4) var->{red, green, blue, transp} if RGB mode is to be used 145 + 146 + d. ioctl(fd, FBIOPUT_VSCREENINFO, ...) 147 + e. ioctl(fd, FBIOGET_FSCREENINFO, ...) 148 + f. mmap 149 + g. ... 150 + 151 + 3. for YUV planar formats, these are actually not supported within the 152 + framebuffer framework, application has to take care of the offsets 153 + and lengths of each component within the framebuffer. 154 + 155 + 4. var->nonstd is used to pass starting (x, y) position and color format, 156 + the detailed bit fields are shown below:: 157 + 158 + 31 23 20 10 0 159 + +-----------------+---+----------+----------+ 160 + | ... unused ... |FOR| XPOS | YPOS | 161 + +-----------------+---+----------+----------+ 162 + 163 + FOR - color format, as defined by OVERLAY_FORMAT_* in pxafb.h 164 + 165 + - 0 - RGB 166 + - 1 - YUV444 PACKED 167 + - 2 - YUV444 PLANAR 168 + - 3 - YUV422 PLANAR 169 + - 4 - YUR420 PLANAR 170 + 171 + XPOS - starting horizontal position 172 + 173 + YPOS - starting vertical position
-142
Documentation/fb/pxafb.txt
··· 1 - Driver for PXA25x LCD controller 2 - ================================ 3 - 4 - The driver supports the following options, either via 5 - options=<OPTIONS> when modular or video=pxafb:<OPTIONS> when built in. 6 - 7 - For example: 8 - modprobe pxafb options=vmem:2M,mode:640x480-8,passive 9 - or on the kernel command line 10 - video=pxafb:vmem:2M,mode:640x480-8,passive 11 - 12 - vmem: VIDEO_MEM_SIZE 13 - Amount of video memory to allocate (can be suffixed with K or M 14 - for kilobytes or megabytes) 15 - 16 - mode:XRESxYRES[-BPP] 17 - XRES == LCCR1_PPL + 1 18 - YRES == LLCR2_LPP + 1 19 - The resolution of the display in pixels 20 - BPP == The bit depth. Valid values are 1, 2, 4, 8 and 16. 21 - 22 - pixclock:PIXCLOCK 23 - Pixel clock in picoseconds 24 - 25 - left:LEFT == LCCR1_BLW + 1 26 - right:RIGHT == LCCR1_ELW + 1 27 - hsynclen:HSYNC == LCCR1_HSW + 1 28 - upper:UPPER == LCCR2_BFW 29 - lower:LOWER == LCCR2_EFR 30 - vsynclen:VSYNC == LCCR2_VSW + 1 31 - Display margins and sync times 32 - 33 - color | mono => LCCR0_CMS 34 - umm... 35 - 36 - active | passive => LCCR0_PAS 37 - Active (TFT) or Passive (STN) display 38 - 39 - single | dual => LCCR0_SDS 40 - Single or dual panel passive display 41 - 42 - 4pix | 8pix => LCCR0_DPD 43 - 4 or 8 pixel monochrome single panel data 44 - 45 - hsync:HSYNC 46 - vsync:VSYNC 47 - Horizontal and vertical sync. 0 => active low, 1 => active 48 - high. 49 - 50 - dpc:DPC 51 - Double pixel clock. 1=>true, 0=>false 52 - 53 - outputen:POLARITY 54 - Output Enable Polarity. 0 => active low, 1 => active high 55 - 56 - pixclockpol:POLARITY 57 - pixel clock polarity 58 - 0 => falling edge, 1 => rising edge 59 - 60 - 61 - Overlay Support for PXA27x and later LCD controllers 62 - ==================================================== 63 - 64 - PXA27x and later processors support overlay1 and overlay2 on-top of the 65 - base framebuffer (although under-neath the base is also possible). They 66 - support palette and no-palette RGB formats, as well as YUV formats (only 67 - available on overlay2). These overlays have dedicated DMA channels and 68 - behave in a similar way as a framebuffer. 69 - 70 - However, there are some differences between these overlay framebuffers 71 - and normal framebuffers, as listed below: 72 - 73 - 1. overlay can start at a 32-bit word aligned position within the base 74 - framebuffer, which means they have a start (x, y). This information 75 - is encoded into var->nonstd (no, var->xoffset and var->yoffset are 76 - not for such purpose). 77 - 78 - 2. overlay framebuffer is allocated dynamically according to specified 79 - 'struct fb_var_screeninfo', the amount is decided by: 80 - 81 - var->xres_virtual * var->yres_virtual * bpp 82 - 83 - bpp = 16 -- for RGB565 or RGBT555 84 - = 24 -- for YUV444 packed 85 - = 24 -- for YUV444 planar 86 - = 16 -- for YUV422 planar (1 pixel = 1 Y + 1/2 Cb + 1/2 Cr) 87 - = 12 -- for YUV420 planar (1 pixel = 1 Y + 1/4 Cb + 1/4 Cr) 88 - 89 - NOTE: 90 - 91 - a. overlay does not support panning in x-direction, thus 92 - var->xres_virtual will always be equal to var->xres 93 - 94 - b. line length of overlay(s) must be on a 32-bit word boundary, 95 - for YUV planar modes, it is a requirement for the component 96 - with minimum bits per pixel, e.g. for YUV420, Cr component 97 - for one pixel is actually 2-bits, it means the line length 98 - should be a multiple of 16-pixels 99 - 100 - c. starting horizontal position (XPOS) should start on a 32-bit 101 - word boundary, otherwise the fb_check_var() will just fail. 102 - 103 - d. the rectangle of the overlay should be within the base plane, 104 - otherwise fail 105 - 106 - Applications should follow the sequence below to operate an overlay 107 - framebuffer: 108 - 109 - a. open("/dev/fb[1-2]", ...) 110 - b. ioctl(fd, FBIOGET_VSCREENINFO, ...) 111 - c. modify 'var' with desired parameters: 112 - 1) var->xres and var->yres 113 - 2) larger var->yres_virtual if more memory is required, 114 - usually for double-buffering 115 - 3) var->nonstd for starting (x, y) and color format 116 - 4) var->{red, green, blue, transp} if RGB mode is to be used 117 - d. ioctl(fd, FBIOPUT_VSCREENINFO, ...) 118 - e. ioctl(fd, FBIOGET_FSCREENINFO, ...) 119 - f. mmap 120 - g. ... 121 - 122 - 3. for YUV planar formats, these are actually not supported within the 123 - framebuffer framework, application has to take care of the offsets 124 - and lengths of each component within the framebuffer. 125 - 126 - 4. var->nonstd is used to pass starting (x, y) position and color format, 127 - the detailed bit fields are shown below: 128 - 129 - 31 23 20 10 0 130 - +-----------------+---+----------+----------+ 131 - | ... unused ... |FOR| XPOS | YPOS | 132 - +-----------------+---+----------+----------+ 133 - 134 - FOR - color format, as defined by OVERLAY_FORMAT_* in pxafb.h 135 - 0 - RGB 136 - 1 - YUV444 PACKED 137 - 2 - YUV444 PLANAR 138 - 3 - YUV422 PLANAR 139 - 4 - YUR420 PLANAR 140 - 141 - XPOS - starting horizontal position 142 - YPOS - starting vertical position
+82
Documentation/fb/s3fb.rst
··· 1 + =========================================== 2 + s3fb - fbdev driver for S3 Trio/Virge chips 3 + =========================================== 4 + 5 + 6 + Supported Hardware 7 + ================== 8 + 9 + S3 Trio32 10 + S3 Trio64 (and variants V+, UV+, V2/DX, V2/GX) 11 + S3 Virge (and variants VX, DX, GX and GX2+) 12 + S3 Plato/PX (completely untested) 13 + S3 Aurora64V+ (completely untested) 14 + 15 + - only PCI bus supported 16 + - only BIOS initialized VGA devices supported 17 + - probably not working on big endian 18 + 19 + I tested s3fb on Trio64 (plain, V+ and V2/DX) and Virge (plain, VX, DX), 20 + all on i386. 21 + 22 + 23 + Supported Features 24 + ================== 25 + 26 + * 4 bpp pseudocolor modes (with 18bit palette, two variants) 27 + * 8 bpp pseudocolor mode (with 18bit palette) 28 + * 16 bpp truecolor modes (RGB 555 and RGB 565) 29 + * 24 bpp truecolor mode (RGB 888) on (only on Virge VX) 30 + * 32 bpp truecolor mode (RGB 888) on (not on Virge VX) 31 + * text mode (activated by bpp = 0) 32 + * interlaced mode variant (not available in text mode) 33 + * doublescan mode variant (not available in text mode) 34 + * panning in both directions 35 + * suspend/resume support 36 + * DPMS support 37 + 38 + Text mode is supported even in higher resolutions, but there is limitation to 39 + lower pixclocks (maximum usually between 50-60 MHz, depending on specific 40 + hardware, i get best results from plain S3 Trio32 card - about 75 MHz). This 41 + limitation is not enforced by driver. Text mode supports 8bit wide fonts only 42 + (hardware limitation) and 16bit tall fonts (driver limitation). Text mode 43 + support is broken on S3 Trio64 V2/DX. 44 + 45 + There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with 46 + packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode 47 + with interleaved planes (1 byte interleave), MSB first. Both modes support 48 + 8bit wide fonts only (driver limitation). 49 + 50 + Suspend/resume works on systems that initialize video card during resume and 51 + if device is active (for example used by fbcon). 52 + 53 + 54 + Missing Features 55 + ================ 56 + (alias TODO list) 57 + 58 + * secondary (not initialized by BIOS) device support 59 + * big endian support 60 + * Zorro bus support 61 + * MMIO support 62 + * 24 bpp mode support on more cards 63 + * support for fontwidths != 8 in 4 bpp modes 64 + * support for fontheight != 16 in text mode 65 + * composite and external sync (is anyone able to test this?) 66 + * hardware cursor 67 + * video overlay support 68 + * vsync synchronization 69 + * feature connector support 70 + * acceleration support (8514-like 2D, Virge 3D, busmaster transfers) 71 + * better values for some magic registers (performance issues) 72 + 73 + 74 + Known bugs 75 + ========== 76 + 77 + * cursor disable in text mode doesn't work 78 + * text mode broken on S3 Trio64 V2/DX 79 + 80 + 81 + -- 82 + Ondrej Zajicek <santiago@crfreenet.org>
-82
Documentation/fb/s3fb.txt
··· 1 - 2 - s3fb - fbdev driver for S3 Trio/Virge chips 3 - =========================================== 4 - 5 - 6 - Supported Hardware 7 - ================== 8 - 9 - S3 Trio32 10 - S3 Trio64 (and variants V+, UV+, V2/DX, V2/GX) 11 - S3 Virge (and variants VX, DX, GX and GX2+) 12 - S3 Plato/PX (completely untested) 13 - S3 Aurora64V+ (completely untested) 14 - 15 - - only PCI bus supported 16 - - only BIOS initialized VGA devices supported 17 - - probably not working on big endian 18 - 19 - I tested s3fb on Trio64 (plain, V+ and V2/DX) and Virge (plain, VX, DX), 20 - all on i386. 21 - 22 - 23 - Supported Features 24 - ================== 25 - 26 - * 4 bpp pseudocolor modes (with 18bit palette, two variants) 27 - * 8 bpp pseudocolor mode (with 18bit palette) 28 - * 16 bpp truecolor modes (RGB 555 and RGB 565) 29 - * 24 bpp truecolor mode (RGB 888) on (only on Virge VX) 30 - * 32 bpp truecolor mode (RGB 888) on (not on Virge VX) 31 - * text mode (activated by bpp = 0) 32 - * interlaced mode variant (not available in text mode) 33 - * doublescan mode variant (not available in text mode) 34 - * panning in both directions 35 - * suspend/resume support 36 - * DPMS support 37 - 38 - Text mode is supported even in higher resolutions, but there is limitation to 39 - lower pixclocks (maximum usually between 50-60 MHz, depending on specific 40 - hardware, i get best results from plain S3 Trio32 card - about 75 MHz). This 41 - limitation is not enforced by driver. Text mode supports 8bit wide fonts only 42 - (hardware limitation) and 16bit tall fonts (driver limitation). Text mode 43 - support is broken on S3 Trio64 V2/DX. 44 - 45 - There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with 46 - packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode 47 - with interleaved planes (1 byte interleave), MSB first. Both modes support 48 - 8bit wide fonts only (driver limitation). 49 - 50 - Suspend/resume works on systems that initialize video card during resume and 51 - if device is active (for example used by fbcon). 52 - 53 - 54 - Missing Features 55 - ================ 56 - (alias TODO list) 57 - 58 - * secondary (not initialized by BIOS) device support 59 - * big endian support 60 - * Zorro bus support 61 - * MMIO support 62 - * 24 bpp mode support on more cards 63 - * support for fontwidths != 8 in 4 bpp modes 64 - * support for fontheight != 16 in text mode 65 - * composite and external sync (is anyone able to test this?) 66 - * hardware cursor 67 - * video overlay support 68 - * vsync synchronization 69 - * feature connector support 70 - * acceleration support (8514-like 2D, Virge 3D, busmaster transfers) 71 - * better values for some magic registers (performance issues) 72 - 73 - 74 - Known bugs 75 - ========== 76 - 77 - * cursor disable in text mode doesn't work 78 - * text mode broken on S3 Trio64 V2/DX 79 - 80 - 81 - -- 82 - Ondrej Zajicek <santiago@crfreenet.org>
+40
Documentation/fb/sa1100fb.rst
··· 1 + ================= 2 + What is sa1100fb? 3 + ================= 4 + 5 + .. [This file is cloned from VesaFB/matroxfb] 6 + 7 + 8 + This is a driver for a graphic framebuffer for the SA-1100 LCD 9 + controller. 10 + 11 + Configuration 12 + ============== 13 + 14 + For most common passive displays, giving the option:: 15 + 16 + video=sa1100fb:bpp:<value>,lccr0:<value>,lccr1:<value>,lccr2:<value>,lccr3:<value> 17 + 18 + on the kernel command line should be enough to configure the 19 + controller. The bits per pixel (bpp) value should be 4, 8, 12, or 20 + 16. LCCR values are display-specific and should be computed as 21 + documented in the SA-1100 Developer's Manual, Section 11.7. Dual-panel 22 + displays are supported as long as the SDS bit is set in LCCR0; GPIO<9:2> 23 + are used for the lower panel. 24 + 25 + For active displays or displays requiring additional configuration 26 + (controlling backlights, powering on the LCD, etc.), the command line 27 + options may not be enough to configure the display. Adding sections to 28 + sa1100fb_init_fbinfo(), sa1100fb_activate_var(), 29 + sa1100fb_disable_lcd_controller(), and sa1100fb_enable_lcd_controller() 30 + will probably be necessary. 31 + 32 + Accepted options:: 33 + 34 + bpp:<value> Configure for <value> bits per pixel 35 + lccr0:<value> Configure LCD control register 0 (11.7.3) 36 + lccr1:<value> Configure LCD control register 1 (11.7.4) 37 + lccr2:<value> Configure LCD control register 2 (11.7.5) 38 + lccr3:<value> Configure LCD control register 3 (11.7.6) 39 + 40 + Mark Huang <mhuang@livetoy.com>
-39
Documentation/fb/sa1100fb.txt
··· 1 - [This file is cloned from VesaFB/matroxfb] 2 - 3 - What is sa1100fb? 4 - ================= 5 - 6 - This is a driver for a graphic framebuffer for the SA-1100 LCD 7 - controller. 8 - 9 - Configuration 10 - ============== 11 - 12 - For most common passive displays, giving the option 13 - 14 - video=sa1100fb:bpp:<value>,lccr0:<value>,lccr1:<value>,lccr2:<value>,lccr3:<value> 15 - 16 - on the kernel command line should be enough to configure the 17 - controller. The bits per pixel (bpp) value should be 4, 8, 12, or 18 - 16. LCCR values are display-specific and should be computed as 19 - documented in the SA-1100 Developer's Manual, Section 11.7. Dual-panel 20 - displays are supported as long as the SDS bit is set in LCCR0; GPIO<9:2> 21 - are used for the lower panel. 22 - 23 - For active displays or displays requiring additional configuration 24 - (controlling backlights, powering on the LCD, etc.), the command line 25 - options may not be enough to configure the display. Adding sections to 26 - sa1100fb_init_fbinfo(), sa1100fb_activate_var(), 27 - sa1100fb_disable_lcd_controller(), and sa1100fb_enable_lcd_controller() 28 - will probably be necessary. 29 - 30 - Accepted options: 31 - 32 - bpp:<value> Configure for <value> bits per pixel 33 - lccr0:<value> Configure LCD control register 0 (11.7.3) 34 - lccr1:<value> Configure LCD control register 1 (11.7.4) 35 - lccr2:<value> Configure LCD control register 2 (11.7.5) 36 - lccr3:<value> Configure LCD control register 3 (11.7.6) 37 - 38 - -- 39 - Mark Huang <mhuang@livetoy.com>
+130
Documentation/fb/sh7760fb.rst
··· 1 + ================================================ 2 + SH7760/SH7763 integrated LCDC Framebuffer driver 3 + ================================================ 4 + 5 + 0. Overview 6 + ----------- 7 + The SH7760/SH7763 have an integrated LCD Display controller (LCDC) which 8 + supports (in theory) resolutions ranging from 1x1 to 1024x1024, 9 + with color depths ranging from 1 to 16 bits, on STN, DSTN and TFT Panels. 10 + 11 + Caveats: 12 + 13 + * Framebuffer memory must be a large chunk allocated at the top 14 + of Area3 (HW requirement). Because of this requirement you should NOT 15 + make the driver a module since at runtime it may become impossible to 16 + get a large enough contiguous chunk of memory. 17 + 18 + * The driver does not support changing resolution while loaded 19 + (displays aren't hotpluggable anyway) 20 + 21 + * Heavy flickering may be observed 22 + a) if you're using 15/16bit color modes at >= 640x480 px resolutions, 23 + b) during PCMCIA (or any other slow bus) activity. 24 + 25 + * Rotation works only 90degress clockwise, and only if horizontal 26 + resolution is <= 320 pixels. 27 + 28 + Files: 29 + - drivers/video/sh7760fb.c 30 + - include/asm-sh/sh7760fb.h 31 + - Documentation/fb/sh7760fb.rst 32 + 33 + 1. Platform setup 34 + ----------------- 35 + SH7760: 36 + Video data is fetched via the DMABRG DMA engine, so you have to 37 + configure the SH DMAC for DMABRG mode (write 0x94808080 to the 38 + DMARSRA register somewhere at boot). 39 + 40 + PFC registers PCCR and PCDR must be set to peripheral mode. 41 + (write zeros to both). 42 + 43 + The driver does NOT do the above for you since board setup is, well, job 44 + of the board setup code. 45 + 46 + 2. Panel definitions 47 + -------------------- 48 + The LCDC must explicitly be told about the type of LCD panel 49 + attached. Data must be wrapped in a "struct sh7760fb_platdata" and 50 + passed to the driver as platform_data. 51 + 52 + Suggest you take a closer look at the SH7760 Manual, Section 30. 53 + (http://documentation.renesas.com/eng/products/mpumcu/e602291_sh7760.pdf) 54 + 55 + The following code illustrates what needs to be done to 56 + get the framebuffer working on a 640x480 TFT:: 57 + 58 + #include <linux/fb.h> 59 + #include <asm/sh7760fb.h> 60 + 61 + /* 62 + * NEC NL6440bc26-01 640x480 TFT 63 + * dotclock 25175 kHz 64 + * Xres 640 Yres 480 65 + * Htotal 800 Vtotal 525 66 + * HsynStart 656 VsynStart 490 67 + * HsynLenn 30 VsynLenn 2 68 + * 69 + * The linux framebuffer layer does not use the syncstart/synclen 70 + * values but right/left/upper/lower margin values. The comments 71 + * for the x_margin explain how to calculate those from given 72 + * panel sync timings. 73 + */ 74 + static struct fb_videomode nl6448bc26 = { 75 + .name = "NL6448BC26", 76 + .refresh = 60, 77 + .xres = 640, 78 + .yres = 480, 79 + .pixclock = 39683, /* in picoseconds! */ 80 + .hsync_len = 30, 81 + .vsync_len = 2, 82 + .left_margin = 114, /* HTOT - (HSYNSLEN + HSYNSTART) */ 83 + .right_margin = 16, /* HSYNSTART - XRES */ 84 + .upper_margin = 33, /* VTOT - (VSYNLEN + VSYNSTART) */ 85 + .lower_margin = 10, /* VSYNSTART - YRES */ 86 + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 87 + .vmode = FB_VMODE_NONINTERLACED, 88 + .flag = 0, 89 + }; 90 + 91 + static struct sh7760fb_platdata sh7760fb_nl6448 = { 92 + .def_mode = &nl6448bc26, 93 + .ldmtr = LDMTR_TFT_COLOR_16, /* 16bit TFT panel */ 94 + .lddfr = LDDFR_8BPP, /* we want 8bit output */ 95 + .ldpmmr = 0x0070, 96 + .ldpspr = 0x0500, 97 + .ldaclnr = 0, 98 + .ldickr = LDICKR_CLKSRC(LCDC_CLKSRC_EXTERNAL) | 99 + LDICKR_CLKDIV(1), 100 + .rotate = 0, 101 + .novsync = 1, 102 + .blank = NULL, 103 + }; 104 + 105 + /* SH7760: 106 + * 0xFE300800: 256 * 4byte xRGB palette ram 107 + * 0xFE300C00: 42 bytes ctrl registers 108 + */ 109 + static struct resource sh7760_lcdc_res[] = { 110 + [0] = { 111 + .start = 0xFE300800, 112 + .end = 0xFE300CFF, 113 + .flags = IORESOURCE_MEM, 114 + }, 115 + [1] = { 116 + .start = 65, 117 + .end = 65, 118 + .flags = IORESOURCE_IRQ, 119 + }, 120 + }; 121 + 122 + static struct platform_device sh7760_lcdc_dev = { 123 + .dev = { 124 + .platform_data = &sh7760fb_nl6448, 125 + }, 126 + .name = "sh7760-lcdc", 127 + .id = -1, 128 + .resource = sh7760_lcdc_res, 129 + .num_resources = ARRAY_SIZE(sh7760_lcdc_res), 130 + };
-131
Documentation/fb/sh7760fb.txt
··· 1 - SH7760/SH7763 integrated LCDC Framebuffer driver 2 - ================================================ 3 - 4 - 0. Overview 5 - ----------- 6 - The SH7760/SH7763 have an integrated LCD Display controller (LCDC) which 7 - supports (in theory) resolutions ranging from 1x1 to 1024x1024, 8 - with color depths ranging from 1 to 16 bits, on STN, DSTN and TFT Panels. 9 - 10 - Caveats: 11 - * Framebuffer memory must be a large chunk allocated at the top 12 - of Area3 (HW requirement). Because of this requirement you should NOT 13 - make the driver a module since at runtime it may become impossible to 14 - get a large enough contiguous chunk of memory. 15 - 16 - * The driver does not support changing resolution while loaded 17 - (displays aren't hotpluggable anyway) 18 - 19 - * Heavy flickering may be observed 20 - a) if you're using 15/16bit color modes at >= 640x480 px resolutions, 21 - b) during PCMCIA (or any other slow bus) activity. 22 - 23 - * Rotation works only 90degress clockwise, and only if horizontal 24 - resolution is <= 320 pixels. 25 - 26 - files: drivers/video/sh7760fb.c 27 - include/asm-sh/sh7760fb.h 28 - Documentation/fb/sh7760fb.txt 29 - 30 - 1. Platform setup 31 - ----------------- 32 - SH7760: 33 - Video data is fetched via the DMABRG DMA engine, so you have to 34 - configure the SH DMAC for DMABRG mode (write 0x94808080 to the 35 - DMARSRA register somewhere at boot). 36 - 37 - PFC registers PCCR and PCDR must be set to peripheral mode. 38 - (write zeros to both). 39 - 40 - The driver does NOT do the above for you since board setup is, well, job 41 - of the board setup code. 42 - 43 - 2. Panel definitions 44 - -------------------- 45 - The LCDC must explicitly be told about the type of LCD panel 46 - attached. Data must be wrapped in a "struct sh7760fb_platdata" and 47 - passed to the driver as platform_data. 48 - 49 - Suggest you take a closer look at the SH7760 Manual, Section 30. 50 - (http://documentation.renesas.com/eng/products/mpumcu/e602291_sh7760.pdf) 51 - 52 - The following code illustrates what needs to be done to 53 - get the framebuffer working on a 640x480 TFT: 54 - 55 - ====================== cut here ====================================== 56 - 57 - #include <linux/fb.h> 58 - #include <asm/sh7760fb.h> 59 - 60 - /* 61 - * NEC NL6440bc26-01 640x480 TFT 62 - * dotclock 25175 kHz 63 - * Xres 640 Yres 480 64 - * Htotal 800 Vtotal 525 65 - * HsynStart 656 VsynStart 490 66 - * HsynLenn 30 VsynLenn 2 67 - * 68 - * The linux framebuffer layer does not use the syncstart/synclen 69 - * values but right/left/upper/lower margin values. The comments 70 - * for the x_margin explain how to calculate those from given 71 - * panel sync timings. 72 - */ 73 - static struct fb_videomode nl6448bc26 = { 74 - .name = "NL6448BC26", 75 - .refresh = 60, 76 - .xres = 640, 77 - .yres = 480, 78 - .pixclock = 39683, /* in picoseconds! */ 79 - .hsync_len = 30, 80 - .vsync_len = 2, 81 - .left_margin = 114, /* HTOT - (HSYNSLEN + HSYNSTART) */ 82 - .right_margin = 16, /* HSYNSTART - XRES */ 83 - .upper_margin = 33, /* VTOT - (VSYNLEN + VSYNSTART) */ 84 - .lower_margin = 10, /* VSYNSTART - YRES */ 85 - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 86 - .vmode = FB_VMODE_NONINTERLACED, 87 - .flag = 0, 88 - }; 89 - 90 - static struct sh7760fb_platdata sh7760fb_nl6448 = { 91 - .def_mode = &nl6448bc26, 92 - .ldmtr = LDMTR_TFT_COLOR_16, /* 16bit TFT panel */ 93 - .lddfr = LDDFR_8BPP, /* we want 8bit output */ 94 - .ldpmmr = 0x0070, 95 - .ldpspr = 0x0500, 96 - .ldaclnr = 0, 97 - .ldickr = LDICKR_CLKSRC(LCDC_CLKSRC_EXTERNAL) | 98 - LDICKR_CLKDIV(1), 99 - .rotate = 0, 100 - .novsync = 1, 101 - .blank = NULL, 102 - }; 103 - 104 - /* SH7760: 105 - * 0xFE300800: 256 * 4byte xRGB palette ram 106 - * 0xFE300C00: 42 bytes ctrl registers 107 - */ 108 - static struct resource sh7760_lcdc_res[] = { 109 - [0] = { 110 - .start = 0xFE300800, 111 - .end = 0xFE300CFF, 112 - .flags = IORESOURCE_MEM, 113 - }, 114 - [1] = { 115 - .start = 65, 116 - .end = 65, 117 - .flags = IORESOURCE_IRQ, 118 - }, 119 - }; 120 - 121 - static struct platform_device sh7760_lcdc_dev = { 122 - .dev = { 123 - .platform_data = &sh7760fb_nl6448, 124 - }, 125 - .name = "sh7760-lcdc", 126 - .id = -1, 127 - .resource = sh7760_lcdc_res, 128 - .num_resources = ARRAY_SIZE(sh7760_lcdc_res), 129 - }; 130 - 131 - ====================== cut here ======================================
+160
Documentation/fb/sisfb.rst
··· 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 75 + a parameter in one of the following formats: 76 + 77 + - XxYxDepth or 78 + - XxY-Depth or 79 + - XxY-Depth@Rate or 80 + - XxY 81 + - or simply use the VESA mode number in hexadecimal or decimal. 82 + 83 + For example: 1024x768x16, 1024x768-16@75, 1280x1024-16. If no depth is 84 + specified, it defaults to 8. If no rate is given, it defaults to 60Hz. Depth 32 85 + means 24bit color depth (but 32 bit framebuffer depth, which is not relevant 86 + to the user). 87 + 88 + Additionally, sisfb understands the keyword "vesa" followed by a VESA mode 89 + number in decimal or hexadecimal. For example: vesa=791 or vesa=0x117. Please 90 + use either "mode" or "vesa" but not both. 91 + 92 + Linux 2.4 only: If no mode is given, sisfb defaults to "no mode" (mode=none) if 93 + compiled as a module; if sisfb is statically compiled into the kernel, it 94 + defaults to 800x600x8 unless CRT2 type is LCD, in which case the LCD's native 95 + resolution is used. If you want to switch to a different mode, use the fbset 96 + shell command. 97 + 98 + Linux 2.6 only: If no mode is given, sisfb defaults to 800x600x8 unless CRT2 99 + type is LCD, in which case it defaults to the LCD's native resolution. If 100 + you want to switch to another mode, use the stty shell command. 101 + 102 + You should compile in both vgacon (to boot if you remove you SiS card from 103 + your system) and sisfb (for graphics mode). Under Linux 2.6, also "Framebuffer 104 + console support" (fbcon) is needed for a graphical console. 105 + 106 + You should *not* compile-in vesafb. And please do not use the "vga=" keyword 107 + in lilo's or grub's configuration file; mode selection is done using the 108 + "mode" or "vesa" keywords as a parameter. See above and below. 109 + 110 + 111 + X11 112 + === 113 + 114 + If using XFree86 or X.org, it is recommended that you don't use the "fbdev" 115 + driver but the dedicated "sis" X driver. The "sis" X driver and sisfb are 116 + developed by the same person (Thomas Winischhofer) and cooperate well with 117 + each other. 118 + 119 + 120 + SVGALib 121 + ======= 122 + 123 + SVGALib, if directly accessing the hardware, never restores the screen 124 + correctly, especially on laptops or if the output devices are LCD or TV. 125 + Therefore, use the chipset "FBDEV" in SVGALib configuration. This will make 126 + SVGALib use the framebuffer device for mode switches and restoration. 127 + 128 + 129 + Configuration 130 + ============= 131 + 132 + (Some) accepted options: 133 + 134 + ========= ================================================================== 135 + off Disable sisfb. This option is only understood if sisfb is 136 + in-kernel, not a module. 137 + mem:X size of memory for the console, rest will be used for DRI/DRM. X 138 + is in kilobytes. On 300 series, the default is 4096, 8192 or 139 + 16384 (each in kilobyte) depending on how much video ram the card 140 + has. On 315/330 series, the default is the maximum available ram 141 + (since DRI/DRM is not supported for these chipsets). 142 + noaccel do not use 2D acceleration engine. (Default: use acceleration) 143 + noypan disable y-panning and scroll by redrawing the entire screen. 144 + This is much slower than y-panning. (Default: use y-panning) 145 + vesa:X selects startup videomode. X is number from 0 to 0x1FF and 146 + represents the VESA mode number (can be given in decimal or 147 + hexadecimal form, the latter prefixed with "0x"). 148 + mode:X selects startup videomode. Please see above for the format of 149 + "X". 150 + ========= ================================================================== 151 + 152 + Boolean options such as "noaccel" or "noypan" are to be given without a 153 + parameter if sisfb is in-kernel (for example "video=sisfb:noypan). If 154 + sisfb is a module, these are to be set to 1 (for example "modprobe sisfb 155 + noypan=1"). 156 + 157 + 158 + Thomas Winischhofer <thomas@winischhofer.net> 159 + 160 + May 27, 2004
-158
Documentation/fb/sisfb.txt
··· 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 75 - a parameter in one of the following formats: 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 -
+15
Documentation/fb/sm501.rst
··· 1 + ======= 2 + sm501fb 3 + ======= 4 + 5 + Configuration: 6 + 7 + You can pass the following kernel command line options to sm501 8 + videoframebuffer:: 9 + 10 + sm501fb.bpp= SM501 Display driver: 11 + Specify bits-per-pixel if not specified by 'mode' 12 + 13 + sm501fb.mode= SM501 Display driver: 14 + Specify resolution as 15 + "<xres>x<yres>[-<bpp>][@<refresh>]"
-10
Documentation/fb/sm501.txt
··· 1 - Configuration: 2 - 3 - You can pass the following kernel command line options to sm501 videoframebuffer: 4 - 5 - sm501fb.bpp= SM501 Display driver: 6 - Specify bits-per-pixel if not specified by 'mode' 7 - 8 - sm501fb.mode= SM501 Display driver: 9 - Specify resolution as 10 - "<xres>x<yres>[-<bpp>][@<refresh>]"
+35
Documentation/fb/sm712fb.rst
··· 1 + ================ 2 + What is sm712fb? 3 + ================ 4 + 5 + This is a graphics framebuffer driver for Silicon Motion SM712 based processors. 6 + 7 + How to use it? 8 + ============== 9 + 10 + Switching modes is done using the video=sm712fb:... boot parameter. 11 + 12 + If you want, for example, enable a resolution of 1280x1024x24bpp you should 13 + pass to the kernel this command line: "video=sm712fb:0x31B". 14 + 15 + You should not compile-in vesafb. 16 + 17 + Currently supported video modes are: 18 + 19 + Graphic modes 20 + ------------- 21 + 22 + === ======= ======= ======== ========= 23 + bpp 640x480 800x600 1024x768 1280x1024 24 + === ======= ======= ======== ========= 25 + 8 0x301 0x303 0x305 0x307 26 + 16 0x311 0x314 0x317 0x31A 27 + 24 0x312 0x315 0x318 0x31B 28 + === ======= ======= ======== ========= 29 + 30 + Missing Features 31 + ================ 32 + (alias TODO list) 33 + 34 + * 2D acceleratrion 35 + * dual-head support
-31
Documentation/fb/sm712fb.txt
··· 1 - What is sm712fb? 2 - ================= 3 - 4 - This is a graphics framebuffer driver for Silicon Motion SM712 based processors. 5 - 6 - How to use it? 7 - ============== 8 - 9 - Switching modes is done using the video=sm712fb:... boot parameter. 10 - 11 - If you want, for example, enable a resolution of 1280x1024x24bpp you should 12 - pass to the kernel this command line: "video=sm712fb:0x31B". 13 - 14 - You should not compile-in vesafb. 15 - 16 - Currently supported video modes are: 17 - 18 - [Graphic modes] 19 - 20 - bpp | 640x480 800x600 1024x768 1280x1024 21 - ----+-------------------------------------------- 22 - 8 | 0x301 0x303 0x305 0x307 23 - 16 | 0x311 0x314 0x317 0x31A 24 - 24 | 0x312 0x315 0x318 0x31B 25 - 26 - Missing Features 27 - ================ 28 - (alias TODO list) 29 - 30 - * 2D acceleratrion 31 - * dual-head support
+207
Documentation/fb/sstfb.rst
··· 1 + ===== 2 + sstfb 3 + ===== 4 + 5 + Introduction 6 + ============ 7 + 8 + This is a frame buffer device driver for 3dfx' Voodoo Graphics 9 + (aka voodoo 1, aka sst1) and Voodoo² (aka Voodoo 2, aka CVG) based 10 + video boards. It's highly experimental code, but is guaranteed to work 11 + on my computer, with my "Maxi Gamer 3D" and "Maxi Gamer 3d²" boards, 12 + and with me "between chair and keyboard". Some people tested other 13 + combinations and it seems that it works. 14 + The main page is located at <http://sstfb.sourceforge.net>, and if 15 + you want the latest version, check out the CVS, as the driver is a work 16 + in progress, I feel uncomfortable with releasing tarballs of something 17 + not completely working...Don't worry, it's still more than usable 18 + (I eat my own dog food) 19 + 20 + Please read the Bug section, and report any success or failure to me 21 + (Ghozlane Toumi <gtoumi@laposte.net>). 22 + BTW, If you have only one monitor , and you don't feel like playing 23 + with the vga passthrou cable, I can only suggest borrowing a screen 24 + somewhere... 25 + 26 + 27 + Installation 28 + ============ 29 + 30 + This driver (should) work on ix86, with "late" 2.2.x kernel (tested 31 + with x = 19) and "recent" 2.4.x kernel, as a module or compiled in. 32 + It has been included in mainstream kernel since the infamous 2.4.10. 33 + You can apply the patches found in `sstfb/kernel/*-2.{2|4}.x.patch`, 34 + and copy sstfb.c to linux/drivers/video/, or apply a single patch, 35 + `sstfb/patch-2.{2|4}.x-sstfb-yymmdd` to your linux source tree. 36 + 37 + Then configure your kernel as usual: choose "m" or "y" to 3Dfx Voodoo 38 + Graphics in section "console". Compile, install, have fun... and please 39 + drop me a report :) 40 + 41 + 42 + Module Usage 43 + ============ 44 + 45 + .. warning:: 46 + 47 + #. You should read completely this section before issuing any command. 48 + 49 + #. If you have only one monitor to play with, once you insmod the 50 + module, the 3dfx takes control of the output, so you'll have to 51 + plug the monitor to the "normal" video board in order to issue 52 + the commands, or you can blindly use sst_dbg_vgapass 53 + in the tools directory (See Tools). The latest solution is pass the 54 + parameter vgapass=1 when insmodding the driver. (See Kernel/Modules 55 + Options) 56 + 57 + Module insertion 58 + ---------------- 59 + 60 + #. insmod sstfb.o 61 + 62 + you should see some strange output from the board: 63 + a big blue square, a green and a red small squares and a vertical 64 + white rectangle. why? the function's name is self-explanatory: 65 + "sstfb_test()"... 66 + (if you don't have a second monitor, you'll have to plug your monitor 67 + directly to the 2D videocard to see what you're typing) 68 + 69 + #. con2fb /dev/fbx /dev/ttyx 70 + 71 + bind a tty to the new frame buffer. if you already have a frame 72 + buffer driver, the voodoo fb will likely be /dev/fb1. if not, 73 + the device will be /dev/fb0. You can check this by doing a 74 + cat /proc/fb. You can find a copy of con2fb in tools/ directory. 75 + if you don't have another fb device, this step is superfluous, 76 + as the console subsystem automagicaly binds ttys to the fb. 77 + #. switch to the virtual console you just mapped. "tadaaa" ... 78 + 79 + Module removal 80 + -------------- 81 + 82 + #. con2fb /dev/fbx /dev/ttyx 83 + 84 + bind the tty to the old frame buffer so the module can be removed. 85 + (how does it work with vgacon ? short answer : it doesn't work) 86 + 87 + #. rmmod sstfb 88 + 89 + 90 + Kernel/Modules Options 91 + ---------------------- 92 + 93 + You can pass some options to the sstfb module, and via the kernel 94 + command line when the driver is compiled in: 95 + for module : insmod sstfb.o option1=value1 option2=value2 ... 96 + in kernel : video=sstfb:option1,option2:value2,option3 ... 97 + 98 + sstfb supports the following options: 99 + 100 + =============== =============== =============================================== 101 + Module Kernel Description 102 + =============== =============== =============================================== 103 + vgapass=0 vganopass Enable or disable VGA passthrou cable. 104 + vgapass=1 vgapass When enabled, the monitor will get the signal 105 + from the VGA board and not from the voodoo. 106 + 107 + Default: nopass 108 + 109 + mem=x mem:x Force frame buffer memory in MiB 110 + allowed values: 0, 1, 2, 4. 111 + 112 + Default: 0 (= autodetect) 113 + 114 + inverse=1 inverse Supposed to enable inverse console. 115 + doesn't work yet... 116 + 117 + clipping=1 clipping Enable or disable clipping. 118 + clipping=0 noclipping With clipping enabled, all offscreen 119 + reads and writes are discarded. 120 + 121 + Default: enable clipping. 122 + 123 + gfxclk=x gfxclk:x Force graphic clock frequency (in MHz). 124 + Be careful with this option, it may be 125 + DANGEROUS. 126 + 127 + Default: auto 128 + 129 + - 50Mhz for Voodoo 1, 130 + - 75MHz for Voodoo 2. 131 + 132 + slowpci=1 fastpci Enable or disable fast PCI read/writes. 133 + slowpci=1 slowpci Default : fastpci 134 + 135 + dev=x dev:x Attach the driver to device number x. 136 + 0 is the first compatible board (in 137 + lspci order) 138 + =============== =============== =============================================== 139 + 140 + Tools 141 + ===== 142 + 143 + These tools are mostly for debugging purposes, but you can 144 + find some of these interesting: 145 + 146 + - `con2fb`, maps a tty to a fbramebuffer:: 147 + 148 + con2fb /dev/fb1 /dev/tty5 149 + 150 + - `sst_dbg_vgapass`, changes vga passthrou. You have to recompile the 151 + driver with SST_DEBUG and SST_DEBUG_IOCTL set to 1:: 152 + 153 + sst_dbg_vgapass /dev/fb1 1 (enables vga cable) 154 + sst_dbg_vgapass /dev/fb1 0 (disables vga cable) 155 + 156 + - `glide_reset`, resets the voodoo using glide 157 + use this after rmmoding sstfb, if the module refuses to 158 + reinsert. 159 + 160 + Bugs 161 + ==== 162 + 163 + - DO NOT use glide while the sstfb module is in, you'll most likely 164 + hang your computer. 165 + - If you see some artefacts (pixels not cleaning and stuff like that), 166 + try turning off clipping (clipping=0), and/or using slowpci 167 + - the driver don't detect the 4Mb frame buffer voodoos, it seems that 168 + the 2 last Mbs wrap around. looking into that . 169 + - The driver is 16 bpp only, 24/32 won't work. 170 + - The driver is not your_favorite_toy-safe. this includes SMP... 171 + 172 + [Actually from inspection it seems to be safe - Alan] 173 + 174 + - When using XFree86 FBdev (X over fbdev) you may see strange color 175 + patterns at the border of your windows (the pixels lose the lowest 176 + byte -> basically the blue component and some of the green). I'm unable 177 + to reproduce this with XFree86-3.3, but one of the testers has this 178 + problem with XFree86-4. Apparently recent Xfree86-4.x solve this 179 + problem. 180 + - I didn't really test changing the palette, so you may find some weird 181 + things when playing with that. 182 + - Sometimes the driver will not recognise the DAC, and the 183 + initialisation will fail. This is specifically true for 184 + voodoo 2 boards, but it should be solved in recent versions. Please 185 + contact me. 186 + - The 24/32 is not likely to work anytime soon, knowing that the 187 + hardware does ... unusual things in 24/32 bpp. 188 + - When used with another video board, current limitations of the linux 189 + console subsystem can cause some troubles, specifically, you should 190 + disable software scrollback, as it can oops badly ... 191 + 192 + Todo 193 + ==== 194 + 195 + - Get rid of the previous paragraph. 196 + - Buy more coffee. 197 + - test/port to other arch. 198 + - try to add panning using tweeks with front and back buffer . 199 + - try to implement accel on voodoo2, this board can actually do a 200 + lot in 2D even if it was sold as a 3D only board ... 201 + 202 + Ghozlane Toumi <gtoumi@laposte.net> 203 + 204 + 205 + Date: 2002/05/09 20:11:45 206 + 207 + http://sstfb.sourceforge.net/README
-174
Documentation/fb/sstfb.txt
··· 1 - 2 - Introduction 3 - 4 - This is a frame buffer device driver for 3dfx' Voodoo Graphics 5 - (aka voodoo 1, aka sst1) and Voodoo² (aka Voodoo 2, aka CVG) based 6 - video boards. It's highly experimental code, but is guaranteed to work 7 - on my computer, with my "Maxi Gamer 3D" and "Maxi Gamer 3d²" boards, 8 - and with me "between chair and keyboard". Some people tested other 9 - combinations and it seems that it works. 10 - The main page is located at <http://sstfb.sourceforge.net>, and if 11 - you want the latest version, check out the CVS, as the driver is a work 12 - in progress, I feel uncomfortable with releasing tarballs of something 13 - not completely working...Don't worry, it's still more than usable 14 - (I eat my own dog food) 15 - 16 - Please read the Bug section, and report any success or failure to me 17 - (Ghozlane Toumi <gtoumi@laposte.net>). 18 - BTW, If you have only one monitor , and you don't feel like playing 19 - with the vga passthrou cable, I can only suggest borrowing a screen 20 - somewhere... 21 - 22 - 23 - Installation 24 - 25 - This driver (should) work on ix86, with "late" 2.2.x kernel (tested 26 - with x = 19) and "recent" 2.4.x kernel, as a module or compiled in. 27 - It has been included in mainstream kernel since the infamous 2.4.10. 28 - You can apply the patches found in sstfb/kernel/*-2.{2|4}.x.patch, 29 - and copy sstfb.c to linux/drivers/video/, or apply a single patch, 30 - sstfb/patch-2.{2|4}.x-sstfb-yymmdd to your linux source tree. 31 - 32 - Then configure your kernel as usual: choose "m" or "y" to 3Dfx Voodoo 33 - Graphics in section "console". Compile, install, have fun... and please 34 - drop me a report :) 35 - 36 - 37 - Module Usage 38 - 39 - Warnings. 40 - # You should read completely this section before issuing any command. 41 - # If you have only one monitor to play with, once you insmod the 42 - module, the 3dfx takes control of the output, so you'll have to 43 - plug the monitor to the "normal" video board in order to issue 44 - the commands, or you can blindly use sst_dbg_vgapass 45 - in the tools directory (See Tools). The latest solution is pass the 46 - parameter vgapass=1 when insmodding the driver. (See Kernel/Modules 47 - Options) 48 - 49 - Module insertion: 50 - # insmod sstfb.o 51 - you should see some strange output from the board: 52 - a big blue square, a green and a red small squares and a vertical 53 - white rectangle. why? the function's name is self-explanatory: 54 - "sstfb_test()"... 55 - (if you don't have a second monitor, you'll have to plug your monitor 56 - directly to the 2D videocard to see what you're typing) 57 - # con2fb /dev/fbx /dev/ttyx 58 - bind a tty to the new frame buffer. if you already have a frame 59 - buffer driver, the voodoo fb will likely be /dev/fb1. if not, 60 - the device will be /dev/fb0. You can check this by doing a 61 - cat /proc/fb. You can find a copy of con2fb in tools/ directory. 62 - if you don't have another fb device, this step is superfluous, 63 - as the console subsystem automagicaly binds ttys to the fb. 64 - # switch to the virtual console you just mapped. "tadaaa" ... 65 - 66 - Module removal: 67 - # con2fb /dev/fbx /dev/ttyx 68 - bind the tty to the old frame buffer so the module can be removed. 69 - (how does it work with vgacon ? short answer : it doesn't work) 70 - # rmmod sstfb 71 - 72 - 73 - Kernel/Modules Options 74 - 75 - You can pass some options to the sstfb module, and via the kernel 76 - command line when the driver is compiled in: 77 - for module : insmod sstfb.o option1=value1 option2=value2 ... 78 - in kernel : video=sstfb:option1,option2:value2,option3 ... 79 - 80 - sstfb supports the following options : 81 - 82 - Module Kernel Description 83 - 84 - vgapass=0 vganopass Enable or disable VGA passthrou cable. 85 - vgapass=1 vgapass When enabled, the monitor will get the signal 86 - from the VGA board and not from the voodoo. 87 - Default: nopass 88 - 89 - mem=x mem:x Force frame buffer memory in MiB 90 - allowed values: 0, 1, 2, 4. 91 - Default: 0 (= autodetect) 92 - 93 - inverse=1 inverse Supposed to enable inverse console. 94 - doesn't work yet... 95 - 96 - clipping=1 clipping Enable or disable clipping. 97 - clipping=0 noclipping With clipping enabled, all offscreen 98 - reads and writes are discarded. 99 - Default: enable clipping. 100 - 101 - gfxclk=x gfxclk:x Force graphic clock frequency (in MHz). 102 - Be careful with this option, it may be 103 - DANGEROUS. 104 - Default: auto 105 - 50Mhz for Voodoo 1, 106 - 75MHz for Voodoo 2. 107 - 108 - slowpci=1 fastpci Enable or disable fast PCI read/writes. 109 - slowpci=1 slowpci Default : fastpci 110 - 111 - dev=x dev:x Attach the driver to device number x. 112 - 0 is the first compatible board (in 113 - lspci order) 114 - 115 - Tools 116 - 117 - These tools are mostly for debugging purposes, but you can 118 - find some of these interesting : 119 - - con2fb , maps a tty to a fbramebuffer . 120 - con2fb /dev/fb1 /dev/tty5 121 - - sst_dbg_vgapass , changes vga passthrou. You have to recompile the 122 - driver with SST_DEBUG and SST_DEBUG_IOCTL set to 1 123 - sst_dbg_vgapass /dev/fb1 1 (enables vga cable) 124 - sst_dbg_vgapass /dev/fb1 0 (disables vga cable) 125 - - glide_reset , resets the voodoo using glide 126 - use this after rmmoding sstfb, if the module refuses to 127 - reinsert . 128 - 129 - Bugs 130 - 131 - - DO NOT use glide while the sstfb module is in, you'll most likely 132 - hang your computer. 133 - - If you see some artefacts (pixels not cleaning and stuff like that), 134 - try turning off clipping (clipping=0), and/or using slowpci 135 - - the driver don't detect the 4Mb frame buffer voodoos, it seems that 136 - the 2 last Mbs wrap around. looking into that . 137 - - The driver is 16 bpp only, 24/32 won't work. 138 - - The driver is not your_favorite_toy-safe. this includes SMP... 139 - [Actually from inspection it seems to be safe - Alan] 140 - - When using XFree86 FBdev (X over fbdev) you may see strange color 141 - patterns at the border of your windows (the pixels lose the lowest 142 - byte -> basically the blue component and some of the green). I'm unable 143 - to reproduce this with XFree86-3.3, but one of the testers has this 144 - problem with XFree86-4. Apparently recent Xfree86-4.x solve this 145 - problem. 146 - - I didn't really test changing the palette, so you may find some weird 147 - things when playing with that. 148 - - Sometimes the driver will not recognise the DAC, and the 149 - initialisation will fail. This is specifically true for 150 - voodoo 2 boards, but it should be solved in recent versions. Please 151 - contact me. 152 - - The 24/32 is not likely to work anytime soon, knowing that the 153 - hardware does ... unusual things in 24/32 bpp. 154 - - When used with another video board, current limitations of the linux 155 - console subsystem can cause some troubles, specifically, you should 156 - disable software scrollback, as it can oops badly ... 157 - 158 - Todo 159 - 160 - - Get rid of the previous paragraph. 161 - - Buy more coffee. 162 - - test/port to other arch. 163 - - try to add panning using tweeks with front and back buffer . 164 - - try to implement accel on voodoo2, this board can actually do a 165 - lot in 2D even if it was sold as a 3D only board ... 166 - 167 - ghoz. 168 - 169 - -- 170 - Ghozlane Toumi <gtoumi@laposte.net> 171 - 172 - 173 - $Date: 2002/05/09 20:11:45 $ 174 - http://sstfb.sourceforge.net/README
+71
Documentation/fb/tgafb.rst
··· 1 + ============== 2 + What is tgafb? 3 + ============== 4 + 5 + This is a driver for DECChip 21030 based graphics framebuffers, a.k.a. TGA 6 + cards, which are usually found in older Digital Alpha systems. The 7 + following models are supported: 8 + 9 + - ZLxP-E1 (8bpp, 2 MB VRAM) 10 + - ZLxP-E2 (32bpp, 8 MB VRAM) 11 + - ZLxP-E3 (32bpp, 16 MB VRAM, Zbuffer) 12 + 13 + This version is an almost complete rewrite of the code written by Geert 14 + Uytterhoeven, which was based on the original TGA console code written by 15 + Jay Estabrook. 16 + 17 + Major new features since Linux 2.0.x: 18 + 19 + * Support for multiple resolutions 20 + * Support for fixed-frequency and other oddball monitors 21 + (by allowing the video mode to be set at boot time) 22 + 23 + User-visible changes since Linux 2.2.x: 24 + 25 + * Sync-on-green is now handled properly 26 + * More useful information is printed on bootup 27 + (this helps if people run into problems) 28 + 29 + This driver does not (yet) support the TGA2 family of framebuffers, so the 30 + PowerStorm 3D30/4D20 (also known as PBXGB) cards are not supported. These 31 + can however be used with the standard VGA Text Console driver. 32 + 33 + 34 + Configuration 35 + ============= 36 + 37 + You can pass kernel command line options to tgafb with 38 + `video=tgafb:option1,option2:value2,option3` (multiple options should be 39 + separated by comma, values are separated from options by `:`). 40 + 41 + Accepted options: 42 + 43 + ========== ============================================================ 44 + font:X default font to use. All fonts are supported, including the 45 + SUN12x22 font which is very nice at high resolutions. 46 + 47 + mode:X default video mode. The following video modes are supported: 48 + 640x480-60, 800x600-56, 640x480-72, 800x600-60, 800x600-72, 49 + 1024x768-60, 1152x864-60, 1024x768-70, 1024x768-76, 50 + 1152x864-70, 1280x1024-61, 1024x768-85, 1280x1024-70, 51 + 1152x864-84, 1280x1024-76, 1280x1024-85 52 + ========== ============================================================ 53 + 54 + 55 + Known Issues 56 + ============ 57 + 58 + The XFree86 FBDev server has been reported not to work, since tgafb doesn't do 59 + mmap(). Running the standard XF86_TGA server from XFree86 3.3.x works fine for 60 + me, however this server does not do acceleration, which make certain operations 61 + quite slow. Support for acceleration is being progressively integrated in 62 + XFree86 4.x. 63 + 64 + When running tgafb in resolutions higher than 640x480, on switching VCs from 65 + tgafb to XF86_TGA 3.3.x, the entire screen is not re-drawn and must be manually 66 + refreshed. This is an X server problem, not a tgafb problem, and is fixed in 67 + XFree86 4.0. 68 + 69 + Enjoy! 70 + 71 + Martin Lucina <mato@kotelna.sk>
-69
Documentation/fb/tgafb.txt
··· 1 - $Id: tgafb.txt,v 1.1.2.2 2000/04/04 06:50:18 mato Exp $ 2 - 3 - What is tgafb? 4 - =============== 5 - 6 - This is a driver for DECChip 21030 based graphics framebuffers, a.k.a. TGA 7 - cards, which are usually found in older Digital Alpha systems. The 8 - following models are supported: 9 - 10 - ZLxP-E1 (8bpp, 2 MB VRAM) 11 - ZLxP-E2 (32bpp, 8 MB VRAM) 12 - ZLxP-E3 (32bpp, 16 MB VRAM, Zbuffer) 13 - 14 - This version is an almost complete rewrite of the code written by Geert 15 - Uytterhoeven, which was based on the original TGA console code written by 16 - Jay Estabrook. 17 - 18 - Major new features since Linux 2.0.x: 19 - 20 - * Support for multiple resolutions 21 - * Support for fixed-frequency and other oddball monitors 22 - (by allowing the video mode to be set at boot time) 23 - 24 - User-visible changes since Linux 2.2.x: 25 - 26 - * Sync-on-green is now handled properly 27 - * More useful information is printed on bootup 28 - (this helps if people run into problems) 29 - 30 - This driver does not (yet) support the TGA2 family of framebuffers, so the 31 - PowerStorm 3D30/4D20 (also known as PBXGB) cards are not supported. These 32 - can however be used with the standard VGA Text Console driver. 33 - 34 - 35 - Configuration 36 - ============= 37 - 38 - You can pass kernel command line options to tgafb with 39 - `video=tgafb:option1,option2:value2,option3' (multiple options should be 40 - separated by comma, values are separated from options by `:'). 41 - Accepted options: 42 - 43 - font:X - default font to use. All fonts are supported, including the 44 - SUN12x22 font which is very nice at high resolutions. 45 - 46 - mode:X - default video mode. The following video modes are supported: 47 - 640x480-60, 800x600-56, 640x480-72, 800x600-60, 800x600-72, 48 - 1024x768-60, 1152x864-60, 1024x768-70, 1024x768-76, 49 - 1152x864-70, 1280x1024-61, 1024x768-85, 1280x1024-70, 50 - 1152x864-84, 1280x1024-76, 1280x1024-85 51 - 52 - 53 - Known Issues 54 - ============ 55 - 56 - The XFree86 FBDev server has been reported not to work, since tgafb doesn't do 57 - mmap(). Running the standard XF86_TGA server from XFree86 3.3.x works fine for 58 - me, however this server does not do acceleration, which make certain operations 59 - quite slow. Support for acceleration is being progressively integrated in 60 - XFree86 4.x. 61 - 62 - When running tgafb in resolutions higher than 640x480, on switching VCs from 63 - tgafb to XF86_TGA 3.3.x, the entire screen is not re-drawn and must be manually 64 - refreshed. This is an X server problem, not a tgafb problem, and is fixed in 65 - XFree86 4.0. 66 - 67 - Enjoy! 68 - 69 - Martin Lucina <mato@kotelna.sk>
+78
Documentation/fb/tridentfb.rst
··· 1 + ========= 2 + Tridentfb 3 + ========= 4 + 5 + Tridentfb is a framebuffer driver for some Trident chip based cards. 6 + 7 + The following list of chips is thought to be supported although not all are 8 + tested: 9 + 10 + those from the TGUI series 9440/96XX and with Cyber in their names 11 + those from the Image series and with Cyber in their names 12 + those with Blade in their names (Blade3D,CyberBlade...) 13 + the newer CyberBladeXP family 14 + 15 + All families are accelerated. Only PCI/AGP based cards are supported, 16 + none of the older Tridents. 17 + The driver supports 8, 16 and 32 bits per pixel depths. 18 + The TGUI family requires a line length to be power of 2 if acceleration 19 + is enabled. This means that range of possible resolutions and bpp is 20 + limited comparing to the range if acceleration is disabled (see list 21 + of parameters below). 22 + 23 + Known bugs: 24 + 25 + 1. The driver randomly locks up on 3DImage975 chip with acceleration 26 + enabled. The same happens in X11 (Xorg). 27 + 2. The ramdac speeds require some more fine tuning. It is possible to 28 + switch resolution which the chip does not support at some depths for 29 + older chips. 30 + 31 + How to use it? 32 + ============== 33 + 34 + When booting you can pass the video parameter:: 35 + 36 + video=tridentfb 37 + 38 + The parameters for tridentfb are concatenated with a ':' as in this example:: 39 + 40 + video=tridentfb:800x600-16@75,noaccel 41 + 42 + The second level parameters that tridentfb understands are: 43 + 44 + ======== ===================================================================== 45 + noaccel turns off acceleration (when it doesn't work for your card) 46 + 47 + fp use flat panel related stuff 48 + crt assume monitor is present instead of fp 49 + 50 + center for flat panels and resolutions smaller than native size center the 51 + image, otherwise use 52 + stretch 53 + 54 + memsize integer value in KB, use if your card's memory size is misdetected. 55 + look at the driver output to see what it says when initializing. 56 + 57 + memdiff integer value in KB, should be nonzero if your card reports 58 + more memory than it actually has. For instance mine is 192K less than 59 + detection says in all three BIOS selectable situations 2M, 4M, 8M. 60 + Only use if your video memory is taken from main memory hence of 61 + configurable size. Otherwise use memsize. 62 + If in some modes which barely fit the memory you see garbage 63 + at the bottom this might help by not letting change to that mode 64 + anymore. 65 + 66 + nativex the width in pixels of the flat panel.If you know it (usually 1024 67 + 800 or 1280) and it is not what the driver seems to detect use it. 68 + 69 + bpp bits per pixel (8,16 or 32) 70 + mode a mode name like 800x600-8@75 as described in 71 + Documentation/fb/modedb.rst 72 + ======== ===================================================================== 73 + 74 + Using insane values for the above parameters will probably result in driver 75 + misbehaviour so take care(for instance memsize=12345678 or memdiff=23784 or 76 + nativex=93) 77 + 78 + Contact: jani@astechnix.ro
-70
Documentation/fb/tridentfb.txt
··· 1 - Tridentfb is a framebuffer driver for some Trident chip based cards. 2 - 3 - The following list of chips is thought to be supported although not all are 4 - tested: 5 - 6 - those from the TGUI series 9440/96XX and with Cyber in their names 7 - those from the Image series and with Cyber in their names 8 - those with Blade in their names (Blade3D,CyberBlade...) 9 - the newer CyberBladeXP family 10 - 11 - All families are accelerated. Only PCI/AGP based cards are supported, 12 - none of the older Tridents. 13 - The driver supports 8, 16 and 32 bits per pixel depths. 14 - The TGUI family requires a line length to be power of 2 if acceleration 15 - is enabled. This means that range of possible resolutions and bpp is 16 - limited comparing to the range if acceleration is disabled (see list 17 - of parameters below). 18 - 19 - Known bugs: 20 - 1. The driver randomly locks up on 3DImage975 chip with acceleration 21 - enabled. The same happens in X11 (Xorg). 22 - 2. The ramdac speeds require some more fine tuning. It is possible to 23 - switch resolution which the chip does not support at some depths for 24 - older chips. 25 - 26 - How to use it? 27 - ============== 28 - 29 - When booting you can pass the video parameter. 30 - video=tridentfb 31 - 32 - The parameters for tridentfb are concatenated with a ':' as in this example. 33 - 34 - video=tridentfb:800x600-16@75,noaccel 35 - 36 - The second level parameters that tridentfb understands are: 37 - 38 - noaccel - turns off acceleration (when it doesn't work for your card) 39 - 40 - fp - use flat panel related stuff 41 - crt - assume monitor is present instead of fp 42 - 43 - center - for flat panels and resolutions smaller than native size center the 44 - image, otherwise use 45 - stretch 46 - 47 - memsize - integer value in KB, use if your card's memory size is misdetected. 48 - look at the driver output to see what it says when initializing. 49 - 50 - memdiff - integer value in KB, should be nonzero if your card reports 51 - more memory than it actually has. For instance mine is 192K less than 52 - detection says in all three BIOS selectable situations 2M, 4M, 8M. 53 - Only use if your video memory is taken from main memory hence of 54 - configurable size. Otherwise use memsize. 55 - If in some modes which barely fit the memory you see garbage 56 - at the bottom this might help by not letting change to that mode 57 - anymore. 58 - 59 - nativex - the width in pixels of the flat panel.If you know it (usually 1024 60 - 800 or 1280) and it is not what the driver seems to detect use it. 61 - 62 - bpp - bits per pixel (8,16 or 32) 63 - mode - a mode name like 800x600-8@75 as described in 64 - Documentation/fb/modedb.txt 65 - 66 - Using insane values for the above parameters will probably result in driver 67 - misbehaviour so take care(for instance memsize=12345678 or memdiff=23784 or 68 - nativex=93) 69 - 70 - Contact: jani@astechnix.ro
+162
Documentation/fb/udlfb.rst
··· 1 + ============== 2 + What is udlfb? 3 + ============== 4 + 5 + This is a driver for DisplayLink USB 2.0 era graphics chips. 6 + 7 + DisplayLink chips provide simple hline/blit operations with some compression, 8 + pairing that with a hardware framebuffer (16MB) on the other end of the 9 + USB wire. That hardware framebuffer is able to drive the VGA, DVI, or HDMI 10 + monitor with no CPU involvement until a pixel has to change. 11 + 12 + The CPU or other local resource does all the rendering; optionally compares the 13 + result with a local shadow of the remote hardware framebuffer to identify 14 + the minimal set of pixels that have changed; and compresses and sends those 15 + pixels line-by-line via USB bulk transfers. 16 + 17 + Because of the efficiency of bulk transfers and a protocol on top that 18 + does not require any acks - the effect is very low latency that 19 + can support surprisingly high resolutions with good performance for 20 + non-gaming and non-video applications. 21 + 22 + Mode setting, EDID read, etc are other bulk or control transfers. Mode 23 + setting is very flexible - able to set nearly arbitrary modes from any timing. 24 + 25 + Advantages of USB graphics in general: 26 + 27 + * Ability to add a nearly arbitrary number of displays to any USB 2.0 28 + capable system. On Linux, number of displays is limited by fbdev interface 29 + (FB_MAX is currently 32). Of course, all USB devices on the same 30 + host controller share the same 480Mbs USB 2.0 interface. 31 + 32 + Advantages of supporting DisplayLink chips with kernel framebuffer interface: 33 + 34 + * The actual hardware functionality of DisplayLink chips matches nearly 35 + one-to-one with the fbdev interface, making the driver quite small and 36 + tight relative to the functionality it provides. 37 + * X servers and other applications can use the standard fbdev interface 38 + from user mode to talk to the device, without needing to know anything 39 + about USB or DisplayLink's protocol at all. A "displaylink" X driver 40 + and a slightly modified "fbdev" X driver are among those that already do. 41 + 42 + Disadvantages: 43 + 44 + * Fbdev's mmap interface assumes a real hardware framebuffer is mapped. 45 + In the case of USB graphics, it is just an allocated (virtual) buffer. 46 + Writes need to be detected and encoded into USB bulk transfers by the CPU. 47 + Accurate damage/changed area notifications work around this problem. 48 + In the future, hopefully fbdev will be enhanced with an small standard 49 + interface to allow mmap clients to report damage, for the benefit 50 + of virtual or remote framebuffers. 51 + * Fbdev does not arbitrate client ownership of the framebuffer well. 52 + * Fbcon assumes the first framebuffer it finds should be consumed for console. 53 + * It's not clear what the future of fbdev is, given the rise of KMS/DRM. 54 + 55 + How to use it? 56 + ============== 57 + 58 + Udlfb, when loaded as a module, will match against all USB 2.0 generation 59 + DisplayLink chips (Alex and Ollie family). It will then attempt to read the EDID 60 + of the monitor, and set the best common mode between the DisplayLink device 61 + and the monitor's capabilities. 62 + 63 + If the DisplayLink device is successful, it will paint a "green screen" which 64 + means that from a hardware and fbdev software perspective, everything is good. 65 + 66 + At that point, a /dev/fb? interface will be present for user-mode applications 67 + to open and begin writing to the framebuffer of the DisplayLink device using 68 + standard fbdev calls. Note that if mmap() is used, by default the user mode 69 + application must send down damage notifications to trigger repaints of the 70 + changed regions. Alternatively, udlfb can be recompiled with experimental 71 + defio support enabled, to support a page-fault based detection mechanism 72 + that can work without explicit notification. 73 + 74 + The most common client of udlfb is xf86-video-displaylink or a modified 75 + xf86-video-fbdev X server. These servers have no real DisplayLink specific 76 + code. They write to the standard framebuffer interface and rely on udlfb 77 + to do its thing. The one extra feature they have is the ability to report 78 + rectangles from the X DAMAGE protocol extension down to udlfb via udlfb's 79 + damage interface (which will hopefully be standardized for all virtual 80 + framebuffers that need damage info). These damage notifications allow 81 + udlfb to efficiently process the changed pixels. 82 + 83 + Module Options 84 + ============== 85 + 86 + Special configuration for udlfb is usually unnecessary. There are a few 87 + options, however. 88 + 89 + From the command line, pass options to modprobe 90 + modprobe udlfb fb_defio=0 console=1 shadow=1 91 + 92 + Or modify options on the fly at /sys/module/udlfb/parameters directory via 93 + sudo nano fb_defio 94 + change the parameter in place, and save the file. 95 + 96 + Unplug/replug USB device to apply with new settings 97 + 98 + Or for permanent option, create file like /etc/modprobe.d/udlfb.conf with text 99 + options udlfb fb_defio=0 console=1 shadow=1 100 + 101 + Accepted boolean options: 102 + 103 + =============== ================================================================ 104 + fb_defio Make use of the fb_defio (CONFIG_FB_DEFERRED_IO) kernel 105 + module to track changed areas of the framebuffer by page faults. 106 + Standard fbdev applications that use mmap but that do not 107 + report damage, should be able to work with this enabled. 108 + Disable when running with X server that supports reporting 109 + changed regions via ioctl, as this method is simpler, 110 + more stable, and higher performance. 111 + default: fb_defio=1 112 + 113 + console Allow fbcon to attach to udlfb provided framebuffers. 114 + Can be disabled if fbcon and other clients 115 + (e.g. X with --shared-vt) are in conflict. 116 + default: console=1 117 + 118 + shadow Allocate a 2nd framebuffer to shadow what's currently across 119 + the USB bus in device memory. If any pixels are unchanged, 120 + do not transmit. Spends host memory to save USB transfers. 121 + Enabled by default. Only disable on very low memory systems. 122 + default: shadow=1 123 + =============== ================================================================ 124 + 125 + Sysfs Attributes 126 + ================ 127 + 128 + Udlfb creates several files in /sys/class/graphics/fb? 129 + Where ? is the sequential framebuffer id of the particular DisplayLink device 130 + 131 + ======================== ======================================================== 132 + edid If a valid EDID blob is written to this file (typically 133 + by a udev rule), then udlfb will use this EDID as a 134 + backup in case reading the actual EDID of the monitor 135 + attached to the DisplayLink device fails. This is 136 + especially useful for fixed panels, etc. that cannot 137 + communicate their capabilities via EDID. Reading 138 + this file returns the current EDID of the attached 139 + monitor (or last backup value written). This is 140 + useful to get the EDID of the attached monitor, 141 + which can be passed to utilities like parse-edid. 142 + 143 + metrics_bytes_rendered 32-bit count of pixel bytes rendered 144 + 145 + metrics_bytes_identical 32-bit count of how many of those bytes were found to be 146 + unchanged, based on a shadow framebuffer check 147 + 148 + metrics_bytes_sent 32-bit count of how many bytes were transferred over 149 + USB to communicate the resulting changed pixels to the 150 + hardware. Includes compression and protocol overhead 151 + 152 + metrics_cpu_kcycles_used 32-bit count of CPU cycles used in processing the 153 + above pixels (in thousands of cycles). 154 + 155 + metrics_reset Write-only. Any write to this file resets all metrics 156 + above to zero. Note that the 32-bit counters above 157 + roll over very quickly. To get reliable results, design 158 + performance tests to start and finish in a very short 159 + period of time (one minute or less is safe). 160 + ======================== ======================================================== 161 + 162 + Bernie Thompson <bernie@plugable.com>
-159
Documentation/fb/udlfb.txt
··· 1 - 2 - What is udlfb? 3 - =============== 4 - 5 - This is a driver for DisplayLink USB 2.0 era graphics chips. 6 - 7 - DisplayLink chips provide simple hline/blit operations with some compression, 8 - pairing that with a hardware framebuffer (16MB) on the other end of the 9 - USB wire. That hardware framebuffer is able to drive the VGA, DVI, or HDMI 10 - monitor with no CPU involvement until a pixel has to change. 11 - 12 - The CPU or other local resource does all the rendering; optionally compares the 13 - result with a local shadow of the remote hardware framebuffer to identify 14 - the minimal set of pixels that have changed; and compresses and sends those 15 - pixels line-by-line via USB bulk transfers. 16 - 17 - Because of the efficiency of bulk transfers and a protocol on top that 18 - does not require any acks - the effect is very low latency that 19 - can support surprisingly high resolutions with good performance for 20 - non-gaming and non-video applications. 21 - 22 - Mode setting, EDID read, etc are other bulk or control transfers. Mode 23 - setting is very flexible - able to set nearly arbitrary modes from any timing. 24 - 25 - Advantages of USB graphics in general: 26 - 27 - * Ability to add a nearly arbitrary number of displays to any USB 2.0 28 - capable system. On Linux, number of displays is limited by fbdev interface 29 - (FB_MAX is currently 32). Of course, all USB devices on the same 30 - host controller share the same 480Mbs USB 2.0 interface. 31 - 32 - Advantages of supporting DisplayLink chips with kernel framebuffer interface: 33 - 34 - * The actual hardware functionality of DisplayLink chips matches nearly 35 - one-to-one with the fbdev interface, making the driver quite small and 36 - tight relative to the functionality it provides. 37 - * X servers and other applications can use the standard fbdev interface 38 - from user mode to talk to the device, without needing to know anything 39 - about USB or DisplayLink's protocol at all. A "displaylink" X driver 40 - and a slightly modified "fbdev" X driver are among those that already do. 41 - 42 - Disadvantages: 43 - 44 - * Fbdev's mmap interface assumes a real hardware framebuffer is mapped. 45 - In the case of USB graphics, it is just an allocated (virtual) buffer. 46 - Writes need to be detected and encoded into USB bulk transfers by the CPU. 47 - Accurate damage/changed area notifications work around this problem. 48 - In the future, hopefully fbdev will be enhanced with an small standard 49 - interface to allow mmap clients to report damage, for the benefit 50 - of virtual or remote framebuffers. 51 - * Fbdev does not arbitrate client ownership of the framebuffer well. 52 - * Fbcon assumes the first framebuffer it finds should be consumed for console. 53 - * It's not clear what the future of fbdev is, given the rise of KMS/DRM. 54 - 55 - How to use it? 56 - ============== 57 - 58 - Udlfb, when loaded as a module, will match against all USB 2.0 generation 59 - DisplayLink chips (Alex and Ollie family). It will then attempt to read the EDID 60 - of the monitor, and set the best common mode between the DisplayLink device 61 - and the monitor's capabilities. 62 - 63 - If the DisplayLink device is successful, it will paint a "green screen" which 64 - means that from a hardware and fbdev software perspective, everything is good. 65 - 66 - At that point, a /dev/fb? interface will be present for user-mode applications 67 - to open and begin writing to the framebuffer of the DisplayLink device using 68 - standard fbdev calls. Note that if mmap() is used, by default the user mode 69 - application must send down damage notifications to trigger repaints of the 70 - changed regions. Alternatively, udlfb can be recompiled with experimental 71 - defio support enabled, to support a page-fault based detection mechanism 72 - that can work without explicit notification. 73 - 74 - The most common client of udlfb is xf86-video-displaylink or a modified 75 - xf86-video-fbdev X server. These servers have no real DisplayLink specific 76 - code. They write to the standard framebuffer interface and rely on udlfb 77 - to do its thing. The one extra feature they have is the ability to report 78 - rectangles from the X DAMAGE protocol extension down to udlfb via udlfb's 79 - damage interface (which will hopefully be standardized for all virtual 80 - framebuffers that need damage info). These damage notifications allow 81 - udlfb to efficiently process the changed pixels. 82 - 83 - Module Options 84 - ============== 85 - 86 - Special configuration for udlfb is usually unnecessary. There are a few 87 - options, however. 88 - 89 - From the command line, pass options to modprobe 90 - modprobe udlfb fb_defio=0 console=1 shadow=1 91 - 92 - Or modify options on the fly at /sys/module/udlfb/parameters directory via 93 - sudo nano fb_defio 94 - change the parameter in place, and save the file. 95 - 96 - Unplug/replug USB device to apply with new settings 97 - 98 - Or for permanent option, create file like /etc/modprobe.d/udlfb.conf with text 99 - options udlfb fb_defio=0 console=1 shadow=1 100 - 101 - Accepted boolean options: 102 - 103 - fb_defio Make use of the fb_defio (CONFIG_FB_DEFERRED_IO) kernel 104 - module to track changed areas of the framebuffer by page faults. 105 - Standard fbdev applications that use mmap but that do not 106 - report damage, should be able to work with this enabled. 107 - Disable when running with X server that supports reporting 108 - changed regions via ioctl, as this method is simpler, 109 - more stable, and higher performance. 110 - default: fb_defio=1 111 - 112 - console Allow fbcon to attach to udlfb provided framebuffers. 113 - Can be disabled if fbcon and other clients 114 - (e.g. X with --shared-vt) are in conflict. 115 - default: console=1 116 - 117 - shadow Allocate a 2nd framebuffer to shadow what's currently across 118 - the USB bus in device memory. If any pixels are unchanged, 119 - do not transmit. Spends host memory to save USB transfers. 120 - Enabled by default. Only disable on very low memory systems. 121 - default: shadow=1 122 - 123 - Sysfs Attributes 124 - ================ 125 - 126 - Udlfb creates several files in /sys/class/graphics/fb? 127 - Where ? is the sequential framebuffer id of the particular DisplayLink device 128 - 129 - edid If a valid EDID blob is written to this file (typically 130 - by a udev rule), then udlfb will use this EDID as a 131 - backup in case reading the actual EDID of the monitor 132 - attached to the DisplayLink device fails. This is 133 - especially useful for fixed panels, etc. that cannot 134 - communicate their capabilities via EDID. Reading 135 - this file returns the current EDID of the attached 136 - monitor (or last backup value written). This is 137 - useful to get the EDID of the attached monitor, 138 - which can be passed to utilities like parse-edid. 139 - 140 - metrics_bytes_rendered 32-bit count of pixel bytes rendered 141 - 142 - metrics_bytes_identical 32-bit count of how many of those bytes were found to be 143 - unchanged, based on a shadow framebuffer check 144 - 145 - metrics_bytes_sent 32-bit count of how many bytes were transferred over 146 - USB to communicate the resulting changed pixels to the 147 - hardware. Includes compression and protocol overhead 148 - 149 - metrics_cpu_kcycles_used 32-bit count of CPU cycles used in processing the 150 - above pixels (in thousands of cycles). 151 - 152 - metrics_reset Write-only. Any write to this file resets all metrics 153 - above to zero. Note that the 32-bit counters above 154 - roll over very quickly. To get reliable results, design 155 - performance tests to start and finish in a very short 156 - period of time (one minute or less is safe). 157 - 158 - -- 159 - Bernie Thompson <bernie@plugable.com>
+188
Documentation/fb/uvesafb.rst
··· 1 + ========================================================== 2 + uvesafb - A Generic Driver for VBE2+ compliant video cards 3 + ========================================================== 4 + 5 + 1. Requirements 6 + --------------- 7 + 8 + uvesafb should work with any video card that has a Video BIOS compliant 9 + with the VBE 2.0 standard. 10 + 11 + Unlike other drivers, uvesafb makes use of a userspace helper called 12 + v86d. v86d is used to run the x86 Video BIOS code in a simulated and 13 + controlled environment. This allows uvesafb to function on arches other 14 + than x86. Check the v86d documentation for a list of currently supported 15 + arches. 16 + 17 + v86d source code can be downloaded from the following website: 18 + 19 + https://github.com/mjanusz/v86d 20 + 21 + Please refer to the v86d documentation for detailed configuration and 22 + installation instructions. 23 + 24 + Note that the v86d userspace helper has to be available at all times in 25 + order for uvesafb to work properly. If you want to use uvesafb during 26 + early boot, you will have to include v86d into an initramfs image, and 27 + either compile it into the kernel or use it as an initrd. 28 + 29 + 2. Caveats and limitations 30 + -------------------------- 31 + 32 + uvesafb is a _generic_ driver which supports a wide variety of video 33 + cards, but which is ultimately limited by the Video BIOS interface. 34 + The most important limitations are: 35 + 36 + - Lack of any type of acceleration. 37 + - A strict and limited set of supported video modes. Often the native 38 + or most optimal resolution/refresh rate for your setup will not work 39 + with uvesafb, simply because the Video BIOS doesn't support the 40 + video mode you want to use. This can be especially painful with 41 + widescreen panels, where native video modes don't have the 4:3 aspect 42 + ratio, which is what most BIOS-es are limited to. 43 + - Adjusting the refresh rate is only possible with a VBE 3.0 compliant 44 + Video BIOS. Note that many nVidia Video BIOS-es claim to be VBE 3.0 45 + compliant, while they simply ignore any refresh rate settings. 46 + 47 + 3. Configuration 48 + ---------------- 49 + 50 + uvesafb can be compiled either as a module, or directly into the kernel. 51 + In both cases it supports the same set of configuration options, which 52 + are either given on the kernel command line or as module parameters, e.g.:: 53 + 54 + video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel) 55 + 56 + # modprobe uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap (module) 57 + 58 + Accepted options: 59 + 60 + ======= ========================================================= 61 + ypan Enable display panning using the VESA protected mode 62 + interface. The visible screen is just a window of the 63 + video memory, console scrolling is done by changing the 64 + start of the window. This option is available on x86 65 + only and is the default option on that architecture. 66 + 67 + ywrap Same as ypan, but assumes your gfx board can wrap-around 68 + the video memory (i.e. starts reading from top if it 69 + reaches the end of video memory). Faster than ypan. 70 + Available on x86 only. 71 + 72 + redraw Scroll by redrawing the affected part of the screen, this 73 + is the default on non-x86. 74 + ======= ========================================================= 75 + 76 + (If you're using uvesafb as a module, the above three options are 77 + used a parameter of the scroll option, e.g. scroll=ypan.) 78 + 79 + =========== ==================================================================== 80 + vgapal Use the standard VGA registers for palette changes. 81 + 82 + pmipal Use the protected mode interface for palette changes. 83 + This is the default if the protected mode interface is 84 + available. Available on x86 only. 85 + 86 + mtrr:n Setup memory type range registers for the framebuffer 87 + where n: 88 + 89 + - 0 - disabled (equivalent to nomtrr) 90 + - 3 - write-combining (default) 91 + 92 + Values other than 0 and 3 will result in a warning and will be 93 + treated just like 3. 94 + 95 + nomtrr Do not use memory type range registers. 96 + 97 + vremap:n 98 + Remap 'n' MiB of video RAM. If 0 or not specified, remap memory 99 + according to video mode. 100 + 101 + vtotal:n If the video BIOS of your card incorrectly determines the total 102 + amount of video RAM, use this option to override the BIOS (in MiB). 103 + 104 + <mode> The mode you want to set, in the standard modedb format. Refer to 105 + modedb.txt for a detailed description. When uvesafb is compiled as 106 + a module, the mode string should be provided as a value of the 107 + 'mode_option' option. 108 + 109 + vbemode:x Force the use of VBE mode x. The mode will only be set if it's 110 + found in the VBE-provided list of supported modes. 111 + NOTE: The mode number 'x' should be specified in VESA mode number 112 + notation, not the Linux kernel one (eg. 257 instead of 769). 113 + HINT: If you use this option because normal <mode> parameter does 114 + not work for you and you use a X server, you'll probably want to 115 + set the 'nocrtc' option to ensure that the video mode is properly 116 + restored after console <-> X switches. 117 + 118 + nocrtc Do not use CRTC timings while setting the video mode. This option 119 + has any effect only if the Video BIOS is VBE 3.0 compliant. Use it 120 + if you have problems with modes set the standard way. Note that 121 + using this option implies that any refresh rate adjustments will 122 + be ignored and the refresh rate will stay at your BIOS default 123 + (60 Hz). 124 + 125 + noedid Do not try to fetch and use EDID-provided modes. 126 + 127 + noblank Disable hardware blanking. 128 + 129 + v86d:path Set path to the v86d executable. This option is only available as 130 + a module parameter, and not as a part of the video= string. If you 131 + need to use it and have uvesafb built into the kernel, use 132 + uvesafb.v86d="path". 133 + =========== ==================================================================== 134 + 135 + Additionally, the following parameters may be provided. They all override the 136 + EDID-provided values and BIOS defaults. Refer to your monitor's specs to get 137 + the correct values for maxhf, maxvf and maxclk for your hardware. 138 + 139 + =========== ====================================== 140 + maxhf:n Maximum horizontal frequency (in kHz). 141 + maxvf:n Maximum vertical frequency (in Hz). 142 + maxclk:n Maximum pixel clock (in MHz). 143 + =========== ====================================== 144 + 145 + 4. The sysfs interface 146 + ---------------------- 147 + 148 + uvesafb provides several sysfs nodes for configurable parameters and 149 + additional information. 150 + 151 + Driver attributes: 152 + 153 + /sys/bus/platform/drivers/uvesafb 154 + v86d 155 + (default: /sbin/v86d) 156 + 157 + Path to the v86d executable. v86d is started by uvesafb 158 + if an instance of the daemon isn't already running. 159 + 160 + Device attributes: 161 + 162 + /sys/bus/platform/drivers/uvesafb/uvesafb.0 163 + nocrtc 164 + Use the default refresh rate (60 Hz) if set to 1. 165 + 166 + oem_product_name, oem_product_rev, oem_string, oem_vendor 167 + Information about the card and its maker. 168 + 169 + vbe_modes 170 + A list of video modes supported by the Video BIOS along with their 171 + VBE mode numbers in hex. 172 + 173 + vbe_version 174 + A BCD value indicating the implemented VBE standard. 175 + 176 + 5. Miscellaneous 177 + ---------------- 178 + 179 + Uvesafb will set a video mode with the default refresh rate and timings 180 + from the Video BIOS if you set pixclock to 0 in fb_var_screeninfo. 181 + 182 + 183 + 184 + Michal Januszewski <spock@gentoo.org> 185 + 186 + Last updated: 2017-10-10 187 + 188 + Documentation of the uvesafb options is loosely based on vesafb.txt.
-184
Documentation/fb/uvesafb.txt
··· 1 - 2 - uvesafb - A Generic Driver for VBE2+ compliant video cards 3 - ========================================================== 4 - 5 - 1. Requirements 6 - --------------- 7 - 8 - uvesafb should work with any video card that has a Video BIOS compliant 9 - with the VBE 2.0 standard. 10 - 11 - Unlike other drivers, uvesafb makes use of a userspace helper called 12 - v86d. v86d is used to run the x86 Video BIOS code in a simulated and 13 - controlled environment. This allows uvesafb to function on arches other 14 - than x86. Check the v86d documentation for a list of currently supported 15 - arches. 16 - 17 - v86d source code can be downloaded from the following website: 18 - 19 - https://github.com/mjanusz/v86d 20 - 21 - Please refer to the v86d documentation for detailed configuration and 22 - installation instructions. 23 - 24 - Note that the v86d userspace helper has to be available at all times in 25 - order for uvesafb to work properly. If you want to use uvesafb during 26 - early boot, you will have to include v86d into an initramfs image, and 27 - either compile it into the kernel or use it as an initrd. 28 - 29 - 2. Caveats and limitations 30 - -------------------------- 31 - 32 - uvesafb is a _generic_ driver which supports a wide variety of video 33 - cards, but which is ultimately limited by the Video BIOS interface. 34 - The most important limitations are: 35 - 36 - - Lack of any type of acceleration. 37 - - A strict and limited set of supported video modes. Often the native 38 - or most optimal resolution/refresh rate for your setup will not work 39 - with uvesafb, simply because the Video BIOS doesn't support the 40 - video mode you want to use. This can be especially painful with 41 - widescreen panels, where native video modes don't have the 4:3 aspect 42 - ratio, which is what most BIOS-es are limited to. 43 - - Adjusting the refresh rate is only possible with a VBE 3.0 compliant 44 - Video BIOS. Note that many nVidia Video BIOS-es claim to be VBE 3.0 45 - compliant, while they simply ignore any refresh rate settings. 46 - 47 - 3. Configuration 48 - ---------------- 49 - 50 - uvesafb can be compiled either as a module, or directly into the kernel. 51 - In both cases it supports the same set of configuration options, which 52 - are either given on the kernel command line or as module parameters, e.g.: 53 - 54 - video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel) 55 - 56 - # modprobe uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap (module) 57 - 58 - Accepted options: 59 - 60 - ypan Enable display panning using the VESA protected mode 61 - interface. The visible screen is just a window of the 62 - video memory, console scrolling is done by changing the 63 - start of the window. This option is available on x86 64 - only and is the default option on that architecture. 65 - 66 - ywrap Same as ypan, but assumes your gfx board can wrap-around 67 - the video memory (i.e. starts reading from top if it 68 - reaches the end of video memory). Faster than ypan. 69 - Available on x86 only. 70 - 71 - redraw Scroll by redrawing the affected part of the screen, this 72 - is the default on non-x86. 73 - 74 - (If you're using uvesafb as a module, the above three options are 75 - used a parameter of the scroll option, e.g. scroll=ypan.) 76 - 77 - vgapal Use the standard VGA registers for palette changes. 78 - 79 - pmipal Use the protected mode interface for palette changes. 80 - This is the default if the protected mode interface is 81 - available. Available on x86 only. 82 - 83 - mtrr:n Setup memory type range registers for the framebuffer 84 - where n: 85 - 0 - disabled (equivalent to nomtrr) 86 - 3 - write-combining (default) 87 - 88 - Values other than 0 and 3 will result in a warning and will be 89 - treated just like 3. 90 - 91 - nomtrr Do not use memory type range registers. 92 - 93 - vremap:n 94 - Remap 'n' MiB of video RAM. If 0 or not specified, remap memory 95 - according to video mode. 96 - 97 - vtotal:n 98 - If the video BIOS of your card incorrectly determines the total 99 - amount of video RAM, use this option to override the BIOS (in MiB). 100 - 101 - <mode> The mode you want to set, in the standard modedb format. Refer to 102 - modedb.txt for a detailed description. When uvesafb is compiled as 103 - a module, the mode string should be provided as a value of the 104 - 'mode_option' option. 105 - 106 - vbemode:x 107 - Force the use of VBE mode x. The mode will only be set if it's 108 - found in the VBE-provided list of supported modes. 109 - NOTE: The mode number 'x' should be specified in VESA mode number 110 - notation, not the Linux kernel one (eg. 257 instead of 769). 111 - HINT: If you use this option because normal <mode> parameter does 112 - not work for you and you use a X server, you'll probably want to 113 - set the 'nocrtc' option to ensure that the video mode is properly 114 - restored after console <-> X switches. 115 - 116 - nocrtc Do not use CRTC timings while setting the video mode. This option 117 - has any effect only if the Video BIOS is VBE 3.0 compliant. Use it 118 - if you have problems with modes set the standard way. Note that 119 - using this option implies that any refresh rate adjustments will 120 - be ignored and the refresh rate will stay at your BIOS default (60 Hz). 121 - 122 - noedid Do not try to fetch and use EDID-provided modes. 123 - 124 - noblank Disable hardware blanking. 125 - 126 - v86d:path 127 - Set path to the v86d executable. This option is only available as 128 - a module parameter, and not as a part of the video= string. If you 129 - need to use it and have uvesafb built into the kernel, use 130 - uvesafb.v86d="path". 131 - 132 - Additionally, the following parameters may be provided. They all override the 133 - EDID-provided values and BIOS defaults. Refer to your monitor's specs to get 134 - the correct values for maxhf, maxvf and maxclk for your hardware. 135 - 136 - maxhf:n Maximum horizontal frequency (in kHz). 137 - maxvf:n Maximum vertical frequency (in Hz). 138 - maxclk:n Maximum pixel clock (in MHz). 139 - 140 - 4. The sysfs interface 141 - ---------------------- 142 - 143 - uvesafb provides several sysfs nodes for configurable parameters and 144 - additional information. 145 - 146 - Driver attributes: 147 - 148 - /sys/bus/platform/drivers/uvesafb 149 - - v86d (default: /sbin/v86d) 150 - Path to the v86d executable. v86d is started by uvesafb 151 - if an instance of the daemon isn't already running. 152 - 153 - Device attributes: 154 - 155 - /sys/bus/platform/drivers/uvesafb/uvesafb.0 156 - - nocrtc 157 - Use the default refresh rate (60 Hz) if set to 1. 158 - 159 - - oem_product_name 160 - - oem_product_rev 161 - - oem_string 162 - - oem_vendor 163 - Information about the card and its maker. 164 - 165 - - vbe_modes 166 - A list of video modes supported by the Video BIOS along with their 167 - VBE mode numbers in hex. 168 - 169 - - vbe_version 170 - A BCD value indicating the implemented VBE standard. 171 - 172 - 5. Miscellaneous 173 - ---------------- 174 - 175 - Uvesafb will set a video mode with the default refresh rate and timings 176 - from the Video BIOS if you set pixclock to 0 in fb_var_screeninfo. 177 - 178 - 179 - -- 180 - Michal Januszewski <spock@gentoo.org> 181 - Last updated: 2017-10-10 182 - 183 - Documentation of the uvesafb options is loosely based on vesafb.txt. 184 -
+192
Documentation/fb/vesafb.rst
··· 1 + =============== 2 + What is vesafb? 3 + =============== 4 + 5 + This is a generic driver for a graphic framebuffer on intel boxes. 6 + 7 + The idea is simple: Turn on graphics mode at boot time with the help 8 + of the BIOS, and use this as framebuffer device /dev/fb0, like the m68k 9 + (and other) ports do. 10 + 11 + This means we decide at boot time whenever we want to run in text or 12 + graphics mode. Switching mode later on (in protected mode) is 13 + impossible; BIOS calls work in real mode only. VESA BIOS Extensions 14 + Version 2.0 are required, because we need a linear frame buffer. 15 + 16 + Advantages: 17 + 18 + * It provides a nice large console (128 cols + 48 lines with 1024x768) 19 + without using tiny, unreadable fonts. 20 + * You can run XF68_FBDev on top of /dev/fb0 (=> non-accelerated X11 21 + support for every VBE 2.0 compliant graphics board). 22 + * Most important: boot logo :-) 23 + 24 + Disadvantages: 25 + 26 + * graphic mode is slower than text mode... 27 + 28 + 29 + How to use it? 30 + ============== 31 + 32 + Switching modes is done using the vga=... boot parameter. Read 33 + Documentation/svga.txt for details. 34 + 35 + You should compile in both vgacon (for text mode) and vesafb (for 36 + graphics mode). Which of them takes over the console depends on 37 + whenever the specified mode is text or graphics. 38 + 39 + The graphic modes are NOT in the list which you get if you boot with 40 + vga=ask and hit return. The mode you wish to use is derived from the 41 + VESA mode number. Here are those VESA mode numbers: 42 + 43 + ====== ======= ======= ======== ========= 44 + colors 640x480 800x600 1024x768 1280x1024 45 + ====== ======= ======= ======== ========= 46 + 256 0x101 0x103 0x105 0x107 47 + 32k 0x110 0x113 0x116 0x119 48 + 64k 0x111 0x114 0x117 0x11A 49 + 16M 0x112 0x115 0x118 0x11B 50 + ====== ======= ======= ======== ========= 51 + 52 + 53 + The video mode number of the Linux kernel is the VESA mode number plus 54 + 0x200: 55 + 56 + Linux_kernel_mode_number = VESA_mode_number + 0x200 57 + 58 + So the table for the Kernel mode numbers are: 59 + 60 + ====== ======= ======= ======== ========= 61 + colors 640x480 800x600 1024x768 1280x1024 62 + ====== ======= ======= ======== ========= 63 + 256 0x301 0x303 0x305 0x307 64 + 32k 0x310 0x313 0x316 0x319 65 + 64k 0x311 0x314 0x317 0x31A 66 + 16M 0x312 0x315 0x318 0x31B 67 + ====== ======= ======= ======== ========= 68 + 69 + To enable one of those modes you have to specify "vga=ask" in the 70 + lilo.conf file and rerun LILO. Then you can type in the desired 71 + mode at the "vga=ask" prompt. For example if you like to use 72 + 1024x768x256 colors you have to say "305" at this prompt. 73 + 74 + If this does not work, this might be because your BIOS does not support 75 + linear framebuffers or because it does not support this mode at all. 76 + Even if your board does, it might be the BIOS which does not. VESA BIOS 77 + Extensions v2.0 are required, 1.2 is NOT sufficient. You will get a 78 + "bad mode number" message if something goes wrong. 79 + 80 + 1. Note: LILO cannot handle hex, for booting directly with 81 + "vga=mode-number" you have to transform the numbers to decimal. 82 + 2. Note: Some newer versions of LILO appear to work with those hex values, 83 + if you set the 0x in front of the numbers. 84 + 85 + X11 86 + === 87 + 88 + XF68_FBDev should work just fine, but it is non-accelerated. Running 89 + another (accelerated) X-Server like XF86_SVGA might or might not work. 90 + It depends on X-Server and graphics board. 91 + 92 + The X-Server must restore the video mode correctly, else you end up 93 + with a broken console (and vesafb cannot do anything about this). 94 + 95 + 96 + Refresh rates 97 + ============= 98 + 99 + There is no way to change the vesafb video mode and/or timings after 100 + booting linux. If you are not happy with the 60 Hz refresh rate, you 101 + have these options: 102 + 103 + * configure and load the DOS-Tools for the graphics board (if 104 + available) and boot linux with loadlin. 105 + * use a native driver (matroxfb/atyfb) instead if vesafb. If none 106 + is available, write a new one! 107 + * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0 108 + support nor the specs, so I have not checked this yet. 109 + 110 + 111 + Configuration 112 + ============= 113 + 114 + The VESA BIOS provides protected mode interface for changing 115 + some parameters. vesafb can use it for palette changes and 116 + to pan the display. It is turned off by default because it 117 + seems not to work with some BIOS versions, but there are options 118 + to turn it on. 119 + 120 + You can pass options to vesafb using "video=vesafb:option" on 121 + the kernel command line. Multiple options should be separated 122 + by comma, like this: "video=vesafb:ypan,inverse" 123 + 124 + Accepted options: 125 + 126 + inverse use inverse color map 127 + 128 + ========= ====================================================================== 129 + ypan enable display panning using the VESA protected mode 130 + interface. The visible screen is just a window of the 131 + video memory, console scrolling is done by changing the 132 + start of the window. 133 + 134 + pro: 135 + 136 + * scrolling (fullscreen) is fast, because there is 137 + no need to copy around data. 138 + * You'll get scrollback (the Shift-PgUp thing), 139 + the video memory can be used as scrollback buffer 140 + 141 + kontra: 142 + 143 + * scrolling only parts of the screen causes some 144 + ugly flicker effects (boot logo flickers for 145 + example). 146 + 147 + ywrap Same as ypan, but assumes your gfx board can wrap-around 148 + the video memory (i.e. starts reading from top if it 149 + reaches the end of video memory). Faster than ypan. 150 + 151 + redraw Scroll by redrawing the affected part of the screen, this 152 + is the safe (and slow) default. 153 + 154 + 155 + vgapal Use the standard vga registers for palette changes. 156 + This is the default. 157 + pmipal Use the protected mode interface for palette changes. 158 + 159 + mtrr:n Setup memory type range registers for the vesafb framebuffer 160 + where n: 161 + 162 + - 0 - disabled (equivalent to nomtrr) (default) 163 + - 1 - uncachable 164 + - 2 - write-back 165 + - 3 - write-combining 166 + - 4 - write-through 167 + 168 + If you see the following in dmesg, choose the type that matches the 169 + old one. In this example, use "mtrr:2". 170 + ... 171 + mtrr: type mismatch for e0000000,8000000 old: write-back new: 172 + write-combining 173 + ... 174 + 175 + nomtrr disable mtrr 176 + 177 + vremap:n 178 + Remap 'n' MiB of video RAM. If 0 or not specified, remap memory 179 + according to video mode. (2.5.66 patch/idea by Antonino Daplas 180 + reversed to give override possibility (allocate more fb memory 181 + than the kernel would) to 2.4 by tmb@iki.fi) 182 + 183 + vtotal:n If the video BIOS of your card incorrectly determines the total 184 + amount of video RAM, use this option to override the BIOS (in MiB). 185 + ========= ====================================================================== 186 + 187 + Have fun! 188 + 189 + Gerd Knorr <kraxel@goldbach.in-berlin.de> 190 + 191 + Minor (mostly typo) changes 192 + by Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
-181
Documentation/fb/vesafb.txt
··· 1 - 2 - What is vesafb? 3 - =============== 4 - 5 - This is a generic driver for a graphic framebuffer on intel boxes. 6 - 7 - The idea is simple: Turn on graphics mode at boot time with the help 8 - of the BIOS, and use this as framebuffer device /dev/fb0, like the m68k 9 - (and other) ports do. 10 - 11 - This means we decide at boot time whenever we want to run in text or 12 - graphics mode. Switching mode later on (in protected mode) is 13 - impossible; BIOS calls work in real mode only. VESA BIOS Extensions 14 - Version 2.0 are required, because we need a linear frame buffer. 15 - 16 - Advantages: 17 - 18 - * It provides a nice large console (128 cols + 48 lines with 1024x768) 19 - without using tiny, unreadable fonts. 20 - * You can run XF68_FBDev on top of /dev/fb0 (=> non-accelerated X11 21 - support for every VBE 2.0 compliant graphics board). 22 - * Most important: boot logo :-) 23 - 24 - Disadvantages: 25 - 26 - * graphic mode is slower than text mode... 27 - 28 - 29 - How to use it? 30 - ============== 31 - 32 - Switching modes is done using the vga=... boot parameter. Read 33 - Documentation/svga.txt for details. 34 - 35 - You should compile in both vgacon (for text mode) and vesafb (for 36 - graphics mode). Which of them takes over the console depends on 37 - whenever the specified mode is text or graphics. 38 - 39 - The graphic modes are NOT in the list which you get if you boot with 40 - vga=ask and hit return. The mode you wish to use is derived from the 41 - VESA mode number. Here are those VESA mode numbers: 42 - 43 - | 640x480 800x600 1024x768 1280x1024 44 - ----+------------------------------------- 45 - 256 | 0x101 0x103 0x105 0x107 46 - 32k | 0x110 0x113 0x116 0x119 47 - 64k | 0x111 0x114 0x117 0x11A 48 - 16M | 0x112 0x115 0x118 0x11B 49 - 50 - The video mode number of the Linux kernel is the VESA mode number plus 51 - 0x200. 52 - 53 - Linux_kernel_mode_number = VESA_mode_number + 0x200 54 - 55 - So the table for the Kernel mode numbers are: 56 - 57 - | 640x480 800x600 1024x768 1280x1024 58 - ----+------------------------------------- 59 - 256 | 0x301 0x303 0x305 0x307 60 - 32k | 0x310 0x313 0x316 0x319 61 - 64k | 0x311 0x314 0x317 0x31A 62 - 16M | 0x312 0x315 0x318 0x31B 63 - 64 - To enable one of those modes you have to specify "vga=ask" in the 65 - lilo.conf file and rerun LILO. Then you can type in the desired 66 - mode at the "vga=ask" prompt. For example if you like to use 67 - 1024x768x256 colors you have to say "305" at this prompt. 68 - 69 - If this does not work, this might be because your BIOS does not support 70 - linear framebuffers or because it does not support this mode at all. 71 - Even if your board does, it might be the BIOS which does not. VESA BIOS 72 - Extensions v2.0 are required, 1.2 is NOT sufficient. You will get a 73 - "bad mode number" message if something goes wrong. 74 - 75 - 1. Note: LILO cannot handle hex, for booting directly with 76 - "vga=mode-number" you have to transform the numbers to decimal. 77 - 2. Note: Some newer versions of LILO appear to work with those hex values, 78 - if you set the 0x in front of the numbers. 79 - 80 - X11 81 - === 82 - 83 - XF68_FBDev should work just fine, but it is non-accelerated. Running 84 - another (accelerated) X-Server like XF86_SVGA might or might not work. 85 - It depends on X-Server and graphics board. 86 - 87 - The X-Server must restore the video mode correctly, else you end up 88 - with a broken console (and vesafb cannot do anything about this). 89 - 90 - 91 - Refresh rates 92 - ============= 93 - 94 - There is no way to change the vesafb video mode and/or timings after 95 - booting linux. If you are not happy with the 60 Hz refresh rate, you 96 - have these options: 97 - 98 - * configure and load the DOS-Tools for the graphics board (if 99 - available) and boot linux with loadlin. 100 - * use a native driver (matroxfb/atyfb) instead if vesafb. If none 101 - is available, write a new one! 102 - * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0 103 - support nor the specs, so I have not checked this yet. 104 - 105 - 106 - Configuration 107 - ============= 108 - 109 - The VESA BIOS provides protected mode interface for changing 110 - some parameters. vesafb can use it for palette changes and 111 - to pan the display. It is turned off by default because it 112 - seems not to work with some BIOS versions, but there are options 113 - to turn it on. 114 - 115 - You can pass options to vesafb using "video=vesafb:option" on 116 - the kernel command line. Multiple options should be separated 117 - by comma, like this: "video=vesafb:ypan,inverse" 118 - 119 - Accepted options: 120 - 121 - inverse use inverse color map 122 - 123 - ypan enable display panning using the VESA protected mode 124 - interface. The visible screen is just a window of the 125 - video memory, console scrolling is done by changing the 126 - start of the window. 127 - pro: * scrolling (fullscreen) is fast, because there is 128 - no need to copy around data. 129 - * You'll get scrollback (the Shift-PgUp thing), 130 - the video memory can be used as scrollback buffer 131 - kontra: * scrolling only parts of the screen causes some 132 - ugly flicker effects (boot logo flickers for 133 - example). 134 - 135 - ywrap Same as ypan, but assumes your gfx board can wrap-around 136 - the video memory (i.e. starts reading from top if it 137 - reaches the end of video memory). Faster than ypan. 138 - 139 - redraw scroll by redrawing the affected part of the screen, this 140 - is the safe (and slow) default. 141 - 142 - 143 - vgapal Use the standard vga registers for palette changes. 144 - This is the default. 145 - pmipal Use the protected mode interface for palette changes. 146 - 147 - mtrr:n setup memory type range registers for the vesafb framebuffer 148 - where n: 149 - 0 - disabled (equivalent to nomtrr) (default) 150 - 1 - uncachable 151 - 2 - write-back 152 - 3 - write-combining 153 - 4 - write-through 154 - 155 - If you see the following in dmesg, choose the type that matches the 156 - old one. In this example, use "mtrr:2". 157 - ... 158 - mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining 159 - ... 160 - 161 - nomtrr disable mtrr 162 - 163 - vremap:n 164 - remap 'n' MiB of video RAM. If 0 or not specified, remap memory 165 - according to video mode. (2.5.66 patch/idea by Antonino Daplas 166 - reversed to give override possibility (allocate more fb memory 167 - than the kernel would) to 2.4 by tmb@iki.fi) 168 - 169 - vtotal:n 170 - if the video BIOS of your card incorrectly determines the total 171 - amount of video RAM, use this option to override the BIOS (in MiB). 172 - 173 - Have fun! 174 - 175 - Gerd 176 - 177 - -- 178 - Gerd Knorr <kraxel@goldbach.in-berlin.de> 179 - 180 - Minor (mostly typo) changes 181 - by Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
+297
Documentation/fb/viafb.rst
··· 1 + ======================================================= 2 + VIA Integration Graphic Chip Console Framebuffer Driver 3 + ======================================================= 4 + 5 + Platform 6 + -------- 7 + The console framebuffer driver is for graphics chips of 8 + VIA UniChrome Family 9 + (CLE266, PM800 / CN400 / CN300, 10 + P4M800CE / P4M800Pro / CN700 / VN800, 11 + CX700 / VX700, K8M890, P4M890, 12 + CN896 / P4M900, VX800, VX855) 13 + 14 + Driver features 15 + --------------- 16 + Device: CRT, LCD, DVI 17 + 18 + Support viafb_mode:: 19 + 20 + CRT: 21 + 640x480(60, 75, 85, 100, 120 Hz), 720x480(60 Hz), 22 + 720x576(60 Hz), 800x600(60, 75, 85, 100, 120 Hz), 23 + 848x480(60 Hz), 856x480(60 Hz), 1024x512(60 Hz), 24 + 1024x768(60, 75, 85, 100 Hz), 1152x864(75 Hz), 25 + 1280x768(60 Hz), 1280x960(60 Hz), 1280x1024(60, 75, 85 Hz), 26 + 1440x1050(60 Hz), 1600x1200(60, 75 Hz), 1280x720(60 Hz), 27 + 1920x1080(60 Hz), 1400x1050(60 Hz), 800x480(60 Hz) 28 + 29 + color depth: 8 bpp, 16 bpp, 32 bpp supports. 30 + 31 + Support 2D hardware accelerator. 32 + 33 + Using the viafb module 34 + ---------------------- 35 + Start viafb with default settings:: 36 + 37 + #modprobe viafb 38 + 39 + Start viafb with user options:: 40 + 41 + #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60 42 + viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1 43 + viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60 44 + viafb_SAMM_ON=1 45 + 46 + viafb_mode: 47 + - 640x480 (default) 48 + - 720x480 49 + - 800x600 50 + - 1024x768 51 + 52 + viafb_bpp: 53 + - 8, 16, 32 (default:32) 54 + 55 + viafb_refresh: 56 + - 60, 75, 85, 100, 120 (default:60) 57 + 58 + viafb_lcd_dsp_method: 59 + - 0 : expansion (default) 60 + - 1 : centering 61 + 62 + viafb_lcd_mode: 63 + 0 : LCD panel with LSB data format input (default) 64 + 1 : LCD panel with MSB data format input 65 + 66 + viafb_lcd_panel_id: 67 + - 0 : Resolution: 640x480, Channel: single, Dithering: Enable 68 + - 1 : Resolution: 800x600, Channel: single, Dithering: Enable 69 + - 2 : Resolution: 1024x768, Channel: single, Dithering: Enable (default) 70 + - 3 : Resolution: 1280x768, Channel: single, Dithering: Enable 71 + - 4 : Resolution: 1280x1024, Channel: dual, Dithering: Enable 72 + - 5 : Resolution: 1400x1050, Channel: dual, Dithering: Enable 73 + - 6 : Resolution: 1600x1200, Channel: dual, Dithering: Enable 74 + 75 + - 8 : Resolution: 800x480, Channel: single, Dithering: Enable 76 + - 9 : Resolution: 1024x768, Channel: dual, Dithering: Enable 77 + - 10: Resolution: 1024x768, Channel: single, Dithering: Disable 78 + - 11: Resolution: 1024x768, Channel: dual, Dithering: Disable 79 + - 12: Resolution: 1280x768, Channel: single, Dithering: Disable 80 + - 13: Resolution: 1280x1024, Channel: dual, Dithering: Disable 81 + - 14: Resolution: 1400x1050, Channel: dual, Dithering: Disable 82 + - 15: Resolution: 1600x1200, Channel: dual, Dithering: Disable 83 + - 16: Resolution: 1366x768, Channel: single, Dithering: Disable 84 + - 17: Resolution: 1024x600, Channel: single, Dithering: Enable 85 + - 18: Resolution: 1280x768, Channel: dual, Dithering: Enable 86 + - 19: Resolution: 1280x800, Channel: single, Dithering: Enable 87 + 88 + viafb_accel: 89 + - 0 : No 2D Hardware Acceleration 90 + - 1 : 2D Hardware Acceleration (default) 91 + 92 + viafb_SAMM_ON: 93 + - 0 : viafb_SAMM_ON disable (default) 94 + - 1 : viafb_SAMM_ON enable 95 + 96 + viafb_mode1: (secondary display device) 97 + - 640x480 (default) 98 + - 720x480 99 + - 800x600 100 + - 1024x768 101 + 102 + viafb_bpp1: (secondary display device) 103 + - 8, 16, 32 (default:32) 104 + 105 + viafb_refresh1: (secondary display device) 106 + - 60, 75, 85, 100, 120 (default:60) 107 + 108 + viafb_active_dev: 109 + This option is used to specify active devices.(CRT, DVI, CRT+LCD...) 110 + DVI stands for DVI or HDMI, E.g., If you want to enable HDMI, 111 + set viafb_active_dev=DVI. In SAMM case, the previous of 112 + viafb_active_dev is primary device, and the following is 113 + secondary device. 114 + 115 + For example: 116 + 117 + To enable one device, such as DVI only, we can use:: 118 + 119 + modprobe viafb viafb_active_dev=DVI 120 + 121 + To enable two devices, such as CRT+DVI:: 122 + 123 + modprobe viafb viafb_active_dev=CRT+DVI; 124 + 125 + For DuoView case, we can use:: 126 + 127 + modprobe viafb viafb_active_dev=CRT+DVI 128 + 129 + OR:: 130 + 131 + modprobe viafb viafb_active_dev=DVI+CRT... 132 + 133 + For SAMM case: 134 + 135 + If CRT is primary and DVI is secondary, we should use:: 136 + 137 + modprobe viafb viafb_active_dev=CRT+DVI viafb_SAMM_ON=1... 138 + 139 + If DVI is primary and CRT is secondary, we should use:: 140 + 141 + modprobe viafb viafb_active_dev=DVI+CRT viafb_SAMM_ON=1... 142 + 143 + viafb_display_hardware_layout: 144 + This option is used to specify display hardware layout for CX700 chip. 145 + 146 + - 1 : LCD only 147 + - 2 : DVI only 148 + - 3 : LCD+DVI (default) 149 + - 4 : LCD1+LCD2 (internal + internal) 150 + - 16: LCD1+ExternalLCD2 (internal + external) 151 + 152 + viafb_second_size: 153 + This option is used to set second device memory size(MB) in SAMM case. 154 + The minimal size is 16. 155 + 156 + viafb_platform_epia_dvi: 157 + This option is used to enable DVI on EPIA - M 158 + 159 + - 0 : No DVI on EPIA - M (default) 160 + - 1 : DVI on EPIA - M 161 + 162 + viafb_bus_width: 163 + When using 24 - Bit Bus Width Digital Interface, 164 + this option should be set. 165 + 166 + - 12: 12-Bit LVDS or 12-Bit TMDS (default) 167 + - 24: 24-Bit LVDS or 24-Bit TMDS 168 + 169 + viafb_device_lcd_dualedge: 170 + When using Dual Edge Panel, this option should be set. 171 + 172 + - 0 : No Dual Edge Panel (default) 173 + - 1 : Dual Edge Panel 174 + 175 + viafb_lcd_port: 176 + This option is used to specify LCD output port, 177 + available values are "DVP0" "DVP1" "DFP_HIGHLOW" "DFP_HIGH" "DFP_LOW". 178 + 179 + for external LCD + external DVI on CX700(External LCD is on DVP0), 180 + we should use:: 181 + 182 + modprobe viafb viafb_lcd_port=DVP0... 183 + 184 + Notes: 185 + 1. CRT may not display properly for DuoView CRT & DVI display at 186 + the "640x480" PAL mode with DVI overscan enabled. 187 + 2. SAMM stands for single adapter multi monitors. It is different from 188 + multi-head since SAMM support multi monitor at driver layers, thus fbcon 189 + layer doesn't even know about it; SAMM's second screen doesn't have a 190 + device node file, thus a user mode application can't access it directly. 191 + When SAMM is enabled, viafb_mode and viafb_mode1, viafb_bpp and 192 + viafb_bpp1, viafb_refresh and viafb_refresh1 can be different. 193 + 3. When console is depending on viafbinfo1, dynamically change resolution 194 + and bpp, need to call VIAFB specified ioctl interface VIAFB_SET_DEVICE 195 + instead of calling common ioctl function FBIOPUT_VSCREENINFO since 196 + viafb doesn't support multi-head well, or it will cause screen crush. 197 + 198 + 199 + Configure viafb with "fbset" tool 200 + --------------------------------- 201 + 202 + "fbset" is an inbox utility of Linux. 203 + 204 + 1. Inquire current viafb information, type:: 205 + 206 + # fbset -i 207 + 208 + 2. Set various resolutions and viafb_refresh rates:: 209 + 210 + # fbset <resolution-vertical_sync> 211 + 212 + example:: 213 + 214 + # fbset "1024x768-75" 215 + 216 + or:: 217 + 218 + # fbset -g 1024 768 1024 768 32 219 + 220 + Check the file "/etc/fb.modes" to find display modes available. 221 + 222 + 3. Set the color depth:: 223 + 224 + # fbset -depth <value> 225 + 226 + example:: 227 + 228 + # fbset -depth 16 229 + 230 + 231 + Configure viafb via /proc 232 + ------------------------- 233 + The following files exist in /proc/viafb 234 + 235 + supported_output_devices 236 + This read-only file contains a full ',' separated list containing all 237 + output devices that could be available on your platform. It is likely 238 + that not all of those have a connector on your hardware but it should 239 + provide a good starting point to figure out which of those names match 240 + a real connector. 241 + 242 + Example:: 243 + 244 + # cat /proc/viafb/supported_output_devices 245 + 246 + iga1/output_devices, iga2/output_devices 247 + These two files are readable and writable. iga1 and iga2 are the two 248 + independent units that produce the screen image. Those images can be 249 + forwarded to one or more output devices. Reading those files is a way 250 + to query which output devices are currently used by an iga. 251 + 252 + Example:: 253 + 254 + # cat /proc/viafb/iga1/output_devices 255 + 256 + If there are no output devices printed the output of this iga is lost. 257 + This can happen for example if only one (the other) iga is used. 258 + Writing to these files allows adjusting the output devices during 259 + runtime. One can add new devices, remove existing ones or switch 260 + between igas. Essentially you can write a ',' separated list of device 261 + names (or a single one) in the same format as the output to those 262 + files. You can add a '+' or '-' as a prefix allowing simple addition 263 + and removal of devices. So a prefix '+' adds the devices from your list 264 + to the already existing ones, '-' removes the listed devices from the 265 + existing ones and if no prefix is given it replaces all existing ones 266 + with the listed ones. If you remove devices they are expected to turn 267 + off. If you add devices that are already part of the other iga they are 268 + removed there and added to the new one. 269 + 270 + Examples: 271 + 272 + Add CRT as output device to iga1:: 273 + 274 + # echo +CRT > /proc/viafb/iga1/output_devices 275 + 276 + Remove (turn off) DVP1 and LVDS1 as output devices of iga2:: 277 + 278 + # echo -DVP1,LVDS1 > /proc/viafb/iga2/output_devices 279 + 280 + Replace all iga1 output devices by CRT:: 281 + 282 + # echo CRT > /proc/viafb/iga1/output_devices 283 + 284 + 285 + Bootup with viafb 286 + ----------------- 287 + 288 + Add the following line to your grub.conf:: 289 + 290 + append = "video=viafb:viafb_mode=1024x768,viafb_bpp=32,viafb_refresh=85" 291 + 292 + 293 + VIA Framebuffer modes 294 + ===================== 295 + 296 + .. include:: viafb.modes 297 + :literal:
-252
Documentation/fb/viafb.txt
··· 1 - 2 - VIA Integration Graphic Chip Console Framebuffer Driver 3 - 4 - [Platform] 5 - ----------------------- 6 - The console framebuffer driver is for graphics chips of 7 - VIA UniChrome Family(CLE266, PM800 / CN400 / CN300, 8 - P4M800CE / P4M800Pro / CN700 / VN800, 9 - CX700 / VX700, K8M890, P4M890, 10 - CN896 / P4M900, VX800, VX855) 11 - 12 - [Driver features] 13 - ------------------------ 14 - Device: CRT, LCD, DVI 15 - 16 - Support viafb_mode: 17 - CRT: 18 - 640x480(60, 75, 85, 100, 120 Hz), 720x480(60 Hz), 19 - 720x576(60 Hz), 800x600(60, 75, 85, 100, 120 Hz), 20 - 848x480(60 Hz), 856x480(60 Hz), 1024x512(60 Hz), 21 - 1024x768(60, 75, 85, 100 Hz), 1152x864(75 Hz), 22 - 1280x768(60 Hz), 1280x960(60 Hz), 1280x1024(60, 75, 85 Hz), 23 - 1440x1050(60 Hz), 1600x1200(60, 75 Hz), 1280x720(60 Hz), 24 - 1920x1080(60 Hz), 1400x1050(60 Hz), 800x480(60 Hz) 25 - 26 - color depth: 8 bpp, 16 bpp, 32 bpp supports. 27 - 28 - Support 2D hardware accelerator. 29 - 30 - [Using the viafb module] 31 - -- -- -------------------- 32 - Start viafb with default settings: 33 - #modprobe viafb 34 - 35 - Start viafb with user options: 36 - #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60 37 - viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1 38 - viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60 39 - viafb_SAMM_ON=1 40 - 41 - viafb_mode: 42 - 640x480 (default) 43 - 720x480 44 - 800x600 45 - 1024x768 46 - ...... 47 - 48 - viafb_bpp: 49 - 8, 16, 32 (default:32) 50 - 51 - viafb_refresh: 52 - 60, 75, 85, 100, 120 (default:60) 53 - 54 - viafb_lcd_dsp_method: 55 - 0 : expansion (default) 56 - 1 : centering 57 - 58 - viafb_lcd_mode: 59 - 0 : LCD panel with LSB data format input (default) 60 - 1 : LCD panel with MSB data format input 61 - 62 - viafb_lcd_panel_id: 63 - 0 : Resolution: 640x480, Channel: single, Dithering: Enable 64 - 1 : Resolution: 800x600, Channel: single, Dithering: Enable 65 - 2 : Resolution: 1024x768, Channel: single, Dithering: Enable (default) 66 - 3 : Resolution: 1280x768, Channel: single, Dithering: Enable 67 - 4 : Resolution: 1280x1024, Channel: dual, Dithering: Enable 68 - 5 : Resolution: 1400x1050, Channel: dual, Dithering: Enable 69 - 6 : Resolution: 1600x1200, Channel: dual, Dithering: Enable 70 - 71 - 8 : Resolution: 800x480, Channel: single, Dithering: Enable 72 - 9 : Resolution: 1024x768, Channel: dual, Dithering: Enable 73 - 10: Resolution: 1024x768, Channel: single, Dithering: Disable 74 - 11: Resolution: 1024x768, Channel: dual, Dithering: Disable 75 - 12: Resolution: 1280x768, Channel: single, Dithering: Disable 76 - 13: Resolution: 1280x1024, Channel: dual, Dithering: Disable 77 - 14: Resolution: 1400x1050, Channel: dual, Dithering: Disable 78 - 15: Resolution: 1600x1200, Channel: dual, Dithering: Disable 79 - 16: Resolution: 1366x768, Channel: single, Dithering: Disable 80 - 17: Resolution: 1024x600, Channel: single, Dithering: Enable 81 - 18: Resolution: 1280x768, Channel: dual, Dithering: Enable 82 - 19: Resolution: 1280x800, Channel: single, Dithering: Enable 83 - 84 - viafb_accel: 85 - 0 : No 2D Hardware Acceleration 86 - 1 : 2D Hardware Acceleration (default) 87 - 88 - viafb_SAMM_ON: 89 - 0 : viafb_SAMM_ON disable (default) 90 - 1 : viafb_SAMM_ON enable 91 - 92 - viafb_mode1: (secondary display device) 93 - 640x480 (default) 94 - 720x480 95 - 800x600 96 - 1024x768 97 - ... ... 98 - 99 - viafb_bpp1: (secondary display device) 100 - 8, 16, 32 (default:32) 101 - 102 - viafb_refresh1: (secondary display device) 103 - 60, 75, 85, 100, 120 (default:60) 104 - 105 - viafb_active_dev: 106 - This option is used to specify active devices.(CRT, DVI, CRT+LCD...) 107 - DVI stands for DVI or HDMI, E.g., If you want to enable HDMI, 108 - set viafb_active_dev=DVI. In SAMM case, the previous of 109 - viafb_active_dev is primary device, and the following is 110 - secondary device. 111 - 112 - For example: 113 - To enable one device, such as DVI only, we can use: 114 - modprobe viafb viafb_active_dev=DVI 115 - To enable two devices, such as CRT+DVI: 116 - modprobe viafb viafb_active_dev=CRT+DVI; 117 - 118 - For DuoView case, we can use: 119 - modprobe viafb viafb_active_dev=CRT+DVI 120 - OR 121 - modprobe viafb viafb_active_dev=DVI+CRT... 122 - 123 - For SAMM case: 124 - If CRT is primary and DVI is secondary, we should use: 125 - modprobe viafb viafb_active_dev=CRT+DVI viafb_SAMM_ON=1... 126 - If DVI is primary and CRT is secondary, we should use: 127 - modprobe viafb viafb_active_dev=DVI+CRT viafb_SAMM_ON=1... 128 - 129 - viafb_display_hardware_layout: 130 - This option is used to specify display hardware layout for CX700 chip. 131 - 1 : LCD only 132 - 2 : DVI only 133 - 3 : LCD+DVI (default) 134 - 4 : LCD1+LCD2 (internal + internal) 135 - 16: LCD1+ExternalLCD2 (internal + external) 136 - 137 - viafb_second_size: 138 - This option is used to set second device memory size(MB) in SAMM case. 139 - The minimal size is 16. 140 - 141 - viafb_platform_epia_dvi: 142 - This option is used to enable DVI on EPIA - M 143 - 0 : No DVI on EPIA - M (default) 144 - 1 : DVI on EPIA - M 145 - 146 - viafb_bus_width: 147 - When using 24 - Bit Bus Width Digital Interface, 148 - this option should be set. 149 - 12: 12-Bit LVDS or 12-Bit TMDS (default) 150 - 24: 24-Bit LVDS or 24-Bit TMDS 151 - 152 - viafb_device_lcd_dualedge: 153 - When using Dual Edge Panel, this option should be set. 154 - 0 : No Dual Edge Panel (default) 155 - 1 : Dual Edge Panel 156 - 157 - viafb_lcd_port: 158 - This option is used to specify LCD output port, 159 - available values are "DVP0" "DVP1" "DFP_HIGHLOW" "DFP_HIGH" "DFP_LOW". 160 - for external LCD + external DVI on CX700(External LCD is on DVP0), 161 - we should use: 162 - modprobe viafb viafb_lcd_port=DVP0... 163 - 164 - Notes: 165 - 1. CRT may not display properly for DuoView CRT & DVI display at 166 - the "640x480" PAL mode with DVI overscan enabled. 167 - 2. SAMM stands for single adapter multi monitors. It is different from 168 - multi-head since SAMM support multi monitor at driver layers, thus fbcon 169 - layer doesn't even know about it; SAMM's second screen doesn't have a 170 - device node file, thus a user mode application can't access it directly. 171 - When SAMM is enabled, viafb_mode and viafb_mode1, viafb_bpp and 172 - viafb_bpp1, viafb_refresh and viafb_refresh1 can be different. 173 - 3. When console is depending on viafbinfo1, dynamically change resolution 174 - and bpp, need to call VIAFB specified ioctl interface VIAFB_SET_DEVICE 175 - instead of calling common ioctl function FBIOPUT_VSCREENINFO since 176 - viafb doesn't support multi-head well, or it will cause screen crush. 177 - 178 - 179 - [Configure viafb with "fbset" tool] 180 - ----------------------------------- 181 - "fbset" is an inbox utility of Linux. 182 - 1. Inquire current viafb information, type, 183 - # fbset -i 184 - 185 - 2. Set various resolutions and viafb_refresh rates, 186 - # fbset <resolution-vertical_sync> 187 - 188 - example, 189 - # fbset "1024x768-75" 190 - or 191 - # fbset -g 1024 768 1024 768 32 192 - Check the file "/etc/fb.modes" to find display modes available. 193 - 194 - 3. Set the color depth, 195 - # fbset -depth <value> 196 - 197 - example, 198 - # fbset -depth 16 199 - 200 - 201 - [Configure viafb via /proc] 202 - --------------------------- 203 - The following files exist in /proc/viafb 204 - 205 - supported_output_devices 206 - 207 - This read-only file contains a full ',' separated list containing all 208 - output devices that could be available on your platform. It is likely 209 - that not all of those have a connector on your hardware but it should 210 - provide a good starting point to figure out which of those names match 211 - a real connector. 212 - Example: 213 - # cat /proc/viafb/supported_output_devices 214 - 215 - iga1/output_devices 216 - iga2/output_devices 217 - 218 - These two files are readable and writable. iga1 and iga2 are the two 219 - independent units that produce the screen image. Those images can be 220 - forwarded to one or more output devices. Reading those files is a way 221 - to query which output devices are currently used by an iga. 222 - Example: 223 - # cat /proc/viafb/iga1/output_devices 224 - If there are no output devices printed the output of this iga is lost. 225 - This can happen for example if only one (the other) iga is used. 226 - Writing to these files allows adjusting the output devices during 227 - runtime. One can add new devices, remove existing ones or switch 228 - between igas. Essentially you can write a ',' separated list of device 229 - names (or a single one) in the same format as the output to those 230 - files. You can add a '+' or '-' as a prefix allowing simple addition 231 - and removal of devices. So a prefix '+' adds the devices from your list 232 - to the already existing ones, '-' removes the listed devices from the 233 - existing ones and if no prefix is given it replaces all existing ones 234 - with the listed ones. If you remove devices they are expected to turn 235 - off. If you add devices that are already part of the other iga they are 236 - removed there and added to the new one. 237 - Examples: 238 - Add CRT as output device to iga1 239 - # echo +CRT > /proc/viafb/iga1/output_devices 240 - 241 - Remove (turn off) DVP1 and LVDS1 as output devices of iga2 242 - # echo -DVP1,LVDS1 > /proc/viafb/iga2/output_devices 243 - 244 - Replace all iga1 output devices by CRT 245 - # echo CRT > /proc/viafb/iga1/output_devices 246 - 247 - 248 - [Bootup with viafb]: 249 - -------------------- 250 - Add the following line to your grub.conf: 251 - append = "video=viafb:viafb_mode=1024x768,viafb_bpp=32,viafb_refresh=85" 252 -
+64
Documentation/fb/vt8623fb.rst
··· 1 + =============================================================== 2 + vt8623fb - fbdev driver for graphics core in VIA VT8623 chipset 3 + =============================================================== 4 + 5 + 6 + Supported Hardware 7 + ================== 8 + 9 + VIA VT8623 [CLE266] chipset and its graphics core 10 + (known as CastleRock or Unichrome) 11 + 12 + I tested vt8623fb on VIA EPIA ML-6000 13 + 14 + 15 + Supported Features 16 + ================== 17 + 18 + * 4 bpp pseudocolor modes (with 18bit palette, two variants) 19 + * 8 bpp pseudocolor mode (with 18bit palette) 20 + * 16 bpp truecolor mode (RGB 565) 21 + * 32 bpp truecolor mode (RGB 888) 22 + * text mode (activated by bpp = 0) 23 + * doublescan mode variant (not available in text mode) 24 + * panning in both directions 25 + * suspend/resume support 26 + * DPMS support 27 + 28 + Text mode is supported even in higher resolutions, but there is limitation to 29 + lower pixclocks (maximum about 100 MHz). This limitation is not enforced by 30 + driver. Text mode supports 8bit wide fonts only (hardware limitation) and 31 + 16bit tall fonts (driver limitation). 32 + 33 + There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with 34 + packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode 35 + with interleaved planes (1 byte interleave), MSB first. Both modes support 36 + 8bit wide fonts only (driver limitation). 37 + 38 + Suspend/resume works on systems that initialize video card during resume and 39 + if device is active (for example used by fbcon). 40 + 41 + 42 + Missing Features 43 + ================ 44 + (alias TODO list) 45 + 46 + * secondary (not initialized by BIOS) device support 47 + * MMIO support 48 + * interlaced mode variant 49 + * support for fontwidths != 8 in 4 bpp modes 50 + * support for fontheight != 16 in text mode 51 + * hardware cursor 52 + * video overlay support 53 + * vsync synchronization 54 + * acceleration support (8514-like 2D, busmaster transfers) 55 + 56 + 57 + Known bugs 58 + ========== 59 + 60 + * cursor disable in text mode doesn't work 61 + 62 + 63 + -- 64 + Ondrej Zajicek <santiago@crfreenet.org>
-64
Documentation/fb/vt8623fb.txt
··· 1 - 2 - vt8623fb - fbdev driver for graphics core in VIA VT8623 chipset 3 - =============================================================== 4 - 5 - 6 - Supported Hardware 7 - ================== 8 - 9 - VIA VT8623 [CLE266] chipset and its graphics core 10 - (known as CastleRock or Unichrome) 11 - 12 - I tested vt8623fb on VIA EPIA ML-6000 13 - 14 - 15 - Supported Features 16 - ================== 17 - 18 - * 4 bpp pseudocolor modes (with 18bit palette, two variants) 19 - * 8 bpp pseudocolor mode (with 18bit palette) 20 - * 16 bpp truecolor mode (RGB 565) 21 - * 32 bpp truecolor mode (RGB 888) 22 - * text mode (activated by bpp = 0) 23 - * doublescan mode variant (not available in text mode) 24 - * panning in both directions 25 - * suspend/resume support 26 - * DPMS support 27 - 28 - Text mode is supported even in higher resolutions, but there is limitation to 29 - lower pixclocks (maximum about 100 MHz). This limitation is not enforced by 30 - driver. Text mode supports 8bit wide fonts only (hardware limitation) and 31 - 16bit tall fonts (driver limitation). 32 - 33 - There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with 34 - packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode 35 - with interleaved planes (1 byte interleave), MSB first. Both modes support 36 - 8bit wide fonts only (driver limitation). 37 - 38 - Suspend/resume works on systems that initialize video card during resume and 39 - if device is active (for example used by fbcon). 40 - 41 - 42 - Missing Features 43 - ================ 44 - (alias TODO list) 45 - 46 - * secondary (not initialized by BIOS) device support 47 - * MMIO support 48 - * interlaced mode variant 49 - * support for fontwidths != 8 in 4 bpp modes 50 - * support for fontheight != 16 in text mode 51 - * hardware cursor 52 - * video overlay support 53 - * vsync synchronization 54 - * acceleration support (8514-like 2D, busmaster transfers) 55 - 56 - 57 - Known bugs 58 - ========== 59 - 60 - * cursor disable in text mode doesn't work 61 - 62 - 63 - -- 64 - Ondrej Zajicek <santiago@crfreenet.org>
+5 -5
MAINTAINERS
··· 4789 4789 W: http://plugable.com/category/projects/udlfb/ 4790 4790 F: drivers/video/fbdev/udlfb.c 4791 4791 F: include/video/udlfb.h 4792 - F: Documentation/fb/udlfb.txt 4792 + F: Documentation/fb/udlfb.rst 4793 4793 4794 4794 DISTRIBUTED LOCK MANAGER (DLM) 4795 4795 M: Christine Caulfield <ccaulfie@redhat.com> ··· 7923 7923 M: Maik Broemme <mbroemme@libmpq.org> 7924 7924 L: linux-fbdev@vger.kernel.org 7925 7925 S: Maintained 7926 - F: Documentation/fb/intelfb.txt 7926 + F: Documentation/fb/intelfb.rst 7927 7927 F: drivers/video/fbdev/intelfb/ 7928 7928 7929 7929 INTEL GPIO DRIVERS ··· 14350 14350 L: linux-fbdev@vger.kernel.org 14351 14351 S: Maintained 14352 14352 F: drivers/video/fbdev/sm712* 14353 - F: Documentation/fb/sm712fb.txt 14353 + F: Documentation/fb/sm712fb.rst 14354 14354 14355 14355 SIMPLE FIRMWARE INTERFACE (SFI) 14356 14356 M: Len Brown <lenb@kernel.org> ··· 14420 14420 M: Thomas Winischhofer <thomas@winischhofer.net> 14421 14421 W: http://www.winischhofer.net/linuxsisvga.shtml 14422 14422 S: Maintained 14423 - F: Documentation/fb/sisfb.txt 14423 + F: Documentation/fb/sisfb.rst 14424 14424 F: drivers/video/fbdev/sis/ 14425 14425 F: include/video/sisfb.h 14426 14426 ··· 16608 16608 L: linux-fbdev@vger.kernel.org 16609 16609 W: https://github.com/mjanusz/v86d 16610 16610 S: Maintained 16611 - F: Documentation/fb/uvesafb.txt 16611 + F: Documentation/fb/uvesafb.rst 16612 16612 F: drivers/video/fbdev/uvesafb.* 16613 16613 16614 16614 VF610 NAND DRIVER
+1 -1
drivers/tty/Kconfig
··· 95 95 96 96 See <file:Documentation/console/console.txt> for more 97 97 information. For framebuffer console users, please refer to 98 - <file:Documentation/fb/fbcon.txt>. 98 + <file:Documentation/fb/fbcon.rst>. 99 99 100 100 config UNIX98_PTYS 101 101 bool "Unix98 PTY support" if EXPERT
+12 -12
drivers/video/fbdev/Kconfig
··· 31 31 in the /dev directory, i.e. /dev/fb*. 32 32 33 33 You need an utility program called fbset to make full use of frame 34 - buffer devices. Please read <file:Documentation/fb/framebuffer.txt> 34 + buffer devices. Please read <file:Documentation/fb/framebuffer.rst> 35 35 and the Framebuffer-HOWTO at 36 36 <http://www.munted.org.uk/programming/Framebuffer-HOWTO-1.3.html> for more 37 37 information. ··· 241 241 If you have a PCI-based system, this enables support for these 242 242 chips: GD-543x, GD-544x, GD-5480. 243 243 244 - Please read the file <file:Documentation/fb/cirrusfb.txt>. 244 + Please read the file <file:Documentation/fb/cirrusfb.rst>. 245 245 246 246 Say N unless you have such a graphics board or plan to get one 247 247 before you next recompile the kernel. ··· 614 614 615 615 This driver generally provides more features than vesafb but 616 616 requires a userspace helper application called 'v86d'. See 617 - <file:Documentation/fb/uvesafb.txt> for more information. 617 + <file:Documentation/fb/uvesafb.rst> for more information. 618 618 619 619 If unsure, say N. 620 620 ··· 629 629 This is the frame buffer device driver for generic VESA 2.0 630 630 compliant graphic cards. The older VESA 1.2 cards are not supported. 631 631 You will get a boot time penguin logo at no additional cost. Please 632 - read <file:Documentation/fb/vesafb.txt>. If unsure, say Y. 632 + read <file:Documentation/fb/vesafb.rst>. If unsure, say Y. 633 633 634 634 config FB_EFI 635 635 bool "EFI-based Framebuffer Support" ··· 825 825 module load time. The parameters look like "video=pvr2:XXX", where 826 826 the meaning of XXX can be found at the end of the main source file 827 827 (<file:drivers/video/pvr2fb.c>). Please see the file 828 - <file:Documentation/fb/pvr2fb.txt>. 828 + <file:Documentation/fb/pvr2fb.rst>. 829 829 830 830 config FB_OPENCORES 831 831 tristate "OpenCores VGA/LCD core 2.0 framebuffer support" ··· 987 987 module will be called i810fb. 988 988 989 989 For more information, please read 990 - <file:Documentation/fb/intel810.txt> 990 + <file:Documentation/fb/intel810.rst> 991 991 992 992 config FB_I810_GTF 993 993 bool "use VESA Generalized Timing Formula" ··· 1057 1057 To compile this driver as a module, choose M here: the 1058 1058 module will be called intelfb. 1059 1059 1060 - For more information, please read <file:Documentation/fb/intelfb.txt> 1060 + For more information, please read <file:Documentation/fb/intelfb.rst> 1061 1061 1062 1062 config FB_INTEL_DEBUG 1063 1063 bool "Intel driver Debug Messages" ··· 1094 1094 1095 1095 You can pass several parameters to the driver at boot time or at 1096 1096 module load time. The parameters look like "video=matroxfb:XXX", and 1097 - are described in <file:Documentation/fb/matroxfb.txt>. 1097 + are described in <file:Documentation/fb/matroxfb.rst>. 1098 1098 1099 1099 config FB_MATROX_MILLENIUM 1100 1100 bool "Millennium I/II support" ··· 1245 1245 help 1246 1246 This driver supports graphics boards with the ATI Rage128 chips. 1247 1247 Say Y if you have such a graphics board and read 1248 - <file:Documentation/fb/aty128fb.txt>. 1248 + <file:Documentation/fb/aty128fb.rst>. 1249 1249 1250 1250 To compile this driver as a module, choose M here: the 1251 1251 module will be called aty128fb. ··· 1507 1507 1508 1508 WARNING: Do not use any application that uses the 3D engine 1509 1509 (namely glide) while using this driver. 1510 - Please read the <file:Documentation/fb/sstfb.txt> for supported 1510 + Please read the <file:Documentation/fb/sstfb.rst> for supported 1511 1511 options and other important info support. 1512 1512 1513 1513 config FB_VT8623 ··· 1539 1539 There are also integrated versions of these chips called CyberXXXX, 1540 1540 CyberImage or CyberBlade. These chips are mostly found in laptops 1541 1541 but also on some motherboards including early VIA EPIA motherboards. 1542 - For more information, read <file:Documentation/fb/tridentfb.txt> 1542 + For more information, read <file:Documentation/fb/tridentfb.rst> 1543 1543 1544 1544 Say Y if you have such a graphics board. 1545 1545 ··· 1778 1778 single model of flatpanel then you can safely leave this 1779 1779 option disabled. 1780 1780 1781 - <file:Documentation/fb/pxafb.txt> describes the available parameters. 1781 + <file:Documentation/fb/pxafb.rst> describes the available parameters. 1782 1782 1783 1783 config PXA3XX_GCU 1784 1784 tristate "PXA3xx 2D graphics accelerator driver"
+1 -1
drivers/video/fbdev/matrox/matroxfb_base.c
··· 2502 2502 module_param(noinit, int, 0); 2503 2503 MODULE_PARM_DESC(noinit, "Disables W/SG/SD-RAM and bus interface initialization (0 or 1=do not initialize) (default=0)"); 2504 2504 module_param(memtype, int, 0); 2505 - MODULE_PARM_DESC(memtype, "Memory type for G200/G400 (see Documentation/fb/matroxfb.txt for explanation) (default=3 for G200, 0 for G400)"); 2505 + MODULE_PARM_DESC(memtype, "Memory type for G200/G400 (see Documentation/fb/matroxfb.rst for explanation) (default=3 for G200, 0 for G400)"); 2506 2506 module_param(mtrr, int, 0); 2507 2507 MODULE_PARM_DESC(mtrr, "This speeds up video memory accesses (0=disabled or 1) (default=1)"); 2508 2508 module_param(sgram, int, 0);
+1 -1
drivers/video/fbdev/pxafb.c
··· 2068 2068 #define pxafb_setup_options() (0) 2069 2069 2070 2070 module_param_string(options, g_options, sizeof(g_options), 0); 2071 - MODULE_PARM_DESC(options, "LCD parameters (see Documentation/fb/pxafb.txt)"); 2071 + MODULE_PARM_DESC(options, "LCD parameters (see Documentation/fb/pxafb.rst)"); 2072 2072 #endif 2073 2073 2074 2074 #else
+1 -1
drivers/video/fbdev/sh7760fb.c
··· 6 6 * Manuel Lauss <mano@roarinelk.homelinux.net> 7 7 * (c) 2008 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> 8 8 * 9 - * PLEASE HAVE A LOOK AT Documentation/fb/sh7760fb.txt! 9 + * PLEASE HAVE A LOOK AT Documentation/fb/sh7760fb.rst! 10 10 * 11 11 * Thanks to Siegfried Schaefer <s.schaefer at schaefer-edv.de> 12 12 * for his original source and testing!