diff options
Diffstat (limited to 'Documentation/fb')
-rw-r--r-- | Documentation/fb/00-INDEX | 32 | ||||
-rw-r--r-- | Documentation/fb/sm501.txt | 10 | ||||
-rw-r--r-- | Documentation/fb/udlfb.txt | 144 | ||||
-rw-r--r-- | Documentation/fb/viafb.txt | 48 |
4 files changed, 227 insertions, 7 deletions
diff --git a/Documentation/fb/00-INDEX b/Documentation/fb/00-INDEX index a618fd99c9f0..30a70542e823 100644 --- a/Documentation/fb/00-INDEX +++ b/Documentation/fb/00-INDEX | |||
@@ -4,33 +4,41 @@ please mail me. | |||
4 | Geert Uytterhoeven <geert@linux-m68k.org> | 4 | Geert Uytterhoeven <geert@linux-m68k.org> |
5 | 5 | ||
6 | 00-INDEX | 6 | 00-INDEX |
7 | - this file | 7 | - this file. |
8 | arkfb.txt | 8 | arkfb.txt |
9 | - info on the fbdev driver for ARK Logic chips. | 9 | - info on the fbdev driver for ARK Logic chips. |
10 | aty128fb.txt | 10 | aty128fb.txt |
11 | - info on the ATI Rage128 frame buffer driver. | 11 | - info on the ATI Rage128 frame buffer driver. |
12 | cirrusfb.txt | 12 | cirrusfb.txt |
13 | - info on the driver for Cirrus Logic chipsets. | 13 | - info on the driver for Cirrus Logic chipsets. |
14 | cmap_xfbdev.txt | ||
15 | - an introduction to fbdev's cmap structures. | ||
14 | deferred_io.txt | 16 | deferred_io.txt |
15 | - an introduction to deferred IO. | 17 | - an introduction to deferred IO. |
18 | efifb.txt | ||
19 | - info on the EFI platform driver for Intel based Apple computers. | ||
20 | ep93xx-fb.txt | ||
21 | - info on the driver for EP93xx LCD controller. | ||
16 | fbcon.txt | 22 | fbcon.txt |
17 | - intro to and usage guide for the framebuffer console (fbcon). | 23 | - intro to and usage guide for the framebuffer console (fbcon). |
18 | framebuffer.txt | 24 | framebuffer.txt |
19 | - introduction to frame buffer devices. | 25 | - introduction to frame buffer devices. |
20 | imacfb.txt | 26 | gxfb.txt |
21 | - info on the generic EFI platform driver for Intel based Macs. | 27 | - info on the framebuffer driver for AMD Geode GX2 based processors. |
22 | intel810.txt | 28 | intel810.txt |
23 | - documentation for the Intel 810/815 framebuffer driver. | 29 | - documentation for the Intel 810/815 framebuffer driver. |
24 | intelfb.txt | 30 | intelfb.txt |
25 | - docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver. | 31 | - docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver. |
26 | internals.txt | 32 | internals.txt |
27 | - quick overview of frame buffer device internals. | 33 | - quick overview of frame buffer device internals. |
34 | lxfb.txt | ||
35 | - info on the framebuffer driver for AMD Geode LX based processors. | ||
28 | matroxfb.txt | 36 | matroxfb.txt |
29 | - info on the Matrox framebuffer driver for Alpha, Intel and PPC. | 37 | - info on the Matrox framebuffer driver for Alpha, Intel and PPC. |
38 | metronomefb.txt | ||
39 | - info on the driver for the Metronome display controller. | ||
30 | modedb.txt | 40 | modedb.txt |
31 | - info on the video mode database. | 41 | - info on the video mode database. |
32 | matroxfb.txt | ||
33 | - info on the Matrox frame buffer driver. | ||
34 | pvr2fb.txt | 42 | pvr2fb.txt |
35 | - info on the PowerVR 2 frame buffer driver. | 43 | - info on the PowerVR 2 frame buffer driver. |
36 | pxafb.txt | 44 | pxafb.txt |
@@ -39,13 +47,23 @@ s3fb.txt | |||
39 | - info on the fbdev driver for S3 Trio/Virge chips. | 47 | - info on the fbdev driver for S3 Trio/Virge chips. |
40 | sa1100fb.txt | 48 | sa1100fb.txt |
41 | - information about the driver for the SA-1100 LCD controller. | 49 | - information about the driver for the SA-1100 LCD controller. |
50 | sh7760fb.txt | ||
51 | - info on the SH7760/SH7763 integrated LCDC Framebuffer driver. | ||
42 | sisfb.txt | 52 | sisfb.txt |
43 | - info on the framebuffer device driver for various SiS chips. | 53 | - info on the framebuffer device driver for various SiS chips. |
44 | sstfb.txt | 54 | sstfb.txt |
45 | - info on the frame buffer driver for 3dfx' Voodoo Graphics boards. | 55 | - info on the frame buffer driver for 3dfx' Voodoo Graphics boards. |
46 | tgafb.txt | 56 | tgafb.txt |
47 | - info on the TGA (DECChip 21030) frame buffer driver | 57 | - info on the TGA (DECChip 21030) frame buffer driver. |
58 | tridentfb.txt | ||
59 | info on the framebuffer driver for some Trident chip based cards. | ||
60 | uvesafb.txt | ||
61 | - info on the userspace VESA (VBE2+ compliant) frame buffer device. | ||
48 | vesafb.txt | 62 | vesafb.txt |
49 | - info on the VESA frame buffer device | 63 | - info on the VESA frame buffer device. |
64 | viafb.modes | ||
65 | - list of modes for VIA Integration Graphic Chip. | ||
66 | viafb.txt | ||
67 | - info on the VIA Integration Graphic Chip console framebuffer driver. | ||
50 | vt8623fb.txt | 68 | vt8623fb.txt |
51 | - info on the fb driver for the graphics core in VIA VT8623 chipsets. | 69 | - info on the fb driver for the graphics core in VIA VT8623 chipsets. |
diff --git a/Documentation/fb/sm501.txt b/Documentation/fb/sm501.txt new file mode 100644 index 000000000000..8d17aebd2648 --- /dev/null +++ b/Documentation/fb/sm501.txt | |||
@@ -0,0 +1,10 @@ | |||
1 | Configuration: | ||
2 | |||
3 | You can pass the following kernel command line options to sm501 videoframebuffer: | ||
4 | |||
5 | sm501fb.bpp= SM501 Display driver: | ||
6 | Specifiy 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>]" | ||
diff --git a/Documentation/fb/udlfb.txt b/Documentation/fb/udlfb.txt new file mode 100644 index 000000000000..7fdde2a02a27 --- /dev/null +++ b/Documentation/fb/udlfb.txt | |||
@@ -0,0 +1,144 @@ | |||
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; optinally 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 notifcations 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 notifcation. | ||
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 defio=1 console=1 | ||
91 | |||
92 | Or for permanent option, create file like /etc/modprobe.d/options with text | ||
93 | options udlfb defio=1 console=1 | ||
94 | |||
95 | Accepted options: | ||
96 | |||
97 | fb_defio Make use of the fb_defio (CONFIG_FB_DEFERRED_IO) kernel | ||
98 | module to track changed areas of the framebuffer by page faults. | ||
99 | Standard fbdev applications that use mmap but that do not | ||
100 | report damage, may be able to work with this enabled. | ||
101 | Disabled by default because of overhead and other issues. | ||
102 | |||
103 | console Allow fbcon to attach to udlfb provided framebuffers. This | ||
104 | is disabled by default because fbcon will aggressively consume | ||
105 | the first framebuffer it finds, which isn't usually what the | ||
106 | user wants in the case of USB displays. | ||
107 | |||
108 | Sysfs Attributes | ||
109 | ================ | ||
110 | |||
111 | Udlfb creates several files in /sys/class/graphics/fb? | ||
112 | Where ? is the sequential framebuffer id of the particular DisplayLink device | ||
113 | |||
114 | edid If a valid EDID blob is written to this file (typically | ||
115 | by a udev rule), then udlfb will use this EDID as a | ||
116 | backup in case reading the actual EDID of the monitor | ||
117 | attached to the DisplayLink device fails. This is | ||
118 | especially useful for fixed panels, etc. that cannot | ||
119 | communicate their capabilities via EDID. Reading | ||
120 | this file returns the current EDID of the attached | ||
121 | monitor (or last backup value written). This is | ||
122 | useful to get the EDID of the attached monitor, | ||
123 | which can be passed to utilities like parse-edid. | ||
124 | |||
125 | metrics_bytes_rendered 32-bit count of pixel bytes rendered | ||
126 | |||
127 | metrics_bytes_identical 32-bit count of how many of those bytes were found to be | ||
128 | unchanged, based on a shadow framebuffer check | ||
129 | |||
130 | metrics_bytes_sent 32-bit count of how many bytes were transferred over | ||
131 | USB to communicate the resulting changed pixels to the | ||
132 | hardware. Includes compression and protocol overhead | ||
133 | |||
134 | metrics_cpu_kcycles_used 32-bit count of CPU cycles used in processing the | ||
135 | above pixels (in thousands of cycles). | ||
136 | |||
137 | metrics_reset Write-only. Any write to this file resets all metrics | ||
138 | above to zero. Note that the 32-bit counters above | ||
139 | roll over very quickly. To get reliable results, design | ||
140 | performance tests to start and finish in a very short | ||
141 | period of time (one minute or less is safe). | ||
142 | |||
143 | -- | ||
144 | Bernie Thompson <bernie@plugable.com> | ||
diff --git a/Documentation/fb/viafb.txt b/Documentation/fb/viafb.txt index f3e046a6a987..444e34b52ae1 100644 --- a/Documentation/fb/viafb.txt +++ b/Documentation/fb/viafb.txt | |||
@@ -197,6 +197,54 @@ Notes: | |||
197 | example, | 197 | example, |
198 | # fbset -depth 16 | 198 | # fbset -depth 16 |
199 | 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 | |||
200 | [Bootup with viafb]: | 248 | [Bootup with viafb]: |
201 | -------------------- | 249 | -------------------- |
202 | Add the following line to your grub.conf: | 250 | Add the following line to your grub.conf: |