Skip to content
Snippets Groups Projects
Commit ab42b818 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Jonathan Corbet
Browse files

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: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 10ffebbe
No related branches found
No related tags found
No related merge requests found
Showing
with 910 additions and 359 deletions
...@@ -5024,7 +5024,7 @@ ...@@ -5024,7 +5024,7 @@
vector=percpu: enable percpu vector domain vector=percpu: enable percpu vector domain
video= [FB] Frame buffer configuration video= [FB] Frame buffer configuration
See Documentation/fb/modedb.txt. See Documentation/fb/modedb.rst.
video.brightness_switch_enabled= [0,1] video.brightness_switch_enabled= [0,1]
If set to 1, on receiving an ACPI notify event If set to 1, on receiving an ACPI notify event
......
===========================
The Frame Buffer Device API The Frame Buffer Device API
--------------------------- ===========================
Last revised: June 21, 2011 Last revised: June 21, 2011
...@@ -21,7 +22,7 @@ deal with different behaviours. ...@@ -21,7 +22,7 @@ deal with different behaviours.
--------------- ---------------
Device and driver capabilities are reported in the fixed screen information Device and driver capabilities are reported in the fixed screen information
capabilities field. capabilities field::
struct fb_fix_screeninfo { struct fb_fix_screeninfo {
... ...
...@@ -151,7 +152,7 @@ fb_fix_screeninfo and fb_var_screeninfo structure respectively. ...@@ -151,7 +152,7 @@ fb_fix_screeninfo and fb_var_screeninfo structure respectively.
struct fb_fix_screeninfo stores device independent unchangeable information struct fb_fix_screeninfo stores device independent unchangeable information
about the frame buffer device and the current format. Those information can't about the frame buffer device and the current format. Those information can't
be directly modified by applications, but can be changed by the driver when an be directly modified by applications, but can be changed by the driver when an
application modifies the format. application modifies the format::
struct fb_fix_screeninfo { struct fb_fix_screeninfo {
char id[16]; /* identification string eg "TT Builtin" */ char id[16]; /* identification string eg "TT Builtin" */
...@@ -176,7 +177,7 @@ struct fb_fix_screeninfo { ...@@ -176,7 +177,7 @@ struct fb_fix_screeninfo {
struct fb_var_screeninfo stores device independent changeable information struct fb_var_screeninfo stores device independent changeable information
about a frame buffer device, its current format and video mode, as well as about a frame buffer device, its current format and video mode, as well as
other miscellaneous parameters. other miscellaneous parameters::
struct fb_var_screeninfo { struct fb_var_screeninfo {
__u32 xres; /* visible resolution */ __u32 xres; /* visible resolution */
...@@ -255,7 +256,7 @@ monochrome, grayscale or pseudocolor visuals, although this is not required. ...@@ -255,7 +256,7 @@ monochrome, grayscale or pseudocolor visuals, although this is not required.
- For truecolor and directcolor formats, applications set the grayscale field - For truecolor and directcolor formats, applications set the grayscale field
to zero, and the red, blue, green and transp fields to describe the layout of to zero, and the red, blue, green and transp fields to describe the layout of
color components in memory. color components in memory::
struct fb_bitfield { struct fb_bitfield {
__u32 offset; /* beginning of bitfield */ __u32 offset; /* beginning of bitfield */
......
========================================
arkfb - fbdev driver for ARK Logic chips arkfb - fbdev driver for ARK Logic chips
======================================== ========================================
......
[This file is cloned from VesaFB/matroxfb] =================
What is aty128fb? What is aty128fb?
================= =================
.. [This file is cloned from VesaFB/matroxfb]
This is a driver for a graphic framebuffer for ATI Rage128 based devices This is a driver for a graphic framebuffer for ATI Rage128 based devices
on Intel and PPC boxes. on Intel and PPC boxes.
...@@ -24,15 +25,15 @@ How to use it? ...@@ -24,15 +25,15 @@ How to use it?
============== ==============
Switching modes is done using the video=aty128fb:<resolution>... modedb Switching modes is done using the video=aty128fb:<resolution>... modedb
boot parameter or using `fbset' program. boot parameter or using `fbset` program.
See Documentation/fb/modedb.txt for more information on modedb See Documentation/fb/modedb.rst for more information on modedb
resolutions. resolutions.
You should compile in both vgacon (to boot if you remove your Rage128 from You should compile in both vgacon (to boot if you remove your Rage128 from
box) and aty128fb (for graphics mode). You should not compile-in vesafb box) and aty128fb (for graphics mode). You should not compile-in vesafb
unless you have primary display on non-Rage128 VBE2.0 device (see unless you have primary display on non-Rage128 VBE2.0 device (see
Documentation/fb/vesafb.txt for details). Documentation/fb/vesafb.rst for details).
X11 X11
...@@ -48,16 +49,18 @@ Configuration ...@@ -48,16 +49,18 @@ Configuration
============= =============
You can pass kernel command line options to vesafb with You can pass kernel command line options to vesafb with
`video=aty128fb:option1,option2:value2,option3' (multiple options should `video=aty128fb:option1,option2:value2,option3` (multiple options should
be separated by comma, values are separated from options by `:'). be separated by comma, values are separated from options by `:`).
Accepted options: Accepted options:
noaccel - do not use acceleration engine. It is default. ========= =======================================================
accel - use acceleration engine. Not finished. noaccel do not use acceleration engine. It is default.
vmode:x - chooses PowerMacintosh video mode <x>. Deprecated. accel use acceleration engine. Not finished.
cmode:x - chooses PowerMacintosh colour mode <x>. Deprecated. vmode:x chooses PowerMacintosh video mode <x>. Deprecated.
<XxX@X> - selects startup videomode. See modedb.txt for detailed cmode:x chooses PowerMacintosh colour mode <x>. Deprecated.
<XxX@X> selects startup videomode. See modedb.txt for detailed
explanation. Default is 640x480x8bpp. explanation. Default is 640x480x8bpp.
========= =======================================================
Limitations Limitations
...@@ -65,8 +68,8 @@ Limitations ...@@ -65,8 +68,8 @@ Limitations
There are known and unknown bugs, features and misfeatures. There are known and unknown bugs, features and misfeatures.
Currently there are following known bugs: Currently there are following known bugs:
+ This driver is still experimental and is not finished. Too many
- This driver is still experimental and is not finished. Too many
bugs/errata to list here. bugs/errata to list here.
--
Brad Douglas <brad@neruo.com> Brad Douglas <brad@neruo.com>
============================================
Framebuffer driver for Cirrus Logic chipsets Framebuffer driver for Cirrus Logic chipsets
Copyright 1999 Jeff Garzik <jgarzik@pobox.com> ============================================
Copyright 1999 Jeff Garzik <jgarzik@pobox.com>
{ just a little something to get people going; contributors welcome! }
.. just a little something to get people going; contributors welcome!
Chip families supported: Chip families supported:
SD64 - SD64
Piccolo - Piccolo
Picasso - Picasso
Spectrum - Spectrum
Alpine (GD-543x/4x) - Alpine (GD-543x/4x)
Picasso4 (GD-5446) - Picasso4 (GD-5446)
GD-5480 - GD-5480
Laguna (GD-546x) - Laguna (GD-546x)
Bus's supported: Bus's supported:
PCI - PCI
Zorro - Zorro
Architectures supported: Architectures supported:
i386 - i386
Alpha - Alpha
PPC (Motorola Powerstack) - PPC (Motorola Powerstack)
m68k (Amiga) - m68k (Amiga)
...@@ -34,10 +34,9 @@ Default video modes ...@@ -34,10 +34,9 @@ Default video modes
------------------- -------------------
At the moment, there are two kernel command line arguments supported: At the moment, there are two kernel command line arguments supported:
mode:640x480 - mode:640x480
mode:800x600 - mode:800x600
or - mode:1024x768
mode:1024x768
Full support for startup video modes (modedb) will be integrated soon. Full support for startup video modes (modedb) will be integrated soon.
...@@ -93,5 +92,3 @@ Version 1.9.4 ...@@ -93,5 +92,3 @@ Version 1.9.4
Version 1.9.3 Version 1.9.3
------------- -------------
* Bundled with kernel 2.3.14-pre1 or later. * Bundled with kernel 2.3.14-pre1 or later.
==========================
Understanding fbdev's cmap Understanding fbdev's cmap
-------------------------- ==========================
These notes explain how X's dix layer uses fbdev's cmap structures. These notes explain how X's dix layer uses fbdev's cmap structures.
*. example of relevant structures in fbdev as used for a 3-bit grayscale cmap - example of relevant structures in fbdev as used for a 3-bit grayscale cmap::
struct fb_var_screeninfo { struct fb_var_screeninfo {
.bits_per_pixel = 8, .bits_per_pixel = 8,
.grayscale = 1, .grayscale = 1,
...@@ -19,7 +21,8 @@ for (i = 0; i < 8; i++) ...@@ -19,7 +21,8 @@ for (i = 0; i < 8; i++)
memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8); memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8);
memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8); memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8);
*. X11 apps do something like the following when trying to use grayscale. - X11 apps do something like the following when trying to use grayscale::
for (i=0; i < 8; i++) { for (i=0; i < 8; i++) {
char colorspec[64]; char colorspec[64];
memset(colorspec,0,64); memset(colorspec,0,64);
...@@ -29,12 +32,13 @@ for (i=0; i < 8; i++) { ...@@ -29,12 +32,13 @@ for (i=0; i < 8; i++) {
XAllocColor(outputDisplay, testColormap, &wantedColor); XAllocColor(outputDisplay, testColormap, &wantedColor);
grays[i] = wantedColor; grays[i] = wantedColor;
} }
There's also named equivalents like gray1..x provided you have an rgb.txt. There's also named equivalents like gray1..x provided you have an rgb.txt.
Somewhere in X's callchain, this results in a call to X code that handles the Somewhere in X's callchain, this results in a call to X code that handles the
colormap. For example, Xfbdev hits the following: colormap. For example, Xfbdev hits the following:
xc-011010/programs/Xserver/dix/colormap.c: xc-011010/programs/Xserver/dix/colormap.c::
FindBestPixel(pentFirst, size, prgb, channel) FindBestPixel(pentFirst, size, prgb, channel)
...@@ -50,4 +54,3 @@ directly from the info->cmap.red that was listed above. The prgb is the rgb ...@@ -50,4 +54,3 @@ directly from the info->cmap.red that was listed above. The prgb is the rgb
that the app wants to match to. The above code is doing what looks like a least that the app wants to match to. The above code is doing what looks like a least
squares matching function. That's why the cmap entries can't be set to the left squares matching function. That's why the cmap entries can't be set to the left
hand side boundaries of a color range. hand side boundaries of a color range.
===========
Deferred IO Deferred IO
----------- ===========
Deferred IO is a way to delay and repurpose IO. It uses host memory as a Deferred IO is a way to delay and repurpose IO. It uses host memory as a
buffer and the MMU pagefault as a pretrigger for when to perform the device buffer and the MMU pagefault as a pretrigger for when to perform the device
...@@ -47,7 +48,7 @@ How to use it: (for fbdev drivers) ...@@ -47,7 +48,7 @@ How to use it: (for fbdev drivers)
---------------------------------- ----------------------------------
The following example may be helpful. The following example may be helpful.
1. Setup your structure. Eg: 1. Setup your structure. Eg::
static struct fb_deferred_io hecubafb_defio = { static struct fb_deferred_io hecubafb_defio = {
.delay = HZ, .delay = HZ,
...@@ -58,7 +59,8 @@ The delay is the minimum delay between when the page_mkwrite trigger occurs ...@@ -58,7 +59,8 @@ The delay is the minimum delay between when the page_mkwrite trigger occurs
and when the deferred_io callback is called. The deferred_io callback is and when the deferred_io callback is called. The deferred_io callback is
explained below. explained below.
2. Setup your deferred IO callback. Eg: 2. Setup your deferred IO callback. Eg::
static void hecubafb_dpy_deferred_io(struct fb_info *info, static void hecubafb_dpy_deferred_io(struct fb_info *info,
struct list_head *pagelist) struct list_head *pagelist)
...@@ -67,9 +69,11 @@ device. You receive the pagelist which is the list of pages that were written ...@@ -67,9 +69,11 @@ device. You receive the pagelist which is the list of pages that were written
to during the delay. You must not modify this list. This callback is called to during the delay. You must not modify this list. This callback is called
from a workqueue. from a workqueue.
3. Call init 3. Call init::
info->fbdefio = &hecubafb_defio; info->fbdefio = &hecubafb_defio;
fb_deferred_io_init(info); fb_deferred_io_init(info);
4. Call cleanup 4. Call cleanup::
fb_deferred_io_cleanup(info); fb_deferred_io_cleanup(info);
==============
What is efifb? What is efifb?
=============== ==============
This is a generic EFI platform driver for Intel based Apple computers. This is a generic EFI platform driver for Intel based Apple computers.
efifb is only for EFI booted Intel Macs. efifb is only for EFI booted Intel Macs.
...@@ -8,16 +8,17 @@ efifb is only for EFI booted Intel Macs. ...@@ -8,16 +8,17 @@ efifb is only for EFI booted Intel Macs.
Supported Hardware Supported Hardware
================== ==================
iMac 17"/20" - iMac 17"/20"
Macbook - Macbook
Macbook Pro 15"/17" - Macbook Pro 15"/17"
MacMini - MacMini
How to use it? How to use it?
============== ==============
efifb does not have any kind of autodetection of your machine. efifb does not have any kind of autodetection of your machine.
You have to add the following kernel parameters in your elilo.conf: You have to add the following kernel parameters in your elilo.conf::
Macbook : Macbook :
video=efifb:macbook video=efifb:macbook
MacMini : MacMini :
...@@ -29,9 +30,10 @@ You have to add the following kernel parameters in your elilo.conf: ...@@ -29,9 +30,10 @@ You have to add the following kernel parameters in your elilo.conf:
Accepted options: Accepted options:
======= ===========================================================
nowc Don't map the framebuffer write combined. This can be used nowc Don't map the framebuffer write combined. This can be used
to workaround side-effects and slowdowns on other CPU cores to workaround side-effects and slowdowns on other CPU cores
when large amounts of console data are written. when large amounts of console data are written.
======= ===========================================================
--
Edgar Hucek <gimli@dark-green.com> Edgar Hucek <gimli@dark-green.com>
...@@ -4,7 +4,7 @@ Driver for EP93xx LCD controller ...@@ -4,7 +4,7 @@ Driver for EP93xx LCD controller
The EP93xx LCD controller can drive both standard desktop monitors and The EP93xx LCD controller can drive both standard desktop monitors and
embedded LCD displays. If you have a standard desktop monitor then you embedded LCD displays. If you have a standard desktop monitor then you
can use the standard Linux video mode database. In your board file: can use the standard Linux video mode database. In your board file::
static struct ep93xxfb_mach_info some_board_fb_info = { static struct ep93xxfb_mach_info some_board_fb_info = {
.num_modes = EP93XXFB_USE_MODEDB, .num_modes = EP93XXFB_USE_MODEDB,
...@@ -12,7 +12,7 @@ can use the standard Linux video mode database. In your board file: ...@@ -12,7 +12,7 @@ can use the standard Linux video mode database. In your board file:
}; };
If you have an embedded LCD display then you need to define a video If you have an embedded LCD display then you need to define a video
mode for it as follows: mode for it as follows::
static struct fb_videomode some_board_video_modes[] = { static struct fb_videomode some_board_video_modes[] = {
{ {
...@@ -23,11 +23,11 @@ mode for it as follows: ...@@ -23,11 +23,11 @@ mode for it as follows:
Note that the pixel clock value is in pico-seconds. You can use the Note that the pixel clock value is in pico-seconds. You can use the
KHZ2PICOS macro to convert the pixel clock value. Most other values KHZ2PICOS macro to convert the pixel clock value. Most other values
are in pixel clocks. See Documentation/fb/framebuffer.txt for further are in pixel clocks. See Documentation/fb/framebuffer.rst for further
details. details.
The ep93xxfb_mach_info structure for your board should look like the The ep93xxfb_mach_info structure for your board should look like the
following: following::
static struct ep93xxfb_mach_info some_board_fb_info = { static struct ep93xxfb_mach_info some_board_fb_info = {
.num_modes = ARRAY_SIZE(some_board_video_modes), .num_modes = ARRAY_SIZE(some_board_video_modes),
...@@ -37,7 +37,7 @@ following: ...@@ -37,7 +37,7 @@ following:
}; };
The framebuffer device can be registered by adding the following to The framebuffer device can be registered by adding the following to
your board initialisation function: your board initialisation function::
ep93xx_register_fb(&some_board_fb_info); ep93xx_register_fb(&some_board_fb_info);
...@@ -50,6 +50,7 @@ to configure the controller. The video attributes flags are fully ...@@ -50,6 +50,7 @@ to configure the controller. The video attributes flags are fully
documented in section 7 of the EP93xx users' guide. The following documented in section 7 of the EP93xx users' guide. The following
flags are available: flags are available:
=============================== ==========================================
EP93XXFB_PCLK_FALLING Clock data on the falling edge of the EP93XXFB_PCLK_FALLING Clock data on the falling edge of the
pixel clock. The default is to clock pixel clock. The default is to clock
data on the rising edge. data on the rising edge.
...@@ -62,10 +63,12 @@ EP93XXFB_SYNC_HORIZ_HIGH Horizontal sync is active high. By ...@@ -62,10 +63,12 @@ EP93XXFB_SYNC_HORIZ_HIGH Horizontal sync is active high. By
EP93XXFB_SYNC_VERT_HIGH Vertical sync is active high. By EP93XXFB_SYNC_VERT_HIGH Vertical sync is active high. By
default the vertical sync is active high. default the vertical sync is active high.
=============================== ==========================================
The physical address of the framebuffer can be controlled using the The physical address of the framebuffer can be controlled using the
following flags: following flags:
=============================== ======================================
EP93XXFB_USE_SDCSN0 Use SDCSn[0] for the framebuffer. This EP93XXFB_USE_SDCSN0 Use SDCSn[0] for the framebuffer. This
is the default setting. is the default setting.
...@@ -74,6 +77,7 @@ EP93XXFB_USE_SDCSN1 Use SDCSn[1] for the framebuffer. ...@@ -74,6 +77,7 @@ EP93XXFB_USE_SDCSN1 Use SDCSn[1] for the framebuffer.
EP93XXFB_USE_SDCSN2 Use SDCSn[2] for the framebuffer. EP93XXFB_USE_SDCSN2 Use SDCSn[2] for the framebuffer.
EP93XXFB_USE_SDCSN3 Use SDCSn[3] for the framebuffer. EP93XXFB_USE_SDCSN3 Use SDCSn[3] for the framebuffer.
=============================== ======================================
================== ==================
Platform callbacks Platform callbacks
...@@ -87,7 +91,7 @@ blanked or unblanked. ...@@ -87,7 +91,7 @@ blanked or unblanked.
The setup and teardown devices pass the platform_device structure as The setup and teardown devices pass the platform_device structure as
an argument. The fb_info and ep93xxfb_mach_info structures can be an argument. The fb_info and ep93xxfb_mach_info structures can be
obtained as follows: obtained as follows::
static int some_board_fb_setup(struct platform_device *pdev) static int some_board_fb_setup(struct platform_device *pdev)
{ {
...@@ -101,17 +105,17 @@ obtained as follows: ...@@ -101,17 +105,17 @@ obtained as follows:
Setting the video mode Setting the video mode
====================== ======================
The video mode is set using the following syntax: The video mode is set using the following syntax::
video=XRESxYRES[-BPP][@REFRESH] video=XRESxYRES[-BPP][@REFRESH]
If the EP93xx video driver is built-in then the video mode is set on If the EP93xx video driver is built-in then the video mode is set on
the Linux kernel command line, for example: the Linux kernel command line, for example::
video=ep93xx-fb:800x600-16@60 video=ep93xx-fb:800x600-16@60
If the EP93xx video driver is built as a module then the video mode is If the EP93xx video driver is built as a module then the video mode is
set when the module is installed: set when the module is installed::
modprobe ep93xx-fb video=320x240 modprobe ep93xx-fb video=320x240
...@@ -121,13 +125,14 @@ Screenpage bug ...@@ -121,13 +125,14 @@ Screenpage bug
At least on the EP9315 there is a silicon bug which causes bit 27 of At least on the EP9315 there is a silicon bug which causes bit 27 of
the VIDSCRNPAGE (framebuffer physical offset) to be tied low. There is the VIDSCRNPAGE (framebuffer physical offset) to be tied low. There is
an unofficial errata for this bug at: an unofficial errata for this bug at::
http://marc.info/?l=linux-arm-kernel&m=110061245502000&w=2 http://marc.info/?l=linux-arm-kernel&m=110061245502000&w=2
By default the EP93xx framebuffer driver checks if the allocated physical By default the EP93xx framebuffer driver checks if the allocated physical
address has bit 27 set. If it does, then the memory is freed and an address has bit 27 set. If it does, then the memory is freed and an
error is returned. The check can be disabled by adding the following error is returned. The check can be disabled by adding the following
option when loading the driver: option when loading the driver::
ep93xx-fb.check_screenpage_bug=0 ep93xx-fb.check_screenpage_bug=0
......
=======================
The Framebuffer Console The Framebuffer Console
======================= =======================
...@@ -16,6 +17,7 @@ etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature ...@@ -16,6 +17,7 @@ etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature
made available by the underlying graphics card are also possible. made available by the underlying graphics card are also possible.
A. Configuration A. Configuration
================
The framebuffer console can be enabled by using your favorite kernel The framebuffer console can be enabled by using your favorite kernel
configuration tool. It is under Device Drivers->Graphics Support->Frame configuration tool. It is under Device Drivers->Graphics Support->Frame
...@@ -44,6 +46,7 @@ fortunate to have a driver that does not alter the graphics chip, then you ...@@ -44,6 +46,7 @@ fortunate to have a driver that does not alter the graphics chip, then you
will still get a VGA console. will still get a VGA console.
B. Loading B. Loading
==========
Possible scenarios: Possible scenarios:
...@@ -98,7 +101,7 @@ C. Boot options ...@@ -98,7 +101,7 @@ C. Boot options
which console. The value '0123' is a sequence that gets repeated until which console. The value '0123' is a sequence that gets repeated until
the total length is 64 which is the number of consoles available. In the total length is 64 which is the number of consoles available. In
the above example, it is expanded to 012301230123... and the mapping the above example, it is expanded to 012301230123... and the mapping
will be: will be::
tty | 1 2 3 4 5 6 7 8 9 ... tty | 1 2 3 4 5 6 7 8 9 ...
fb | 0 1 2 3 0 1 2 3 0 ... fb | 0 1 2 3 0 1 2 3 0 ...
...@@ -129,17 +132,17 @@ C. Boot options ...@@ -129,17 +132,17 @@ C. Boot options
This option changes the orientation angle of the console display. The This option changes the orientation angle of the console display. The
value 'n' accepts the following: value 'n' accepts the following:
0 - normal orientation (0 degree) - 0 - normal orientation (0 degree)
1 - clockwise orientation (90 degrees) - 1 - clockwise orientation (90 degrees)
2 - upside down orientation (180 degrees) - 2 - upside down orientation (180 degrees)
3 - counterclockwise orientation (270 degrees) - 3 - counterclockwise orientation (270 degrees)
The angle can be changed anytime afterwards by 'echoing' the same The angle can be changed anytime afterwards by 'echoing' the same
numbers to any one of the 2 attributes found in numbers to any one of the 2 attributes found in
/sys/class/graphics/fbcon: /sys/class/graphics/fbcon:
rotate - rotate the display of the active console - rotate - rotate the display of the active console
rotate_all - rotate the display of all consoles - rotate_all - rotate the display of all consoles
Console rotation will only become available if Framebuffer Console Console rotation will only become available if Framebuffer Console
Rotation support is compiled in your kernel. Rotation support is compiled in your kernel.
...@@ -177,7 +180,7 @@ Before going on to how to attach, detach and unload the framebuffer console, an ...@@ -177,7 +180,7 @@ Before going on to how to attach, detach and unload the framebuffer console, an
illustration of the dependencies may help. illustration of the dependencies may help.
The console layer, as with most subsystems, needs a driver that interfaces with The console layer, as with most subsystems, needs a driver that interfaces with
the hardware. Thus, in a VGA console: the hardware. Thus, in a VGA console::
console ---> VGA driver ---> hardware. console ---> VGA driver ---> hardware.
...@@ -187,7 +190,7 @@ unloaded if it is still bound to the console layer. (See ...@@ -187,7 +190,7 @@ unloaded if it is still bound to the console layer. (See
Documentation/console/console.txt for more information). Documentation/console/console.txt for more information).
This is more complicated in the case of the framebuffer console (fbcon), This is more complicated in the case of the framebuffer console (fbcon),
because fbcon is an intermediate layer between the console and the drivers: because fbcon is an intermediate layer between the console and the drivers::
console ---> fbcon ---> fbdev drivers ---> hardware console ---> fbcon ---> fbdev drivers ---> hardware
...@@ -204,7 +207,7 @@ So, how do we unbind fbcon from the console? Part of the answer is in ...@@ -204,7 +207,7 @@ So, how do we unbind fbcon from the console? Part of the answer is in
Documentation/console/console.txt. To summarize: Documentation/console/console.txt. To summarize:
Echo a value to the bind file that represents the framebuffer console Echo a value to the bind file that represents the framebuffer console
driver. So assuming vtcon1 represents fbcon, then: driver. So assuming vtcon1 represents fbcon, then::
echo 1 > sys/class/vtconsole/vtcon1/bind - attach framebuffer console to echo 1 > sys/class/vtconsole/vtcon1/bind - attach framebuffer console to
console layer console layer
...@@ -223,7 +226,7 @@ restored properly. The following is one of the several methods that you can do: ...@@ -223,7 +226,7 @@ restored properly. The following is one of the several methods that you can do:
2. In your kernel configuration, ensure that CONFIG_FRAMEBUFFER_CONSOLE is set 2. In your kernel configuration, ensure that CONFIG_FRAMEBUFFER_CONSOLE is set
to 'y' or 'm'. Enable one or more of your favorite framebuffer drivers. to 'y' or 'm'. Enable one or more of your favorite framebuffer drivers.
3. Boot into text mode and as root run: 3. Boot into text mode and as root run::
vbetool vbestate save > <vga state file> vbetool vbestate save > <vga state file>
...@@ -231,11 +234,11 @@ restored properly. The following is one of the several methods that you can do: ...@@ -231,11 +234,11 @@ restored properly. The following is one of the several methods that you can do:
hardware to <vga state file>. You need to do this step only once as hardware to <vga state file>. You need to do this step only once as
the state file can be reused. the state file can be reused.
4. If fbcon is compiled as a module, load fbcon by doing: 4. If fbcon is compiled as a module, load fbcon by doing::
modprobe fbcon modprobe fbcon
5. Now to detach fbcon: 5. Now to detach fbcon::
vbetool vbestate restore < <vga state file> && \ vbetool vbestate restore < <vga state file> && \
echo 0 > /sys/class/vtconsole/vtcon1/bind echo 0 > /sys/class/vtconsole/vtcon1/bind
...@@ -243,7 +246,7 @@ restored properly. The following is one of the several methods that you can do: ...@@ -243,7 +246,7 @@ restored properly. The following is one of the several methods that you can do:
6. That's it, you're back to VGA mode. And if you compiled fbcon as a module, 6. That's it, you're back to VGA mode. And if you compiled fbcon as a module,
you can unload it by 'rmmod fbcon'. you can unload it by 'rmmod fbcon'.
7. To reattach fbcon: 7. To reattach fbcon::
echo 1 > /sys/class/vtconsole/vtcon1/bind echo 1 > /sys/class/vtconsole/vtcon1/bind
...@@ -266,23 +269,23 @@ the following: ...@@ -266,23 +269,23 @@ the following:
Variation 1: Variation 1:
a. Before detaching fbcon, do a. Before detaching fbcon, do::
vbetool vbemode save > <vesa state file> # do once for each vesafb mode, vbetool vbemode save > <vesa state file> # do once for each vesafb mode,
# the file can be reused # the file can be reused
b. Detach fbcon as in step 5. b. Detach fbcon as in step 5.
c. Attach fbcon c. Attach fbcon::
vbetool vbestate restore < <vesa state file> && \ vbetool vbestate restore < <vesa state file> && \
echo 1 > /sys/class/vtconsole/vtcon1/bind echo 1 > /sys/class/vtconsole/vtcon1/bind
Variation 2: Variation 2:
a. Before detaching fbcon, do: a. Before detaching fbcon, do::
echo <ID> > /sys/class/tty/console/bind
echo <ID> > /sys/class/tty/console/bind
vbetool vbemode get vbetool vbemode get
...@@ -290,7 +293,7 @@ Variation 2: ...@@ -290,7 +293,7 @@ Variation 2:
b. Detach fbcon as in step 5. b. Detach fbcon as in step 5.
c. Attach fbcon: c. Attach fbcon::
vbetool vbemode set <mode number> && \ vbetool vbemode set <mode number> && \
echo 1 > /sys/class/vtconsole/vtcon1/bind echo 1 > /sys/class/vtconsole/vtcon1/bind
...@@ -299,9 +302,8 @@ Samples: ...@@ -299,9 +302,8 @@ Samples:
======== ========
Here are 2 sample bash scripts that you can use to bind or unbind the Here are 2 sample bash scripts that you can use to bind or unbind the
framebuffer console driver if you are on an X86 box: framebuffer console driver if you are on an X86 box::
---------------------------------------------------------------------------
#!/bin/bash #!/bin/bash
# Unbind fbcon # Unbind fbcon
...@@ -328,6 +330,9 @@ do ...@@ -328,6 +330,9 @@ do
done done
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
::
#!/bin/bash #!/bin/bash
# Bind fbcon # Bind fbcon
...@@ -341,7 +346,5 @@ do ...@@ -341,7 +346,5 @@ do
fi fi
fi fi
done done
---------------------------------------------------------------------------
--
Antonino Daplas <adaplas@pol.net> Antonino Daplas <adaplas@pol.net>
=======================
The Frame Buffer Device The Frame Buffer Device
----------------------- =======================
Maintained by Geert Uytterhoeven <geert@linux-m68k.org>
Last revised: May 10, 2001 Last revised: May 10, 2001
...@@ -26,7 +26,7 @@ other device in /dev. It's a character device using major 29; the minor ...@@ -26,7 +26,7 @@ other device in /dev. It's a character device using major 29; the minor
specifies the frame buffer number. specifies the frame buffer number.
By convention, the following device nodes are used (numbers indicate the device By convention, the following device nodes are used (numbers indicate the device
minor numbers): minor numbers)::
0 = /dev/fb0 First frame buffer 0 = /dev/fb0 First frame buffer
1 = /dev/fb1 Second frame buffer 1 = /dev/fb1 Second frame buffer
...@@ -34,15 +34,15 @@ minor numbers): ...@@ -34,15 +34,15 @@ minor numbers):
31 = /dev/fb31 32nd frame buffer 31 = /dev/fb31 32nd frame buffer
For backwards compatibility, you may want to create the following symbolic For backwards compatibility, you may want to create the following symbolic
links: links::
/dev/fb0current -> fb0 /dev/fb0current -> fb0
/dev/fb1current -> fb1 /dev/fb1current -> fb1
and so on... and so on...
The frame buffer devices are also `normal' memory devices, this means, you can The frame buffer devices are also `normal` memory devices, this means, you can
read and write their contents. You can, for example, make a screen snapshot by read and write their contents. You can, for example, make a screen snapshot by::
cp /dev/fb0 myfile cp /dev/fb0 myfile
...@@ -54,11 +54,11 @@ Application software that uses the frame buffer device (e.g. the X server) will ...@@ -54,11 +54,11 @@ Application software that uses the frame buffer device (e.g. the X server) will
use /dev/fb0 by default (older software uses /dev/fb0current). You can specify use /dev/fb0 by default (older software uses /dev/fb0current). You can specify
an alternative frame buffer device by setting the environment variable an alternative frame buffer device by setting the environment variable
$FRAMEBUFFER to the path name of a frame buffer device, e.g. (for sh/bash $FRAMEBUFFER to the path name of a frame buffer device, e.g. (for sh/bash
users): users)::
export FRAMEBUFFER=/dev/fb1 export FRAMEBUFFER=/dev/fb1
or (for csh users): or (for csh users)::
setenv FRAMEBUFFER /dev/fb1 setenv FRAMEBUFFER /dev/fb1
...@@ -113,10 +113,10 @@ much trouble... ...@@ -113,10 +113,10 @@ much trouble...
3. Frame Buffer Resolution Maintenance 3. Frame Buffer Resolution Maintenance
-------------------------------------- --------------------------------------
Frame buffer resolutions are maintained using the utility `fbset'. It can Frame buffer resolutions are maintained using the utility `fbset`. It can
change the video mode properties of a frame buffer device. Its main usage is change the video mode properties of a frame buffer device. Its main usage is
to change the current video mode, e.g. during boot up in one of your /etc/rc.* to change the current video mode, e.g. during boot up in one of your `/etc/rc.*`
or /etc/init.d/* files. or `/etc/init.d/*` files.
Fbset uses a video mode database stored in a configuration file, so you can Fbset uses a video mode database stored in a configuration file, so you can
easily add your own modes and refer to them with a simple identifier. easily add your own modes and refer to them with a simple identifier.
...@@ -129,8 +129,8 @@ The X server (XF68_FBDev) is the most notable application program for the frame ...@@ -129,8 +129,8 @@ The X server (XF68_FBDev) is the most notable application program for the frame
buffer device. Starting with XFree86 release 3.2, the X server is part of buffer device. Starting with XFree86 release 3.2, the X server is part of
XFree86 and has 2 modes: XFree86 and has 2 modes:
- If the `Display' subsection for the `fbdev' driver in the /etc/XF86Config - If the `Display` subsection for the `fbdev` driver in the /etc/XF86Config
file contains a file contains a::
Modes "default" Modes "default"
...@@ -146,7 +146,7 @@ XFree86 and has 2 modes: ...@@ -146,7 +146,7 @@ XFree86 and has 2 modes:
same virtual desktop size. The frame buffer device that's used is still same virtual desktop size. The frame buffer device that's used is still
/dev/fb0current (or $FRAMEBUFFER), but the available resolutions are /dev/fb0current (or $FRAMEBUFFER), but the available resolutions are
defined by /etc/XF86Config now. The disadvantage is that you have to defined by /etc/XF86Config now. The disadvantage is that you have to
specify the timings in a different format (but `fbset -x' may help). specify the timings in a different format (but `fbset -x` may help).
To tune a video mode, you can use fbset or xvidtune. Note that xvidtune doesn't To tune a video mode, you can use fbset or xvidtune. Note that xvidtune doesn't
work 100% with XF68_FBDev: the reported clock values are always incorrect. work 100% with XF68_FBDev: the reported clock values are always incorrect.
...@@ -172,29 +172,29 @@ retrace, the electron beam is turned off (blanked). ...@@ -172,29 +172,29 @@ retrace, the electron beam is turned off (blanked).
The speed at which the electron beam paints the pixels is determined by the The speed at which the electron beam paints the pixels is determined by the
dotclock in the graphics board. For a dotclock of e.g. 28.37516 MHz (millions dotclock in the graphics board. For a dotclock of e.g. 28.37516 MHz (millions
of cycles per second), each pixel is 35242 ps (picoseconds) long: of cycles per second), each pixel is 35242 ps (picoseconds) long::
1/(28.37516E6 Hz) = 35.242E-9 s 1/(28.37516E6 Hz) = 35.242E-9 s
If the screen resolution is 640x480, it will take If the screen resolution is 640x480, it will take::
640*35.242E-9 s = 22.555E-6 s 640*35.242E-9 s = 22.555E-6 s
to paint the 640 (xres) pixels on one scanline. But the horizontal retrace to paint the 640 (xres) pixels on one scanline. But the horizontal retrace
also takes time (e.g. 272 `pixels'), so a full scanline takes also takes time (e.g. 272 `pixels`), so a full scanline takes::
(640+272)*35.242E-9 s = 32.141E-6 s (640+272)*35.242E-9 s = 32.141E-6 s
We'll say that the horizontal scanrate is about 31 kHz: We'll say that the horizontal scanrate is about 31 kHz::
1/(32.141E-6 s) = 31.113E3 Hz 1/(32.141E-6 s) = 31.113E3 Hz
A full screen counts 480 (yres) lines, but we have to consider the vertical A full screen counts 480 (yres) lines, but we have to consider the vertical
retrace too (e.g. 49 `lines'). So a full screen will take retrace too (e.g. 49 `lines`). So a full screen will take::
(480+49)*32.141E-6 s = 17.002E-3 s (480+49)*32.141E-6 s = 17.002E-3 s
The vertical scanrate is about 59 Hz: The vertical scanrate is about 59 Hz::
1/(17.002E-3 s) = 58.815 Hz 1/(17.002E-3 s) = 58.815 Hz
...@@ -212,7 +212,7 @@ influenced by the moments at which the synchronization pulses occur. ...@@ -212,7 +212,7 @@ influenced by the moments at which the synchronization pulses occur.
The following picture summarizes all timings. The horizontal retrace time is The following picture summarizes all timings. The horizontal retrace time is
the sum of the left margin, the right margin and the hsync length, while the the sum of the left margin, the right margin and the hsync length, while the
vertical retrace time is the sum of the upper margin, the lower margin and the vertical retrace time is the sum of the upper margin, the lower margin and the
vsync length. vsync length::
+----------+---------------------------------------------+----------+-------+ +----------+---------------------------------------------+----------+-------+
| | ↑ | | | | | ↑ | | |
...@@ -256,7 +256,8 @@ The frame buffer device expects all horizontal timings in number of dotclocks ...@@ -256,7 +256,8 @@ The frame buffer device expects all horizontal timings in number of dotclocks
6. Converting XFree86 timing values info frame buffer device timings 6. Converting XFree86 timing values info frame buffer device timings
-------------------------------------------------------------------- --------------------------------------------------------------------
An XFree86 mode line consists of the following fields: An XFree86 mode line consists of the following fields::
"800x600" 50 800 856 976 1040 600 637 643 666 "800x600" 50 800 856 976 1040 600 637 643 666
< name > DCF HR SH1 SH2 HFL VR SV1 SV2 VFL < name > DCF HR SH1 SH2 HFL VR SV1 SV2 VFL
...@@ -271,19 +272,27 @@ The frame buffer device uses the following fields: ...@@ -271,19 +272,27 @@ The frame buffer device uses the following fields:
- vsync_len: length of vertical sync - vsync_len: length of vertical sync
1) Pixelclock: 1) Pixelclock:
xfree: in MHz xfree: in MHz
fb: in picoseconds (ps) fb: in picoseconds (ps)
pixclock = 1000000 / DCF pixclock = 1000000 / DCF
2) horizontal timings: 2) horizontal timings:
left_margin = HFL - SH2 left_margin = HFL - SH2
right_margin = SH1 - HR right_margin = SH1 - HR
hsync_len = SH2 - SH1 hsync_len = SH2 - SH1
3) vertical timings: 3) vertical timings:
upper_margin = VFL - SV2 upper_margin = VFL - SV2
lower_margin = SV1 - VR lower_margin = SV1 - VR
vsync_len = SV2 - SV1 vsync_len = SV2 - SV1
Good examples for VESA timings can be found in the XFree86 source tree, Good examples for VESA timings can be found in the XFree86 source tree,
...@@ -303,9 +312,10 @@ and to the following documentation: ...@@ -303,9 +312,10 @@ and to the following documentation:
- The manual pages for fbset: fbset(8), fb.modes(5) - The manual pages for fbset: fbset(8), fb.modes(5)
- The manual pages for XFree86: XF68_FBDev(1), XF86Config(4/5) - The manual pages for XFree86: XF68_FBDev(1), XF86Config(4/5)
- The mighty kernel sources: - The mighty kernel sources:
o linux/drivers/video/
o linux/include/linux/fb.h - linux/drivers/video/
o linux/include/video/ - linux/include/linux/fb.h
- linux/include/video/
...@@ -334,10 +344,10 @@ The latest version of fbset can be found at ...@@ -334,10 +344,10 @@ The latest version of fbset can be found at
10. Credits 10. Credits
---------- -----------
This readme was written by Geert Uytterhoeven, partly based on the original This readme was written by Geert Uytterhoeven, partly based on the original
`X-framebuffer.README' by Roman Hodek and Martin Schaller. Section 6 was `X-framebuffer.README` by Roman Hodek and Martin Schaller. Section 6 was
provided by Frank Neumann. provided by Frank Neumann.
The frame buffer device abstraction was designed by Martin Schaller. The frame buffer device abstraction was designed by Martin Schaller.
[This file is cloned from VesaFB/aty128fb] =============
What is gxfb? What is gxfb?
================= =============
.. [This file is cloned from VesaFB/aty128fb]
This is a graphics framebuffer driver for AMD Geode GX2 based processors. This is a graphics framebuffer driver for AMD Geode GX2 based processors.
...@@ -23,9 +24,9 @@ How to use it? ...@@ -23,9 +24,9 @@ How to use it?
============== ==============
Switching modes is done using gxfb.mode_option=<resolution>... boot Switching modes is done using gxfb.mode_option=<resolution>... boot
parameter or using `fbset' program. parameter or using `fbset` program.
See Documentation/fb/modedb.txt for more information on modedb See Documentation/fb/modedb.rst for more information on modedb
resolutions. resolutions.
...@@ -42,11 +43,12 @@ You can pass kernel command line options to gxfb with gxfb.<option>. ...@@ -42,11 +43,12 @@ You can pass kernel command line options to gxfb with gxfb.<option>.
For example, gxfb.mode_option=800x600@75. For example, gxfb.mode_option=800x600@75.
Accepted options: Accepted options:
mode_option - specify the video mode. Of the form ================ ==================================================
mode_option specify the video mode. Of the form
<x>x<y>[-<bpp>][@<refresh>] <x>x<y>[-<bpp>][@<refresh>]
vram - size of video ram (normally auto-detected) vram size of video ram (normally auto-detected)
vt_switch - enable vt switching during suspend/resume. The vt vt_switch enable vt switching during suspend/resume. The vt
switch is slow, but harmless. switch is slow, but harmless.
================ ==================================================
--
Andres Salomon <dilinger@debian.org> Andres Salomon <dilinger@debian.org>
:orphan:
============
Frame Buffer
============
.. toctree::
:maxdepth: 1
api
arkfb
aty128fb
cirrusfb
cmap_xfbdev
deferred_io
efifb
ep93xx-fb
fbcon
framebuffer
gxfb
intel810
intelfb
internals
lxfb
matroxfb
metronomefb
modedb
pvr2fb
pxafb
s3fb
sa1100fb
sh7760fb
sisfb
sm501
sm712fb
sstfb
tgafb
tridentfb
udlfb
uvesafb
vesafb
viafb
vt8623fb
.. only:: subproject and html
Indices
=======
* :ref:`genindex`
================================
Intel 810/815 Framebuffer driver Intel 810/815 Framebuffer driver
================================
Tony Daplas <adaplas@pol.net> Tony Daplas <adaplas@pol.net>
http://i810fb.sourceforge.net http://i810fb.sourceforge.net
March 17, 2002 March 17, 2002
First Released: July 2001 First Released: July 2001
Last Update: September 12, 2005 Last Update: September 12, 2005
================================================================
A. Introduction A. Introduction
===============
This is a framebuffer driver for various Intel 810/815 compatible This is a framebuffer driver for various Intel 810/815 compatible
graphics devices. These include: graphics devices. These include:
Intel 810 - Intel 810
Intel 810E - Intel 810E
Intel 810-DC100 - Intel 810-DC100
Intel 815 Internal graphics only, 100Mhz FSB - Intel 815 Internal graphics only, 100Mhz FSB
Intel 815 Internal graphics only - Intel 815 Internal graphics only
Intel 815 Internal graphics and AGP - Intel 815 Internal graphics and AGP
B. Features B. Features
============
- Choice of using Discrete Video Timings, VESA Generalized Timing - Choice of using Discrete Video Timings, VESA Generalized Timing
Formula, or a framebuffer specific database to set the video mode Formula, or a framebuffer specific database to set the video mode
...@@ -49,6 +54,7 @@ B. Features ...@@ -49,6 +54,7 @@ B. Features
- Supports EDID probing either by DDC/I2C or through the BIOS - Supports EDID probing either by DDC/I2C or through the BIOS
C. List of available options C. List of available options
=============================
a. "video=i810fb" a. "video=i810fb"
enables the i810 driver enables the i810 driver
...@@ -167,19 +173,20 @@ C. List of available options ...@@ -167,19 +173,20 @@ C. List of available options
o. <xres>x<yres>[-<bpp>][@<refresh>] o. <xres>x<yres>[-<bpp>][@<refresh>]
The driver will now accept specification of boot mode option. If this The driver will now accept specification of boot mode option. If this
is specified, the options 'xres' and 'yres' will be ignored. See is specified, the options 'xres' and 'yres' will be ignored. See
Documentation/fb/modedb.txt for usage. Documentation/fb/modedb.rst for usage.
D. Kernel booting D. Kernel booting
=================
Separate each option/option-pair by commas (,) and the option from its value Separate each option/option-pair by commas (,) and the option from its value
with a colon (:) as in the following: with a colon (:) as in the following::
video=i810fb:option1,option2:value2 video=i810fb:option1,option2:value2
Sample Usage Sample Usage
------------ ------------
In /etc/lilo.conf, add the line: In /etc/lilo.conf, add the line::
append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \ append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
vsync1:50,vsync2:85,accel,mtrr" vsync1:50,vsync2:85,accel,mtrr"
...@@ -196,6 +203,7 @@ vsync1 and vsync2 parameters. These parameters will be taken from the EDID ...@@ -196,6 +203,7 @@ vsync1 and vsync2 parameters. These parameters will be taken from the EDID
block. block.
E. Module options E. Module options
==================
The module parameters are essentially similar to the kernel The module parameters are essentially similar to the kernel
parameters. The main difference is that you need to include a Boolean value parameters. The main difference is that you need to include a Boolean value
...@@ -206,24 +214,25 @@ Example, to enable MTRR, include "mtrr=1". ...@@ -206,24 +214,25 @@ Example, to enable MTRR, include "mtrr=1".
Sample Usage Sample Usage
------------ ------------
Using the same setup as described above, load the module like this: Using the same setup as described above, load the module like this::
modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \ modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
vsync2=85 accel=1 mtrr=1 vsync2=85 accel=1 mtrr=1
Or just add the following to a configuration file in /etc/modprobe.d/ Or just add the following to a configuration file in /etc/modprobe.d/::
options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \ options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
vsync2=85 accel=1 mtrr=1 vsync2=85 accel=1 mtrr=1
and just do a and just do a::
modprobe i810fb modprobe i810fb
F. Setup F. Setup
=========
a. Do your usual method of configuring the kernel. a. Do your usual method of configuring the kernel
make menuconfig/xconfig/config make menuconfig/xconfig/config
...@@ -253,6 +262,7 @@ F. Setup ...@@ -253,6 +262,7 @@ F. Setup
patch to see the chipset in action (or inaction :-). patch to see the chipset in action (or inaction :-).
G. Acknowledgment: G. Acknowledgment:
===================
1. Geert Uytterhoeven - his excellent howto and the virtual 1. Geert Uytterhoeven - his excellent howto and the virtual
framebuffer driver code made this possible. framebuffer driver code made this possible.
...@@ -269,10 +279,9 @@ G. Acknowledgment: ...@@ -269,10 +279,9 @@ G. Acknowledgment:
optimizations possible. optimizations possible.
H. Home Page: H. Home Page:
==============
A more complete, and probably updated information is provided at A more complete, and probably updated information is provided at
http://i810fb.sourceforge.net. http://i810fb.sourceforge.net.
###########################
Tony Tony
=============================================================
Intel 830M/845G/852GM/855GM/865G/915G/945G Framebuffer driver Intel 830M/845G/852GM/855GM/865G/915G/945G Framebuffer driver
================================================================ =============================================================
A. Introduction A. Introduction
===============
This is a framebuffer driver for various Intel 8xx/9xx compatible This is a framebuffer driver for various Intel 8xx/9xx compatible
graphics devices. These would include: graphics devices. These would include:
Intel 830M - Intel 830M
Intel 845G - Intel 845G
Intel 852GM - Intel 852GM
Intel 855GM - Intel 855GM
Intel 865G - Intel 865G
Intel 915G - Intel 915G
Intel 915GM - Intel 915GM
Intel 945G - Intel 945G
Intel 945GM - Intel 945GM
Intel 945GME - Intel 945GME
Intel 965G - Intel 965G
Intel 965GM - Intel 965GM
B. List of available options B. List of available options
=============================
a. "video=intelfb" a. "video=intelfb"
enables the intelfb driver enables the intelfb driver
...@@ -80,16 +84,17 @@ B. List of available options ...@@ -80,16 +84,17 @@ B. List of available options
The default parameter (not named) is the mode. The default parameter (not named) is the mode.
C. Kernel booting C. Kernel booting
=================
Separate each option/option-pair by commas (,) and the option from its value Separate each option/option-pair by commas (,) and the option from its value
with an equals sign (=) as in the following: with an equals sign (=) as in the following::
video=intelfb:option1,option2=value2 video=intelfb:option1,option2=value2
Sample Usage Sample Usage
------------ ------------
In /etc/lilo.conf, add the line: In /etc/lilo.conf, add the line::
append="video=intelfb:mode=800x600-32@75,accel,hwcursor,vram=8" append="video=intelfb:mode=800x600-32@75,accel,hwcursor,vram=8"
...@@ -106,6 +111,7 @@ in this directory. ...@@ -106,6 +111,7 @@ in this directory.
D. Module options D. Module options
==================
The module parameters are essentially similar to the kernel The module parameters are essentially similar to the kernel
parameters. The main difference is that you need to include a Boolean value parameters. The main difference is that you need to include a Boolean value
...@@ -116,20 +122,21 @@ Example, to enable MTRR, include "mtrr=1". ...@@ -116,20 +122,21 @@ Example, to enable MTRR, include "mtrr=1".
Sample Usage Sample Usage
------------ ------------
Using the same setup as described above, load the module like this: Using the same setup as described above, load the module like this::
modprobe intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1 modprobe intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
Or just add the following to a configuration file in /etc/modprobe.d/ Or just add the following to a configuration file in /etc/modprobe.d/::
options intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1 options intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
and just do a and just do a::
modprobe intelfb modprobe intelfb
E. Acknowledgment: E. Acknowledgment:
===================
1. Geert Uytterhoeven - his excellent howto and the virtual 1. Geert Uytterhoeven - his excellent howto and the virtual
framebuffer driver code made this possible. framebuffer driver code made this possible.
...@@ -145,5 +152,4 @@ E. Acknowledgment: ...@@ -145,5 +152,4 @@ E. Acknowledgment:
6. Andrew Morton for his kernel patches maintenance. 6. Andrew Morton for his kernel patches maintenance.
###########################
Sylvain Sylvain
=============================
Frame Buffer device internals
=============================
This is a first start for some documentation about frame buffer device This is a first start for some documentation about frame buffer device
internals. internals.
Geert Uytterhoeven <geert@linux-m68k.org>, 21 July 1998 Authors:
James Simmons <jsimmons@user.sf.net>, Nov 26 2002
- Geert Uytterhoeven <geert@linux-m68k.org>, 21 July 1998
- James Simmons <jsimmons@user.sf.net>, Nov 26 2002
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
*** STRUCTURES USED BY THE FRAME BUFFER DEVICE API *** Structures used by the frame buffer device API
==============================================
The following structures play a role in the game of frame buffer devices. They The following structures play a role in the game of frame buffer devices. They
are defined in <linux/fb.h>. are defined in <linux/fb.h>.
...@@ -40,19 +46,18 @@ are defined in <linux/fb.h>. ...@@ -40,19 +46,18 @@ are defined in <linux/fb.h>.
Generic information, API and low level information about a specific frame Generic information, API and low level information about a specific frame
buffer device instance (slot number, board address, ...). buffer device instance (slot number, board address, ...).
- struct `par' - struct `par`
Device dependent information that uniquely defines the video mode for this Device dependent information that uniquely defines the video mode for this
particular piece of hardware. particular piece of hardware.
-------------------------------------------------------------------------------- Visuals used by the frame buffer device API
===========================================
*** VISUALS USED BY THE FRAME BUFFER DEVICE API ***
Monochrome (FB_VISUAL_MONO01 and FB_VISUAL_MONO10) Monochrome (FB_VISUAL_MONO01 and FB_VISUAL_MONO10)
------------------------------------------------- --------------------------------------------------
Each pixel is either black or white. Each pixel is either black or white.
...@@ -79,4 +84,3 @@ Grayscale displays ...@@ -79,4 +84,3 @@ Grayscale displays
Grayscale and static grayscale are special variants of pseudo color and static Grayscale and static grayscale are special variants of pseudo color and static
pseudo color, where the red, green and blue components are always equal to pseudo color, where the red, green and blue components are always equal to
each other. each other.
[This file is cloned from VesaFB/aty128fb] =============
What is lxfb? What is lxfb?
================= =============
.. [This file is cloned from VesaFB/aty128fb]
This is a graphics framebuffer driver for AMD Geode LX based processors. This is a graphics framebuffer driver for AMD Geode LX based processors.
...@@ -23,9 +25,9 @@ How to use it? ...@@ -23,9 +25,9 @@ How to use it?
============== ==============
Switching modes is done using lxfb.mode_option=<resolution>... boot Switching modes is done using lxfb.mode_option=<resolution>... boot
parameter or using `fbset' program. parameter or using `fbset` program.
See Documentation/fb/modedb.txt for more information on modedb See Documentation/fb/modedb.rst for more information on modedb
resolutions. resolutions.
...@@ -42,11 +44,12 @@ You can pass kernel command line options to lxfb with lxfb.<option>. ...@@ -42,11 +44,12 @@ You can pass kernel command line options to lxfb with lxfb.<option>.
For example, lxfb.mode_option=800x600@75. For example, lxfb.mode_option=800x600@75.
Accepted options: Accepted options:
mode_option - specify the video mode. Of the form ================ ==================================================
mode_option specify the video mode. Of the form
<x>x<y>[-<bpp>][@<refresh>] <x>x<y>[-<bpp>][@<refresh>]
vram - size of video ram (normally auto-detected) vram size of video ram (normally auto-detected)
vt_switch - enable vt switching during suspend/resume. The vt vt_switch enable vt switching during suspend/resume. The vt
switch is slow, but harmless. switch is slow, but harmless.
================ ==================================================
--
Andres Salomon <dilinger@debian.org> Andres Salomon <dilinger@debian.org>
===========
Metronomefb Metronomefb
----------- ===========
Maintained by Jaya Kumar <jayakumar.lkml.gmail.com> Maintained by Jaya Kumar <jayakumar.lkml.gmail.com>
Last revised: Mar 10, 2008 Last revised: Mar 10, 2008
Metronomefb is a driver for the Metronome display controller. The controller Metronomefb is a driver for the Metronome display controller. The controller
...@@ -33,4 +36,3 @@ the physical media. ...@@ -33,4 +36,3 @@ the physical media.
Metronomefb uses the deferred IO interface so that it can provide a memory Metronomefb uses the deferred IO interface so that it can provide a memory
mappable frame buffer. It has been tested with tinyx (Xfbdev). It is known mappable frame buffer. It has been tested with tinyx (Xfbdev). It is known
to work at this time with xeyes, xclock, xloadimage, xpdf. to work at this time with xeyes, xclock, xloadimage, xpdf.
=================================
modedb default video mode support modedb default video mode support
=================================
Currently all frame buffer device drivers have their own video mode databases, Currently all frame buffer device drivers have their own video mode databases,
...@@ -18,7 +18,7 @@ When a frame buffer device receives a video= option it doesn't know, it should ...@@ -18,7 +18,7 @@ When a frame buffer device receives a video= option it doesn't know, it should
consider that to be a video mode option. If no frame buffer device is specified consider that to be a video mode option. If no frame buffer device is specified
in a video= option, fbmem considers that to be a global video mode option. in a video= option, fbmem considers that to be a global video mode option.
Valid mode specifiers (mode_option argument): Valid mode specifiers (mode_option argument)::
<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd] <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]
<name>[-<bpp>][@<refresh>] <name>[-<bpp>][@<refresh>]
...@@ -45,15 +45,18 @@ signals (e.g. HDMI and DVI-I). For other outputs it behaves like 'e'. If 'd' ...@@ -45,15 +45,18 @@ signals (e.g. HDMI and DVI-I). For other outputs it behaves like 'e'. If 'd'
is specified the output is disabled. is specified the output is disabled.
You can additionally specify which output the options matches to. You can additionally specify which output the options matches to.
To force the VGA output to be enabled and drive a specific mode say: To force the VGA output to be enabled and drive a specific mode say::
video=VGA-1:1280x1024@60me video=VGA-1:1280x1024@60me
Specifying the option multiple times for different ports is possible, e.g.: Specifying the option multiple times for different ports is possible, e.g.::
video=LVDS-1:d video=HDMI-1:D video=LVDS-1:d video=HDMI-1:D
***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** -----------------------------------------------------------------------------
What is the VESA(TM) Coordinated Video Timings (CVT)? What is the VESA(TM) Coordinated Video Timings (CVT)?
=====================================================
From the VESA(TM) Website: From the VESA(TM) Website:
...@@ -90,7 +93,7 @@ determined from its EDID. The version 1.3 of the EDID has extra 128-byte ...@@ -90,7 +93,7 @@ determined from its EDID. The version 1.3 of the EDID has extra 128-byte
blocks where additional timing information is placed. As of this time, there blocks where additional timing information is placed. As of this time, there
is no support yet in the layer to parse this additional blocks.) is no support yet in the layer to parse this additional blocks.)
CVT also introduced a new naming convention (should be seen from dmesg output): CVT also introduced a new naming convention (should be seen from dmesg output)::
<pix>M<a>[-R] <pix>M<a>[-R]
...@@ -110,9 +113,9 @@ Note: VESA(TM) has restrictions on what is a standard CVT timing: ...@@ -110,9 +113,9 @@ Note: VESA(TM) has restrictions on what is a standard CVT timing:
If one of the above are not satisfied, the kernel will print a warning but the If one of the above are not satisfied, the kernel will print a warning but the
timings will still be calculated. timings will still be calculated.
***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** -----------------------------------------------------------------------------
To find a suitable video mode, you just call To find a suitable video mode, you just call::
int __init fb_find_mode(struct fb_var_screeninfo *var, int __init fb_find_mode(struct fb_var_screeninfo *var,
struct fb_info *info, const char *mode_option, struct fb_info *info, const char *mode_option,
...@@ -127,12 +130,13 @@ fb_find_mode() first tries the specified video mode (or any mode that matches, ...@@ -127,12 +130,13 @@ fb_find_mode() first tries the specified video mode (or any mode that matches,
e.g. there can be multiple 640x480 modes, each of them is tried). If that e.g. there can be multiple 640x480 modes, each of them is tried). If that
fails, the default mode is tried. If that fails, it walks over all modes. fails, the default mode is tried. If that fails, it walks over all modes.
To specify a video mode at bootup, use the following boot options: To specify a video mode at bootup, use the following boot options::
video=<driver>:<xres>x<yres>[-<bpp>][@refresh] video=<driver>:<xres>x<yres>[-<bpp>][@refresh]
where <driver> is a name from the table below. Valid default modes can be where <driver> is a name from the table below. Valid default modes can be
found in linux/drivers/video/modedb.c. Check your driver's documentation. found in linux/drivers/video/modedb.c. Check your driver's documentation.
There may be more modes. There may be more modes::
Drivers that support modedb boot options Drivers that support modedb boot options
Boot Name Cards Supported Boot Name Cards Supported
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment