Penguin
Diff: HowToFramebufferHOWTO
EditPageHistoryDiffInfoLikePages

Differences between version 3 and predecessor to the previous major change of HowToFramebufferHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Thursday, October 21, 2004 4:56:48 pm by AristotlePagaltzis Revert
Older page: version 2 Last edited on Friday, June 7, 2002 1:06:35 am by perry Revert
@@ -1,2938 +1 @@
-  
-  
-  
-Framebuffer HOWTO  
-  
-  
-  
-----  
-  
-!!!Framebuffer HOWTO  
-  
-!!Alex Buell, alex.buell@tahallah.clara.co.ukv1.2, 27 Feb 2000  
-  
-  
-----  
-''This document describes how to use the framebuffer devices in Linux with  
-a variety of platforms. This also includes how to set up multi-headed displays.''  
-----  
-  
-  
-  
-  
-!!1. History  
-  
-  
-  
-  
-!!2. Contributors  
-  
-  
-  
-  
-!!3. What is a framebuffer device?  
-  
-  
-  
-  
-!!4. What advantages does framebuffer devices have?  
-  
-  
-  
-  
-!!5. Using framebuffer devices on Intel platforms  
-  
-  
-*5.1 What is vesafb?  
-  
-*5.2 How do I activate the vesafb drivers?  
-  
-*5.3 What VESA modes are available to me?  
-  
-*5.4 Got a Matrox card?  
-  
-*5.5 Got a Permedia card?  
-  
-*5.6 Got a ATI card?  
-  
-*5.7 Which graphic cards are VESA 2.0 compliant?  
-  
-*5.8 Can I make vesafb as a module?  
-  
-*5.9 How do I modify the cursor?  
-  
-  
-  
-  
-  
-!!6. Using framebuffer devices on Atari m68k platforms  
-  
-  
-*6.1 What modes are available on Atari m68k platforms?  
-  
-*6.2 Additional suboptions on Atari m68k platforms  
-  
-*6.3 Using the internal suboption on Atari m68k platforms  
-  
-*6.4 Using the external suboption on Atari m68k platforms  
-  
-  
-  
-  
-  
-!!7. Using framebuffer devices on Amiga m68k platforms  
-  
-  
-*7.1 What modes are available for Amiga m68k platforms?  
-  
-*7.2 Additional suboptions on Amiga m68k platforms  
-  
-*7.3 Supported Amiga graphic expansion boards  
-  
-  
-  
-  
-  
-!!8. Using framebuffer devices on Macintosh m68k platforms  
-  
-  
-  
-  
-!!9. Using framebuffer devices on PowerPC platforms  
-  
-  
-  
-  
-!!10. Using framebuffer devices on Alpha platforms  
-  
-  
-*10.1 What modes are available to me?  
-  
-*10.2 Which graphic cards can work with the frambuffer device?  
-  
-  
-  
-  
-  
-!!11. Using framebuffer devices on SPARC platforms  
-  
-  
-*11.1 Which graphic cards can work with the framebuffer device?  
-  
-*11.2 Configuring the framebuffer devices  
-  
-  
-  
-  
-  
-!!12. Using framebuffer devices on MIPS platforms  
-  
-  
-  
-  
-!!13. Using framebuffer devices on ARM platforms  
-  
-  
-*13.1 Netwinders  
-  
-*13.2 Acorn Archimedes  
-  
-*13.3 Other ARM ports (SA 7110s et. al)  
-  
-  
-  
-  
-  
-!!14. Using multi-headed framebuffers  
-  
-  
-*14.1 Introduction  
-  
-*14.2 Feedback  
-  
-*14.3 Contributors  
-  
-*14.4 Standard Disclaimer  
-  
-*14.5 Copyright Information  
-  
-*14.6 What hardware is supported?  
-  
-*14.7 Commercial support  
-  
-*14.8 Getting all the stuff.  
-  
-*14.9 Getting Started  
-  
-*14.10 Summary  
-  
-*14.11 Other Notes and Problems  
-  
-  
-  
-  
-  
-!!15. Using/Changing fonts  
-  
-  
-  
-  
-!!16. Changing console modes  
-  
-  
-  
-  
-!!17. Setting up the X11 FBdev driver  
-  
-  
-  
-  
-!!18. How do I convert XFree86 mode-lines into framebuffer device timings?  
-  
-  
-  
-  
-!!19. Changing the Linux logo  
-  
-  
-  
-  
-!!20. Looking for further information?  
-----  
-  
-!!1. History  
-  
-  
-Revision history  
-  
-  
-19990607 - Release of 1.  
-  
-  
-19990722 - Release of 1.1  
-  
-  
-20000222 - Release of 1.2  
-----  
-  
-!!2. Contributors  
-  
-  
-Thanks go to these people listed below who helped improve the Framebuffer HOWTO.  
-  
-  
-  
-  
-  
-*Jeff Noxon jeff@planetfall.com  
-*  
-  
-*Francis Devereux f.devereux@cs.ucl.ac.uk  
-*  
-  
-*Andreas Ehliar ehliar@futurniture.se  
-*  
-  
-*Martin !McCarthy marty@ehabitat.demon.co.uk  
-*  
-  
-*Simon Kenyon simon@koala.ie  
-*  
-  
-*David Ford david@kalifornia.com  
-*  
-  
-*Chris Black cblack@cmpteam4.unil.ch  
-*  
-  
-*N Becker nbecker@fred.net  
-*  
-  
-*Bob Tracy rct@gherkin.sa.wlk.com  
-*  
-  
-*Marius Hjelle marius.hjelle@roman.uib.no  
-*  
-  
-*James Cassidy jcassidy@misc.dyn.ml.org  
-*  
-  
-*Andreas U. Trottmann andreas.trottmann@werft22.com  
-*  
-  
-*Lech Szychowski lech7@lech.pse.pl  
-*  
-  
-*Aaron Tiensivu tiensivu@pilot.msu.edu  
-*  
-  
-*Jan-Frode Myklebust for his info on permedia cards janfrode@ii.uib.no  
-*  
-  
-*Many others too numerous to add, but thanks!  
-*  
-  
-  
-  
-Thanks go to Rick Niles frederick.a.niles@gsfc.nasa.gov who has very kindly  
-handed over his Multi-Head Mini-HOWTO for inclusion in this HOWTO.  
-  
-  
-Thanks to these people listed below who built libc5/glibc2 versions of the  
-XF86_FBdev X11 framebuffer driver for X11 on Intel platforms:  
-  
-  
-  
-  
-  
-*Brion Vibber brion@pobox.com  
-*  
-  
-*Gerd Knorr kraxel@cs.tu-berlin.de  
-*  
-  
-  
-  
-and of course the authors of the framebuffer devices:  
-  
-  
-  
-  
-  
-*Martin Schaller - original author of the framebuffer concept  
-*  
-  
-*Roman Hodek Roman.Hodek@informatik.uni-erlangen.de  
-*  
-  
-*Andreas Schwab schwab@issan.informatik.uni-dortmund.de  
-*  
-  
-*Guenther Kelleter  
-*  
-  
-*Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be  
-*  
-  
-*Roman Zippel roman@sodom.obdg.de  
-*  
-  
-*Pavel Machek pavel@atrey.karlin.mff.cuni.cz  
-*  
-  
-*Gerd Knorr kraxel@cs.tu-berlin.de  
-*  
-  
-*Miguel de Icaza miguel@nuclecu.unam.mx  
-*  
-  
-*David Carter carter@compsci.bristol.ac.uk  
-*  
-  
-*William Rucklidge wjr@cs.cornell.edu  
-*  
-  
-*Jes Sorensen jds@kom.auc.dk  
-*  
-  
-*Sigurdur Asgeirsson  
-*  
-  
-*Jeffrey Kuskin jsk@mojave.stanford.edu  
-*  
-  
-*Michal Rehacek michal.rehacek@st.mff.cuni.edu  
-*  
-  
-*Peter Zaitcev zaitcev@lab.ipmce.su  
-*  
-  
-*David S. Miller davem@dm.cobaltmicro.com  
-*  
-  
-*Dave Redman djhr@tadpole.co.uk  
-*  
-  
-*Jay Estabrook  
-*  
-  
-*Martin Mares mj@ucw.cz  
-*  
-  
-*Dan Jacobowitz dan@debian.org  
-*  
-  
-*Emmanuel Marty core@ggi-project.org  
-*  
-  
-*Eddie C. Dost ecd@skynet.be  
-*  
-  
-*Jakub Jelinek jj@ultra.linux.cz  
-*  
-  
-*Phil Blundell philb@gnu.org  
-*  
-  
-*Anyone else, stand up and be counted. :o)  
-*  
-  
-  
-  
-  
-----  
-  
-!!3. What is a framebuffer device?  
-  
-  
-  
-  
-  
-A framebuffer device is an abstraction for the graphic hardware. It  
-represents the frame buffer of some video hardware, and allows application  
-software to access the graphic hardware through a well-defined interface,  
-so that the software doesn't need to know anything about the low-level  
-interface stuff [[Taken from Geert Uytterhoeven's framebuffer.txt in the  
-linux kernel sources ]  
-  
-  
-  
-----  
-  
-!!4. What advantages does framebuffer devices have?  
-  
-  
-  
-  
-  
-Penguin logo. :o) Seriously, the major advantage of the framebuffer drives  
-is that it presents a generic interface across all platforms. It was the  
-case until late in the 2.1.x kernel development process that the Intel  
-platform had console drivers completely different from the other console  
-drivers for other platforms. With the introduction of 2.1.109 all this  
-has changed for the better, and introduced more uniform handling of the  
-console under the Intel platforms and also introduced true bitmapped  
-graphical consoles bearing the Penguin logo on Intel for the first time,  
-and allowed code to be shared across different platforms. Note that 2..x  
-kernels do not support framebuffer devices, but it is possible someday  
-someone will backport the code from the 2.1.x kernels to 2..x kernels.  
-There is an exception to that rule in that the v0.9.x kernel port for m68k  
-platforms does have the framebuffer device support included.  
-  
-  
-''With the release of the 2.2.x kernel, framebuffer device support is very solid  
-and stable. You should use the framebuffer device if your graphic card supports  
-it, if you are using 2.2.x kernels. Older 2..x kernels does not support framebuffer  
-devices, at least on the Intel platform.''  
-  
-  
-  
-  
-  
-*.9.x (m68k) - introduced m68k framebuffer devices. Note that m68k .9.x  
-is functionally equivalent to Intel 1..9 (plus 1.2.x enhancements)  
-*  
-  
-*2.1.107 - introduced Intel framebuffer/new console devices and  
-added generic support, without scrollback buffer support.  
-*  
-  
-*2.1.113 - scrollback buffer support added to vgacon.  
-*  
-  
-*2.1.116 - scrollback buffer support added to vesafb.  
-*  
-  
-*2.2.x - includes matroxfb(Matrox) and atyfb(ATI).  
-*  
-  
-  
-  
-There are some cool features of the framebuffer devices, in that you can  
-give generic options to the kernel at bootup-time, including options  
-specific to a particular framebuffer device. These are:  
-  
-  
-  
-  
-  
-*video=xxx:off - disable probing for a particular framebuffer  
-device  
-*  
-  
-*video=map:octal-number - maps the virtual consoles (VCs) to  
-framebuffer (FB) devices  
-  
-  
-**video=map:01 will map VC0 to FB0, VC1 to FB1, VC2 to FB0, VC3  
-to FB1..  
-**  
-  
-**video=map:0132 will map VC0 to FB0, VC1 to FB1, VC2 to FB3, VC4  
-to FB2, VC5 to FB0..  
-**  
-  
-  
-*  
-  
-  
-  
-Normally framebuffer devices are probed for in the order specified in the  
-kernel, but by specifying the video=xxx option, you can add the  
-specific framebuffer device you want probed before the others specified in  
-the kernel.  
-  
-  
-  
-----  
-  
-!!5. Using framebuffer devices on Intel platforms  
-  
-!!5.1 What is vesafb?  
-  
-  
-  
-  
-  
-  
-Vesafb is a framebuffer driver for Intel architecture that works with  
-VESA 2.0 compliant graphic cards. It is closely related to the framebuffer  
-device drivers in the kernel.  
-  
-  
-vesafb is a display driver that enables the use of graphical modes on your  
-Intel platform for bitmapped text consoles. It can also display a logo,  
-which is probably the main reason why you'd want to use vesafb :o)  
-  
-  
-Unfortunately, you can not use vesafb successfully with VESA 1.2 cards.  
-This is because these 1.2 cards do not use ''linear'' frame buffering.  
-Linear frame buffering simply means that the system's CPU is able to  
-access every bit of the display. Historically, older graphic adapters  
-could allow the CPU to access only 64K at a time, hence the limitations of  
-the dreadful CGA/EGA graphic modes! It may be that someone will write a  
-vesafb12 device driver for these cards, but this will use up precious  
-kernel memory and involve a nasty hack.  
-  
-  
-There is however a potential workaround to add VESA 2.0 extensions for  
-your legacy VESA 1.2 card. You may be able to download a TSR type program  
-that will run from DOS, and used in cojunction with loadlin, can help  
-configure the card for the appropriate graphic console modes. Note that  
-this will not always work, as an example some Cirrus Logic cards such as  
-the VLB 54xx series are mapped to a range of memory addresses (for  
-example, within the 15MB-16MB range) for frame buffering which preludes  
-these from being used successfully with systems that have more than 32MB  
-of memory. There is a way to make this work, i.e. if you have a BIOS  
-option to leave a memory hole at 15MB-16MB range, it might work, Linux  
-doesn't support the use of memory holes. However there are patches for  
-this option though [[Who has these and where do one gets them from?]. If  
-you wish to experiment with this option, there are plenty of TSR style  
-programs available, a prime example is UNIVBE, which can be found on the  
-Internet.  
-  
-  
-Alternatively, you may be able to download kernel patches to allow your  
-VESA 1.2 card to work with the VESA framebuffer driver. For example,  
-there are patches for use with older S3 boards (such as S3 Trio, S3 Virge)  
-that supports VESA 1.2. For these cards, you can pick up patches from  
-  
-ftp://ccssu.crimea.ua/pub/linux/kernel/v2.2/unofficial/s3new.diff.gz  
-  
-  
-  
-  
-  
-!!5.2 How do I activate the vesafb drivers?  
-  
-  
-  
-Assuming you are using menuconfig, you will need to do the following  
-steps:  
-  
-  
-If your processor (on Intel platforms) supports MTRRs, enable this. It  
-speeds up memory copies between the processor and the graphic card, but  
-not strictly necessary. You can of course, do this after you have the  
-console device working.  
-  
-  
-''IMPORTANT: For 2.1.x kernels, go into the Code Maturity Level menu,  
-and enable the prompt for development and''''or incomplete drivers.  
-This is no longer necessary for the 2.2.x kernels.''  
-  
-  
-Go into the Console Drivers menu, and enable the following:  
-  
-  
-  
-  
-  
-*VGA Text Console  
-*  
-  
-*Video Selection Support  
-*  
-  
-*Support for frame buffer devices (experimental)  
-*  
-  
-*VESA VGA Graphic console  
-*  
-  
-*Advanced Low Level Drivers  
-*  
-  
-*Select Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp and 32bpp packed pixel  
-drivers  
-*  
-  
-  
-  
-VGA Chipset Support (text only) - vgafb - used to be part of the list  
-above, but it has been removed as it is now deprecated and no longer  
-supported. It will be removed shortly. Use VGA Text Console (fbcon)  
-instead. VGA Character/Attributes is only used with VGA Chipset  
-Support, and doesn't need to be selected.  
-  
-  
-Ensure that the Mac variable bpp packed pixel support is not enabled.  
-Linux kernel release 2.1.111 (and 112) seemed to enable this  
-automatically if Advanced Low Level Drivers was selected for the first  
-time. This no longer happens with 2.1.113.  
-  
-  
-There is also the option to compile in fonts into memory, but this isn't  
-really necessary, and you can always use kbd-.99's (see section on fonts)  
-setfont utility to change fonts by loading fonts into the console device.  
-  
-  
-Make sure these aren't going to be modules. [[Not sure if it's possible to  
-build them as modules yet - please correct me on this]  
-  
-  
-You'll need to create the framebuffer device in /dev. You need one per  
-framebuffer device, so all you need to do is to type in mknod /dev/fb0 c 29  
-for the first one. Subsequent ones would be in multiples of 32, so for example  
-to create /dev/fb1, you would need to type in mknod /dev/fb1 c 29 32, and so on  
-up to the eighth framebuffer device (mknod /dev/fb7 c 29 224)  
-  
-  
-Then rebuild the kernel, modify /etc/lilo.conf to include the VGA=ASK  
-parameter, and run lilo, this is required in order for you to be able to  
-select the modes you wish to use.  
-  
-  
-Here's a sample LILO configuration (taken from my machine)  
-  
-  
-  
-  
-# LILO configuration file  
-boot = /dev/hda3  
-delay = 30  
-prompt  
-vga = ASK # Let user enter the desired modes  
-image = /vmlinuz  
-root = /dev/hda3  
-label = Linux  
-read-only # Non-UMSDOS filesystems should be mounted read-only for checking  
-  
-  
-  
-Reboot the kernel, and as a simple test, try entering 0301 at the VGA  
-prompt (this will give you 640x480 @ 256), and you should be able to see a  
-cute little Penguin logo.  
-  
-  
-Note, that at the VGA prompt, you're required to type in the number in  
-the format of "" plus the 3 digit figure, and miss out the 'x'. This isn't  
-necessary if you're using LILO.  
-  
-  
-Once you can see that's working well, you can explore the various VESA  
-modes (see below) and decide on the one that you like the best, and  
-hardwire that into the "VGA=x" parameter in lilo.conf. When you have  
-chosen the one you like the best, look up the equivalent hexadecimal number  
-from the table below and use that (i.e. for 1280x1024 @ 256, you just use  
-"VGA=0x307"), and re-run lilo. That's all there it is to it.  
-For further references, read the !LoadLin/LILO HOWTOs.  
-  
-  
-''NOTE!'' vesafb does not enable scrollback buffering as a default. You  
-will need to pass to the kernel the option to enable it. Use  
-video=vesa:ypan or video=vesa:ywrap to activate it. Both does the same  
-thing, but in different ways. ywrap is a lot faster than ypan but may not  
-work on slightly broken VESA 2.0 graphic cards. ypan is slower than ywrap  
-but a lot more compatible. This option is only present in kernel 2.1.116  
-and above. Earlier kernels did not have the ability to allow scrollback  
-buffering in vesafb.  
-  
-  
-  
-  
-!!5.3 What VESA modes are available to me?  
-  
-  
-  
-This really depends on the type of VESA 2.0 compliant graphic card that  
-you have in your system, and the amount of video memory available. This is  
-just a matter of testing which modes work best for your graphic card.  
-  
-  
-The following table shows the mode numbers you can input at the VGA prompt  
-or for use with the LILO program. (actually these numbers are plus 0x200  
-to make it easier to refer to the table)  
-  
-  
-  
-  
-Colours 640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200  
---------+--------------------------------------------------------------  
-4 bits | ? ? 0x302 ? ? ? ?  
-8 bits | 0x300 0x301 0x303 0x305 0x161 0x307 0x31C  
-15 bits | ? 0x310 0x313 0x316 0x162 0x319 0x31D  
-16 bits | ? 0x311 0x314 0x317 0x163 0x31A 0x31E  
-24 bits | ? 0x312 0x315 0x318 ? 0x31B 0x31F  
-32 bits | ? ? ? ? 0x164 ?  
-  
-  
-  
-Key: 8 bits = 256 colours, 15 bits = 32,768 colours, 16 bits = 65,536  
-colours, 24 bits = 16.8 million colours, 32 bits - same as 24 bits, but  
-the extra 8 bits can be used for other things, and fits perfectly with a  
-32 bit PCI/VLB/EISA bus.  
-  
-  
-Additional modes are at the discretion of the manufacturer, as the VESA  
-2.0 document only defines modes up to 0x31F. You may need to do some  
-fiddling around to find these extra modes.  
-  
-  
-  
-  
-!!5.4 Got a Matrox card?  
-  
-  
-  
-  
-  
-  
-If you've got a Matrox graphic card, you don't actually need vesafb, you  
-need the matroxfb driver instead. This greatly enhances the capabilities  
-of your card. Matroxfb will work with Matrox Mystique Millennium I & II,  
-G100 and G200. It also supports multiheaded systems (that is, if you have  
-two Matrox cards in your machine, you can use two displays on the same  
-machine!). To configure for Matrox, you will need to do the following:  
-  
-  
-You might want to upgrade the Matrox BIOS though, you can download the BIOS  
-upgrade from  
-  
-http://www.matrox.com/mgaweb/drivers/ftp_bios.htm  
-  
-Beware that  
-you will need DOS to do this.  
-  
-  
-Go into the Code Maturity Level menu, and enable the prompt for  
-development and/or incomplete drivers [[note this may change for future  
-kernels - when this happens, this HOWTO will be revised]  
-  
-  
-Go into the Console Drivers menu, and enable the following:  
-  
-  
-  
-  
-  
-*VGA Text Console  
-*  
-  
-*Video Selection Support  
-*  
-  
-*Support for frame buffer devices (experimental)  
-*  
-  
-*Matrox Acceleration  
-*  
-  
-*Select the following depending on the card that you have  
-  
-  
-**Millennium I/II support  
-**  
-  
-**Mystique support  
-**  
-  
-**G100/G200 support  
-**  
-  
-  
-*  
-  
-*Enable Multihead Support if you want to use more than one Matrox card  
-*  
-  
-*Advanced Low Level Drivers  
-*  
-  
-*Select Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp and 32bpp packed pixel  
-drivers  
-*  
-  
-  
-  
-Rebuild your kernel. Then you will need to modify your lilo.conf file to  
-enable the Matroxfb device. The quickest and simplest way is re-use mine.  
-  
-  
-  
-  
-# LILO configuration file  
-boot = /dev/hda3  
-delay = 30  
-prompt  
-vga = 792 # You need to do this so it boots up in a sane state  
-# Linux bootable partition config begins  
-image = /vmlinuz  
-append = "video=matrox:vesa:440" # then switch to Matroxfb  
-root = /dev/hda3  
-label = Linux  
-read-only # Non-UMSDOS filesystems should be mounted read-only for checking  
-  
-  
-  
-Lastly, you'll need to create the framebuffer device in /dev. You need one per  
-framebuffer device, so all you need to do is to type in mknod /dev/fb0 c 29  
-for the first one. Subsequent ones would be in multiples of 32, so for example  
-to create /dev/fb1, you would need to type in mknod /dev/fb1 c 29 32, and so on  
-up to the eight framebuffer device (mknod /dev/fb7 c 29 224)  
-  
-  
-And that should be it! [[NOTE: Is anyone using this multiheaded support, please  
-get in touch with me ASAP - I need to talk to you about it so I can document it!  
-  
-  
-  
-  
-!!5.5 Got a Permedia card?  
-  
-  
-  
-  
-  
-  
-Permedia cards cannot be used with the vesafb driver, but fortunately, there  
-is the Permedia framebuffer driver available to use. Assuming you are using  
-menuconfig, do the following:  
-  
-  
-Go into the Code Maturity Level menu, and enable the prompt for  
-development and/or incomplete drivers [[note this may change for future  
-kernels - when this happens, this HOWTO will be revised]  
-  
-  
-Go into the Console Drivers menu and select the following:  
-  
-  
-  
-  
-  
-*VGA Text Console  
-*  
-  
-*Video Selection Support  
-*  
-  
-*Support for frame buffer devices (experimental)  
-*  
-  
-*Permedia2 support (experimental)  
-*  
-  
-*Generic Permedia2 PCI board support  
-*  
-  
-*Advanced Low Level Drivers  
-*  
-  
-*Select Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp and 32bpp packed pixel drivers  
-*  
-  
-*Optionally, select the following, if you wish to use the compiled in fonts  
-  
-  
-**Select compiled-in fonts  
-**  
-  
-**Select Sparc console 12x22 font  
-**  
-  
-  
-*  
-  
-  
-  
-Rebuild your kernel. Then you will need to modify your lilo.conf file to  
-enable the pm2fb device. The quickest and simplest way is re-use the following  
-  
-  
-  
-  
-# LILO configuration file  
-boot = /dev/hda3  
-delay = 30  
-prompt  
-vga = 792 # You need to do this so it boots up in a sane state  
-# Linux bootable partition config begins  
-image = /vmlinuz  
-append = "video=pm2fb:mode:1024x768-75,font:SUN12x22,ypan" # then switch to pm2fb  
-root = /dev/hda3  
-label = Linux  
-read-only # Non-UMSDOS filesystems should be mounted read-only for checking  
-  
-  
-  
-The line "pm2fb:mode:1024x768-75,font:SUN12x22,ypan" indicates you are selecting  
-a 1024x768 mode at 75Hz, with the SUN12x22 font selected (if you did select it),  
-including ypan for scrollback support. You may select other modes if you desire.  
-  
-  
-Lastly, you'll need to create the framebuffer device in /dev. You need one per  
-framebuffer device, so all you need to do is to type in mknod /dev/fb0 c 29  
-for the first one. Subsequent ones would be in multiples of 32, so for example  
-to create /dev/fb1, you would need to type in mknod /dev/fb1 c 29 32, and so on  
-up to the eight framebuffer device (mknod /dev/fb7 c 29 224)  
-  
-  
-For more information on the other features of the Permedia framebuffer driver,  
-point your browser at:  
-  
-http://www.cs.unibo.it/~nardinoc/pm2fb/index.html  
-  
-  
-  
-video=pm2fb:[[option[[,option[[,option...]]]  
-  
-  
-where option is one of the following  
-  
-  
-  
-  
-  
-*off to disable the driver.  
-*  
-  
-*mode:resolution to set the console resolution. The modes have been  
-taken from the fb.modes.ATI file in Geert's fbset package. The depth for  
-all the modes is 8bpp. This is the list of the available modes:  
-  
-  
-**640x480-(60,72,75,90,100)  
-**  
-  
-**800x600-(56,60,70,72,75,90,100)  
-**  
-  
-**1024x768-(60,70,72,75,90,100,illo) illo=80KHz 100Hz  
-**  
-  
-**1152x864-(60,70,75,80)  
-**  
-  
-**1280x1024-(60,70,74,75)  
-**  
-  
-**1600x1200-(60,66,76)  
-**  
-  
-  
-*  
-  
-*The default resolution is 640x480-60.  
-*  
-  
-*font:font name to set the console font. Example: font:SUN12x22  
-*  
-  
-* ypan sets the current virtual height as big as video memory size permits.  
-*  
-  
-*oldmem this option is for CybervisionPPC users only. Specify this if  
-your board has Fujitsu SGRAMs mounted on (all CVisionPPCs before 30-Dec-1998).  
-*  
-  
-*virtual (temporary) specify this if the kernel remaps the PCI regions  
-on your platform.  
-*  
-  
-  
-  
-  
-  
-!!5.6 Got a ATI card?  
-  
-  
-  
-  
-  
-  
-[[Note: This information is at best, only second-hand or third-hand, since I don't  
-have an ATI card to test it with. Feel free to correct me if I am wrong or flame me!] 8)  
-  
-  
-ATI cards can be used with the vesafb driver, but you may or may not have problems,  
-depending on how horribly broken the card is. Fortunately, there is the atyfb  
-framebuffer driver available to use. Assuming you are using menuconfig, do the  
-following:  
-  
-  
-Go into the Code Maturity Level menu, and enable the prompt for  
-development and/or incomplete drivers [[note this may change for future  
-kernels - when this happens, this HOWTO will be revised]  
-  
-  
-Go into the Console Drivers menu and select the following:  
-  
-  
-  
-  
-  
-*VGA Text Console  
-*  
-  
-*Video Selection Support  
-*  
-  
-*Support for frame buffer devices (experimental)  
-*  
-  
-*ATI Mach64 display support  
-*  
-  
-*Advanced Low Level Drivers  
-*  
-  
-*Select Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp and 32bpp packed pixel drivers  
-*  
-  
-*Optionally, select the following, if you wish to use the compiled in fonts  
-  
-  
-**Select compiled-in fonts  
-**  
-  
-**Select Sparc console 12x22 font  
-**  
-  
-  
-*  
-  
-  
-  
-Rebuild your kernel. Then you will need to modify your lilo.conf file to  
-enable the atyfb device. The quickest and simplest way is re-use the following  
-  
-  
-  
-  
-# LILO configuration file  
-boot = /dev/hda3  
-delay = 30  
-prompt  
-vga = 792 # You need to do this so it boots up in a sane state  
-# Linux bootable partition config begins  
-image = /vmlinuz  
-append = "video=atyfb:mode:1024x768,font:SUN12x22"  
-root = /dev/hda3  
-label = Linux  
-read-only # Non-UMSDOS filesystems should be mounted read-only for checking  
-  
-  
-  
-The line "atyfb:mode:1024x768,font:SUN12x22" indicates you are selecting  
-a 1024x768 mode.  
-  
-  
-Lastly, you'll need to create the framebuffer device in /dev. You need one per  
-framebuffer device, so all you need to do is to type in mknod /dev/fb0 c 29  
-for the first one. Subsequent ones would be in multiples of 32, so for example  
-to create /dev/fb1, you would need to type in mknod /dev/fb1 c 29 32, and so on  
-up to the eight framebuffer device (mknod /dev/fb7 c 29 224)  
-  
-  
-video=atyfb:[[option[[,option[[,option...]]]  
-  
-  
-where option is one of the following  
-  
-  
-  
-  
-  
-*font:STRING selects the built-in font (compiled into the kernel)  
-*  
-  
-*noblink Turns off blinking  
-*  
-  
-*noaccel Disables acceleration  
-*  
-  
-*vram:ULONG Tells the atyfb driver how much memory you have  
-*  
-  
-*pll:ULONG Unknown  
-*  
-  
-*mclk:ULONG Unknown  
-*  
-  
-*vmode:ULONG Unknown  
-*  
-  
-*cmode:ULONG - sets depth - , 8, 15, 16, 24 and 32  
-*  
-  
-  
-  
-  
-  
-!!5.7 Which graphic cards are VESA 2.0 compliant?  
-  
-  
-  
-This lists all the graphic cards that are known to work with the vesafb  
-device:  
-  
-  
-  
-  
-  
-*ATI PCI !VideoExpression 2MB (max. 1280x1024 @ 8bit)  
-*  
-  
-*ATI PCI All-in-Wonder  
-*  
-  
-*Matrox Millennium PCI - BIOS v3.  
-*  
-  
-*Matrox Millennium II PCI - BIOS v1.5  
-*  
-  
-*Matrox Millennium II AGP - BIOS v1.4  
-*  
-  
-*Matrox Millennium G200 AGP - BIOS v1.3  
-*  
-  
-*Matrox Mystique & Mystique 220 PCI - BIOS v1.8  
-*  
-  
-*Matrox Mystique G200 AGP - BIOS v1.3  
-*  
-  
-*Matrox Productiva G100 AGP - BIOS v1.4  
-*  
-  
-*All Riva 128 based cards  
-*  
-  
-*Diamond Viper V330 PCI 4MB  
-*  
-  
-*Genoa Phantom 3D/S3 ViRGE/DX  
-*  
-  
-*Hercules Stingray 128/3D with TV output  
-*  
-  
-*Hercules Stingray 128/3D without TV output - needs BIOS upgrade  
-(free from support@hercules.com)  
-*  
-  
-*SiS 6326 PCI/AGP 4MB  
-*  
-  
-*STB Lightspeed 128 (Nvida Riva 128 based) PCI  
-*  
-  
-*STB Velocity 128 (Nvida Riva 128 based) PCI  
-*  
-  
-*Jaton Video-58P ET6000 PCI 2MB-4MB (max. 1600x1200 @ 8bit)  
-*  
-  
-*Voodoo2 2000  
-*  
-  
-  
-  
-This list is composed of on-board chipsets on systems' motherboards:  
-  
-  
-  
-  
-  
-*Trident Cyber9397  
-*  
-  
-*SiS 5598  
-*  
-  
-  
-  
-This list below blacklists graphic cards that doesn't work with the vesafb  
-device:  
-  
-  
-  
-  
-  
-*TBA  
-*  
-  
-  
-  
-  
-  
-!!5.8 Can I make vesafb as a module?  
-  
-  
-  
-  
-  
-  
-As far as is known, vesafb can't be modularised, although at some point  
-in time, the developer of vesafb may decide to modify the sources for  
-modularising. Note that even if modularising is possible, at boot time  
-you will not be able to see any output on the display until vesafb is  
-''modprobed''. It's probably a lot wiser to leave it in the kernel, for  
-these cases when there are booting problems.  
-  
-  
-  
-  
-!!5.9 How do I modify the cursor?  
-  
-  
-  
-  
-  
-  
-[[Taken from VGA-softcursor.txt - thanks Martin Mares!]  
-  
-  
-Linux now has some ability to manipulate cursor appearance. Normally,  
-you can set the size of hardware cursor (and also work around some ugly  
-bugs in those miserable Trident cards--see #define TRIDENT_GLITCH in  
-drivers/char/ vga.c). In case you enable "Software generated cursor" in  
-the system configuration, you can play a few new tricks: you can make  
-your cursor look like a non-blinking red block, make it inverse  
-background of the character it's over or to highlight that character and  
-still choose whether the original hardware cursor should remain visible  
-or not. There may be other things I have never thought of.  
-  
-  
-The cursor appearance is controlled by a  
-  
-<ESC>[[?1;2;3c  
-  
-escape  
-sequence where 1, 2 and 3 are parameters described below. If you omit any  
-of them, they will default to zeroes.  
-  
-  
-Parameter 1 specifies cursor size (=default, 1=invisible, 2=underline,  
-..., 8=full block) + 16 if you want the software cursor to be applied + 32  
-if you want to always change the background colour + 64 if you dislike  
-having the background the same as the foreground. Highlights are ignored  
-for the last two flags.  
-  
-  
-The second parameter selects character attribute bits you want to change  
-(by simply XORing them with the value of this parameter). On standard VGA,  
-the high four bits specify background and the low four the foreground. In  
-both groups, low three bits set colour (as in normal colour codes used by  
-the console) and the most significant one turns on highlight (or sometimes  
-blinking--it depends on the configuration of your VGA).  
-  
-  
-The third parameter consists of character attribute bits you want to set.  
-Bit setting takes place before bit toggling, so you can simply clear a bit  
-by including it in both the set mask and the toggle mask.  
-  
-  
-To get normal blinking underline, use: echo -e '\033[[?2c'  
-To get blinking block, use: echo -e '\033[[?6c'  
-To get red non-blinking block, use: echo -e '\033[[?17;;64c'  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!6. Using framebuffer devices on Atari m68k platforms  
-  
-  
-  
-  
-  
-This section describes framebuffer options on Atari m68k platforms.  
-  
-  
-  
-  
-!!6.1 What modes are available on Atari m68k platforms?  
-  
-  
-  
-  
-  
-  
-  
-  
-Colours 320x200 320x480 640x200 640x400 640x480 896x608 1280x960  
---------+---------------------------------------------------------  
-1 bit | sthigh vga2 falh2 tthigh  
-2 bits | stmid vga4  
-4 bits | stlow ttmid/vga16 falh16  
-8 bits | ttlow vga256  
-  
-  
-  
-ttlow, ttmid and tthigh are only used by the TT, whilst vga2,  
-vga4, vga15, vga256, falh3 and falh16 are only used by the Falcon.  
-  
-  
-When used with the kernel option video=xxx, and no suboption is  
-given, the kernel will probe for the modes in the following order until  
-it finds a mode that is possible with the given hardware:  
-  
-  
-  
-  
-  
-*ttmid  
-*  
-  
-*tthigh  
-*  
-  
-*vga16  
-*  
-  
-*sthigh  
-*  
-  
-*stmid  
-*  
-  
-  
-  
-You may specify the particular mode you wish to use, if you don't wish to  
-auto-probe for the modes you desire. For example, video=vga16 gives  
-you a 4 bit 640x480 display.  
-  
-  
-  
-  
-!!6.2 Additional suboptions on Atari m68k platforms  
-  
-  
-  
-  
-  
-  
-There are a number of suboptions available with the video=xxx  
-parameter:  
-  
-  
-  
-  
-  
-*inverse - inverts the display so that the background/foreground  
-colours are reversed. Normally the background is black, but with this  
-suboption, it gets sets to white.  
-*  
-  
-*font - sets the font to use in text modes. Currently you can  
-only select VGA8x8, VGA8x16, PEARL8x8. The default is to  
-use the VGA8x8 only if the vertical size of the display is less than  
-400 pixels, otherwise it defaults to VGA8x16.  
-*  
-  
-*internal - a very interesting option. See the next section for  
-information.  
-*  
-  
-*external - as above.  
-*  
-  
-*monitorcap - describes the capabilities for multisyncs. DON'T  
-use with a fixed sync monitor!  
-*  
-  
-  
-  
-  
-  
-!!6.3 Using the internal suboption on Atari m68k platforms  
-  
-  
-  
-  
-  
-  
-Syntax: internal:(xres);(yres)[[;(xres_max);(yres_max);(offset)]  
-  
-  
-This option specifies the capabilities of some extended internal video  
-hardware, i.e !OverScan modes. (xres) and (yres) gives the  
-extended dimensions of the screen.  
-  
-  
-If your !OverScan mode needs a black border, you'll need to write the last  
-three arguments of the internal: suboption. (xres_max) is the  
-maximum line length that the hardware allows, (yres_max) is the  
-maximum number of lines, and (offset) is the offset of the visible  
-part of the screen memory to its physical start, in bytes.  
-  
-  
-Often extended internal video hardware has to be activated, for this you  
-will need the "switches=*" options. [[Note: Author would like extra  
-information on this, please. The m68k documentation in the kernel isn't  
-clear enough on this point, and he doesn't have an Atari! Examples would  
-be helpful too]  
-  
-  
-  
-  
-!!6.4 Using the external suboption on Atari m68k platforms  
-  
-  
-  
-  
-  
-  
-Syntax:  
-external:(xres);(yres);(depth);(org);(scrmem)[[;(scrlen)[[;(vgabase)[[;(colw)[[;(coltype)[[;(xres_virtual)]]]]]  
-  
-  
-This is quite complicated, so this document will attempt to explain as  
-clearly as possible, but the Author would appreciate if someone would give  
-this a look over and see that he hasn't fscked something up! :o)  
-  
-  
-This suboption specifies that you have an external video hardware (most  
-likely a graphic board), and how to use it with Linux. The kernel is  
-basically limited to what it knows of the internal video hardware, so you  
-have to supply the parameters it needs in order to be able to use external  
-video hardware. There are two limitations; you must switch to that mode  
-before booting, and once booted, you can't change modes.  
-  
-  
-The first three parameters are obvious; gives the dimensions of the screen  
-as pixel height, width and depth. The depth supplied should be the number  
-of colours is 2^n that of the number of planes required. For example, if  
-you desire to use a 256 colour display, then you need to give 8 as the  
-depth. This depends on the external graphic hardware, though so you will  
-be limited by what the hardware can do.  
-  
-  
-Following from this, you also need to tell the kernel how the video memory  
-is organised - supply a letter as the (org) parameter  
-  
-  
-  
-  
-  
-*n - use normal planes, i.e one whole plane after another  
-*  
-  
-*i - use interleaved planes, i.e. 16 bits of the first plane,  
-then the 16 bits of the next plane and so on. Only built-in Atari video  
-modes uses this - and there are no graphic card that supports this mode.  
-*  
-  
-*p - use packed pixels, i.e consecutive bits stands for all  
-planes for a pixel. This is the most common mode for 256 colour displays  
-on graphic cards.  
-*  
-  
-*t - use true colour, i.e this is actually packed pixels, but  
-does not require a colour lookup table like what other packed pixel modes  
-uses. These modes are normally 24 bit displays - gives you 16.8 million  
-colours.  
-*  
-  
-  
-  
-''However'', for monochrome modes, the (org) parameter has a  
-different meaning  
-  
-  
-  
-  
-  
-*n - use normal colours, i.e =white, 1=black  
-*  
-  
-*i - use inverted colours, i.e. =black, 1=white  
-*  
-  
-  
-  
-The next important item about the video hardware is the base address of  
-the video memory. That is given by the (scrmem) parameter as a  
-hexadecimal number with an 0x prefix. You will need to find this out  
-from the documentation that comes with your external video hardware.  
-  
-  
-The next paramter (scrlen) tells the kernel about the size of the  
-video memory. If it's missing, this is calculated from the (xres),  
-(yres) and (depth) parameters. It's not useful to write a value  
- here these days anyway. To leave this empty, give two consecutive  
-semicolons if you need to give the (vgabase) parameter, otherwise,  
-just leave it.  
-  
-  
-The (vgabase) parameter is optional. If it isn't given, the kernel  
-can't read/write any colour registers of the video hardware, and thus you  
-have to set up the appropriate colours before you boot Linux. But if your  
-card is VGA compatible, you can give it the address where it can locate  
-the VGA register set so it can change the colour lookup tables. This  
-information can be found in your external video hardware documentation. To  
-make this ''clear'', (vgabase) is the ''base'' address, i.e a 4k  
-aligned address. For reading/writing the colour registers, the kernel uses  
-the address range between (vgabase) + 0x3c7 and (vgabase) +  
-0x3c9. This parameter is given in hexadecimal and must have a 0x  
-prefix, just like (scrmem).  
-  
-  
-(colw) is only meaningful, if the (vgabase) parameter is  
-specified. It tells the kernel how wide each of the colour register is,  
-i.e the number of bits per single colour (red/green/blue). Default is  
-usually 6 bits, but it is also common to specify 8 bits.  
-  
-  
-(coltype) is used with the (vgabase) parameter, it tells the  
-kernel about the colour register model of your graphic board. Currently  
-the types supported are vga and mv300. vga is the default.  
-  
-  
-(xres_virtual) is only required for the ProMST/ET4000 cards where the  
-physical linelength differs from the visible length. With ProMST, you need  
-to supply 2048, whilst for ET4000, it depends on the initialisation of the  
-video board.  
-  
-  
-  
-----  
-  
-!!7. Using framebuffer devices on Amiga m68k platforms  
-  
-  
-  
-  
-  
-This section describes the options for Amigas, which are quite similiar to  
-that for the Atari m68k platforms.  
-  
-  
-  
-  
-!!7.1 What modes are available for Amiga m68k platforms?  
-  
-  
-  
-  
-  
-  
-This depends on the chipset used in the Amiga. There are three main ones;  
-OCS, ECS and AGA which all uses the colour frame buffer device.  
-  
-  
-  
-  
-  
-*NTSC modes  
-  
-  
-**ntsc - 640x200  
-**  
-  
-**ntsc-lace - 640x400  
-**  
-  
-  
-*  
-  
-*PAL modes  
-  
-  
-**pal - 640x256  
-**  
-  
-**pal-lace - 640x512  
-**  
-  
-  
-*  
-  
-*ECS modes - 2 bit colours on ECS, 8 bit colours on AGA chipsets  
-only.  
-  
-  
-**multiscan - 640x480  
-**  
-  
-**multiscan-lace - 640x960  
-**  
-  
-**euro36 - 640x200  
-**  
-  
-**euro36-lace - 640x400  
-**  
-  
-**euro72 - 640x400  
-**  
-  
-**euro72-lace - 640x800  
-**  
-  
-**super72 - 800x300  
-**  
-  
-**super72-lace - 800x600  
-**  
-  
-**dblntsc - 640x200  
-**  
-  
-**dblpal - 640x256  
-**  
-  
-**dblntsc-ff - 640x400  
-**  
-  
-**dblntsc-lace - 640x800  
-**  
-  
-**dblpal-ff - 640x512  
-**  
-  
-**dblpal-lace - 640x1024  
-**  
-  
-  
-*  
-  
-*VGA modes - 2 bit colours on ECS, 8 bit colours on AGA chipsets  
-only.  
-  
-  
-**vga - 640x480  
-**  
-  
-**vga70 - 640x400  
-**  
-  
-  
-*  
-  
-  
-  
-  
-  
-!!7.2 Additional suboptions on Amiga m68k platforms  
-  
-  
-  
-  
-  
-  
-These are similar to the Atari m68k suboptions. They are:  
-  
-  
-  
-  
-  
-*depth - specifies the pixel bit depth.  
-*  
-  
-*inverse - does the same thing as the Atari suboption.  
-*  
-  
-*font - does the same thing as the Atari suboption, although the  
-PEARL8x8 font is used instead of VGA8x8 font, if the display  
-size is less than 400 pixel wide.  
-*  
-  
-*monitorcap - specifies the capabilities of the multisync  
-monitor. Do not use with fixed sync monitors.  
-*  
-  
-  
-  
-  
-  
-!!7.3 Supported Amiga graphic expansion boards  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-*Phase5 !CyberVision 64 (S3 Trio64 chipset)  
-*  
-  
-*Phase5 !CyverVision 64-3D (S3 ViRGE chipset)  
-*  
-  
-*!MacroSystems RetinaZ3 (NCR 77C32BLT chipset)  
-*  
-  
-*Helfrich Piccolo, SD64, GVP ECS Spectrum, Village Tronic Picasso  
-IIII+ and IV/ (Cirrus Logic GD542x/543x)  
-*  
-  
-  
-  
-  
-----  
-  
-!!8. Using framebuffer devices on Macintosh m68k platforms  
-  
-  
-  
-  
-  
-Currently, the framebuffer device implemented only supports the mode  
-selected in MacOS before booting into Linux, also supports 1, 2, 4 and 8  
-bit colours modes.  
-  
-  
-Framebuffer suboptions are selected using the following syntax  
-  
-  
-  
-  
-video=macfb:<font>:<inverse>  
-  
-  
-  
-You can select fonts such as VGA8x8, VGA8x16 and 6x11 etc. The inverse  
-option allows you to use reverse video.  
-  
-  
-  
-----  
-  
-!!9. Using framebuffer devices on PowerPC platforms  
-  
-  
-  
-  
-  
-The author would love to receive information on the use of framebuffers on  
-this platform.  
-  
-  
-  
-----  
-  
-!!10. Using framebuffer devices on Alpha platforms  
-  
-!!10.1 What modes are available to me?  
-  
-  
-  
-  
-  
-  
-So far, there is only the TGA PCI card - which only does 80x30 with a  
-resolution of 640x480 at either 8 bits or 24/32 bits.  
-  
-  
-  
-  
-!!10.2 Which graphic cards can work with the frambuffer device?  
-  
-  
-  
-  
-  
-  
-This lists all the graphic cards that are known to work:  
-  
-  
-  
-  
-  
-*DEC TGA PCI (DEC21030) - 640x480 @ 8 bit or 24/32 bit versions  
-*  
-  
-  
-  
-  
-----  
-  
-!!11. Using framebuffer devices on SPARC platforms  
-  
-!!11.1 Which graphic cards can work with the framebuffer device?  
-  
-  
-  
-This lists all the graphic cards available:  
-  
-  
-  
-  
-  
-*MG1/MG2 - SBus or integrated on Sun3 - max. 1600x1280 @ mono (BWtwo)  
-*  
-  
-*CGthree - Similar to MG1/MG2 but supports colour - max resolution ?  
-*  
-  
-*GX - SBus - max. 1152x900 @ 8bit (CGsix)  
-*  
-  
-*TurboGX - SBus - max. 1152x900 @ 8 bit (CGsix)  
-*  
-  
-*SX - SS10/SS20 only - max. 1280x1024 @ 24 bit - (CGfourteen)  
-*  
-  
-*ZX(TZX) - SBus - accelerated 24bit 3D card - max resolution ?  
-(Leo)  
-*  
-  
-*TCX - AFX - for Sparc 4 only - max. 1280x1024 @ 8bit  
-*  
-  
-*TCX(S24) - AFX - for Sparc 5 only - max. 1152x900 @ 24bit  
-*  
-  
-*Creator - SBus - max. 1280x1024 @ 24bit (FFB)  
-*  
-  
-*Creator3D - SBus - max. 1920x1200 @ 24bit (FFB)  
-*  
-  
-*ATI Mach64 - accelerated 8/24bit for Sparc64 PCI only  
-*  
-  
-  
-  
-There is the option to use the PROM to output characters to the display or  
-to a serial console.  
-  
-  
-Also, have a look at the Sparc Frame Buffer FAQ at  
-  
-http://c3-a.snvl1.sfba.home.com/Framebuffer.html  
-  
-  
-  
-  
-  
-!!11.2 Configuring the framebuffer devices  
-  
-  
-  
-  
-  
-  
-During make config, you need to choose whether to compile promcon  
-and/or fbcon. You can select both, but if you do this, you will need  
-to set the kernel flags to select the device. fbcon always takes  
-precedence if not set. If promcon is not selected in, on boot up, it  
-defaults to dummycon. If promcon is selected, it will use this  
-device. Once the buses are booted, and fbcon is compiled in, the  
-kernel probes for the above framebuffers and will use fbcon. If there  
-is no framebuffer devices, it will default to promcon.  
-  
-  
-Here are the kernel options  
-  
-video=sbus:options  
-where options is a comma separated list:  
-nomargins sets margins to ,  
-margins=12x24 sets margins to 12,24 (default is computed  
-from resolution)  
-off don't probe for any SBus/UPA framebuffers  
-font=SUN12x22 use a specific font  
-  
-  
-  
-So for example, booting with  
-  
-video=sbus:nomargins,font=SUN12x22  
-  
-gives you a nice fast text console with a text resolution of  
-96x40, looks similar to a Solaris console but with colours and virtual  
-terminals just like on the Intel platform.  
-  
-  
-If you want to use the SUN12x22 font, you need to enable it during  
-make config (disable the fontwidth != 8 option). The accelerated  
-framebuffers can support any font width between 1 to 16 pixels, whilst  
-dumb frame buffers only supports 4, 8, 12 and 16 pixel font widths.  
-  
-  
-It is recommended that you grab a recent consoletools packages.  
-  
-  
-  
-----  
-  
-!!12. Using framebuffer devices on MIPS platforms  
-  
-  
-  
-  
-  
-There is no need to change anything for this platform, this is all handled  
-for you automatically. Indys in particular are hardwired to use a console  
-size of 160x64. However, moves are afoot to rewrite the console code for  
-these Indys, so keep an eye on this section.  
-  
-  
-  
-----  
-  
-!!13. Using framebuffer devices on ARM platforms  
-  
-  
-  
-  
-  
-  
-  
-!!13.1 Netwinders  
-  
-  
-  
-For the Netwinders (which uses the ARM SA110 RISC chip - a lovely British  
-processor), there are two versions of the Cyber2000 framebuffer driver -  
-one for 2..x kernels and one for 2.2.x kernels. It is quite straightforward  
-to enable and use this driver on both kernels, however, the older version is  
-hardcoded for depth and resolution (blech), but the good news is that the newer  
-version in the 2.2.x kernels is much more flexible, but currently in a state  
-of flux as it is still in development. To get this up and running, your best  
-bet is to read the documentation that comes with the ARM port of the kernel  
-sources.  
-  
-  
-The Netwinders uses a VGA compatible chipset, but unfortunately noone has  
-ported vgafb to it yet. That might happen if someone has some time on their  
-hands. [[I would do it if someone would give me a !NetWinder to play with]  
-  
-  
-  
-  
-!!13.2 Acorn Archimedes  
-  
-  
-  
-Acorns have always had framebuffer support since the Linux 1.9.x days. However  
-the Acornfb driver in 2.2.x is totally new since the generic framebuffer  
-interface changed during the development of 2.1.x kernels (which, of course,  
-became 2.2.x). As previously, it is a simple matter to activate the driver and  
-set depths and resolutions.  
-  
-  
-  
-  
-!!13.3 Other ARM ports (SA 7110s et. al)  
-  
-  
-  
-Surprisingly, there is even a framebuffer driver for the Psion 5 and the Geofox!  
-I have been told that it displays the Penguin quite well. [[Someone please donate  
-me a Psion 5!]  
-  
-  
-  
-----  
-  
-!!14. Using multi-headed framebuffers  
-  
-  
-  
-  
-  
-This part of the document was very kindly donated by Frederick A. Niles,  
-who retains all rights to the information contained herewith this section of  
-the HOWTO.  
-  
-  
-  
-  
-!!14.1 Introduction  
-  
-  
-  
-The main goal of this document is to get you started with running a  
-dual head configuration of Linux. While this process is pretty  
-straight forward there are numerous things that one can do wrong  
-along the way.  
-  
-  
-The example I concentrate on is getting an X-server running on a  
-second monitor. I find this nice as you can usually find old large  
-19" to 21" fixed frequency monitors around that people are giving  
-away because they can't use them. This way you can boot off a small  
-multisync and then use X on a nice big monitor.  
-  
-  
-Please understand dual head support is currently developing so this  
-information changes rapidly. Anything in this document could be out  
-of date or just plain incorrect by the time you are reading this.  
-  
-  
-** WARNING ** This document was written before any XFree86 4.  
-release. If you are reading this and XFree86 4.0 is already  
-released many things may have changed. Try getting a newer version  
-of this document if it's available.  
-  
-  
-  
-  
-!!14.2 Feedback  
-  
-  
-  
-Feedback is most certainly welcome for this document. Without your  
-submissions and input, this document wouldn't exist. So, please post  
-your additions, comments and criticisms to:  
-Frederick.A.Niles@gsfc.nasa.gov.  
-  
-  
-  
-  
-!!14.3 Contributors  
-  
-  
-  
-The following people have contributed to this mini-HOWTO.  
-  
-  
-* Petr Vandrovec vandrove@vc.cvut.cz  
-  
-  
-* Andreas Ehliar ehliar@lysator.liu.se (x2x)  
-  
-  
-* Marco Bizzarri m.bizzarri@icube.it (multiple X servers)  
-  
-  
-  
-  
-!!14.4 Standard Disclaimer  
-  
-  
-  
-No liability for the contents of this document can be accepted. Use  
-the concepts, examples and other content at your own risk. As this  
-is a new edition of this document, there may be errors and  
-inaccuracies that could be damaging to your system. Proceed with  
-caution, and although this is highly unlikely, I don't take any  
-responsibility for that.  
-  
-  
-  
-  
-!!14.5 Copyright Information  
-  
-  
-  
-This section of the document is copyrighted (c)1999 Frederick Niles and distributed  
-under the following terms:  
-  
-  
-* Linux HOWTO documents may be reproduced and distributed in whole or  
-in part, in any medium physical or electronic, as long as this  
-copyright notice is retained on all copies. Commercial  
-redistribution is allowed and encouraged; however, the author would  
-like to be notified of any such distributions.  
-  
-  
-* All translations, derivative works, or aggregate works  
-incorporating any Linux HOWTO documents must be covered under this  
-copyright notice. That is, you may not produce a derivative work  
-from a HOWTO and impose additional restrictions on its  
-distribution. Exceptions to these rules may be granted under  
-certain conditions; please contact the Linux HOWTO coordinator at  
-the address given below.  
-  
-  
-* If you have questions, please contact, the Linux HOWTO coordinator,  
-at linux-howto@sunsite.unc.edu  
-  
-  
-  
-  
-!!14.6 What hardware is supported?  
-  
-  
-  
-Most video cards assume they will be the only one in the system and are  
-permanently set with the addressing of the primary display adapter. There  
-are a few exceptions.  
-  
-  
-* Matrox cards: This includes Matrox Millennium, Matrox Millennium II,  
-Matrox Mystique, Matrox Mystique 220, Matrox Productiva G100, Matrox  
-Mystique G200, Matrox Millennium G200 and Matrox Marvel G200  
-video cards  
-  
-  
-* MDA: This includes monochrome Hercules graphics adapter among others.  
-This for text only second head support.  
-  
-  
-Note: it's only the second adapter that has to be one of the above.  
-  
-  
-  
-  
-!!14.7 Commercial support  
-  
-  
-  
-This mini-HOWTO in primarily concerned with free software. However,  
-there are commercial X servers with multi-head support. These  
-include Metro Link's (www.metrolink.com) Metro-X and Xi Graphics'  
-(www.xig.com) Accelerated-X.  
-  
-  
-  
-  
-!!14.8 Getting all the stuff.  
-  
-  
-  
-You'll need the following patches and programs:  
-  
-  
-* "fbset" program  
-try:  
-  
-http://www.cs.kuleuven.ac.be/~geert/bin/  
-  
-(note: this program comes with !RedHat 6.)  
-  
-  
-* "fbaddon" Matrox dual head patches for Linux kernel  
-try:  
-  
-ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/  
-  
-  
-  
-* "con2fb" program  
-try:  
-  
-ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/  
-  
-  
-  
-* The X11 frame buffer server XF86_FBDev. This is a standard  
-part of XFree86 3.3.1.  
-  
-  
-  
-  
-!!14.9 Getting Started  
-  
-  
-  
-The first thing you'll need to do is to patch a copy of the Linux  
-source with the "fbaddon" patch. Then you need to configure the  
-kernel and turn on frame buffer support. If you have Matrox cards  
-turn on Matrox unified accelerated driver support as well as the  
-particular type of card you have. Don't turn on VESA frame buffer  
-support. It can cause a conflict. Do turn on multi-head support  
-(obviously). Build the kernel and reboot.  
-  
-  
-Now you need to install the "fbset" program and carefully read all  
-the documentation on how to adjust the settings. Using a  
-"/etc/fb.modes" file is highly recommended once you've decided on  
-your settings. The fbset program includes a Perl script to convert  
-your XF86Config file to fb.modes settings. I've included my  
-octave/Borne shell script to convert your XF86Config file in  
-Appendix A & B.  
-  
-  
-You need to get comfortable with using the frame buffer device on  
-one monitor, understanding any issues that can arise from your set  
-up that have nothing to do with multi-head support. This can save  
-a lot of head scratching later.  
-  
-  
-I'm going to concentrate my explanation on getting X running on the  
-second monitor as doing most other configurations will just be a  
-obvious subset of the procedure.  
-  
-  
-  
-  
-!Move a console over...  
-  
-  
-Compile the "con2fb" program. If you run it without any arguments  
-you'll get the following usage message:  
-  
-  
-"usage: con2fb fbdev console".  
-  
-  
-Thus, an example command would be "con2fb /dev/fb1 /dev/tty6" to  
-move virtual console number six over to the second monitor. Use  
-Ctrl-Alt-F6 to move over to that console and see that it does indeed  
-show up on the second monitor.  
-  
-  
-  
-  
-!Use "fbset" to adjust the setting on this second monitor  
-  
-  
-Only set the "fbset" settings on the monitor you run the "fbset"  
-command on. Therefore, you must be careful to use the "-fb" flag on  
-the second monitor. In particular, if you do nothing else you'll  
-probably want to at least set the virtual vertical resolution to  
-your actually vertical resolution.  
-  
-  
-e.g. "fbset -fb /dev/fb1 -vyres 600"  
-  
-  
-This will seriously slow down text mode, but X will be obnoxious  
-without it.  
-  
-  
-  
-  
-!Set up X for Frame Buffer support.  
-  
-  
-The framebuffer.txt file explains this better than I can, but here's  
-the two important points.  
-  
-  
-Make sure you set the link for "X" to point to "XF86_FBDev".  
-  
-  
-Next you need to add a monitor section to your XF86Config file  
-for the frame buffer device. Here's an example:  
-  
-  
-  
-  
-# The Frame Buffer server  
-Section "Screen"  
-Driver "fbdev"  
-Device "Millennium"  
-Monitor "NEC !MultiSync 5FGp"  
-Subsection "Display"  
-Depth 8  
-Modes "default"  
-!ViewPort 0  
-!EndSubsection  
-Subsection "Display"  
-Depth 16  
-Modes "default"  
-!ViewPort 0  
-!EndSubsection  
-Subsection "Display"  
-Depth 24  
-Modes "default"  
-!ViewPort 0  
-!EndSubsection  
-Subsection "Display"  
-Depth 32  
-Modes "default"  
-!ViewPort 0  
-!EndSubsection  
-!EndSection  
-  
-  
-  
-Use the "default" modes as I don't think any other one will work with  
-the Matrox frame buffer.  
-  
-  
-  
-  
-!Try starting the X server on the second monitor.  
-  
-  
-Set the variable FRAMEBUFFER to the second frame buffer.  
-  
-  
-"export FRAMEBUFFER=/dev/fb1"  
-  
-  
-or  
-  
-  
-"setenv FRAMEBUFFER /dev/fb1"  
-  
-  
-You need to start the X server so that it both matches the selected  
-color depth and it appears on the same monitor you start the X server  
-from.  
-  
-  
-e.g. "startx -- :0 -bpp 16 vt06"  
-  
-  
-This example will start the "zeroth" X server on virtual console six  
-with 16 bit color. Using ":1" when launching another X server for  
-the other frame buffer will allow you to have two X servers running.  
-  
-  
-  
-  
-!!14.10 Summary  
-  
-  
-  
-The steps involved in getting an X server running on a second monitor  
-can be summarized as follows:  
-  
-  
-* Get the kernel patch, fbset, and con2fb.  
-  
-  
-* Patch the kernel, configure, rebuild, and reboot.  
-  
-  
-* Add XF86_FBDev section to XF86Config file and set X link.  
-  
-  
-Then each time you reboot:  
-  
-  
-* Move a console over. e.g. "con2fb /dev/fb1 /dev/tty6"  
-  
-  
-* Adjust the settings e.g. "fbset -fb /dev/fb1 1280x1024"  
-  
-  
-* Set the FRAMEBUFFER. e.g. "export FRAMEBUFFER=/dev/fb1"  
-  
-  
-* Start the X server. e.g. "startx -- -bpp 16 vt06"  
-  
-  
-You can automate this each time you reboot via a shell alias. It  
-must be an alias and not a shell script since it needs to detect the  
-current console number. This is my C-shell alias to start up X on  
-a second fixed frequency monitor:  
-  
-  
-  
-  
-alias startxfb = "  
-setenv FRAMEBUFFER /dev/fb\!*; # Set the env var to the cmd arg.  
-con2fb $FRAMEBUFFER /dev/$tty; # Move the fb to the current tty.  
-fbset -fb $FRAMEBUFFER 1280x1024@62; # Favorite from /etc/fb.modes  
-startx -- :\!* -bpp 16 vt0`echo $tty | cut -dy f 2`' # X on this tty.  
-"  
-  
-  
-  
-In my .cshrc file these are all on the same line together without  
-the comments, but it's easier to read here with line breaks and  
-comments inserted. I just give the number of the frame buffer as an  
-argument and it starts right up.  
-  
-  
-I'm not sure how to do this same alias in bash. I don't know how to  
-determine the current tty or get the arguments to an alias in bash.  
-If someone lets me know I'll insert it here. However, you can use  
-the "tty" command to get the name of the current VT and just make  
-two separate aliases for each X server.  
-  
-  
-  
-  
-!!14.11 Other Notes and Problems  
-  
-  
-  
-* Both "fbset" and "startx" MUST be run from the same frame buffer  
-as the one being affected. This places serious limits on how much  
-of these commands can be automated via scripts.  
-  
-  
-* XFree86 4.0 will have "proper" multi-head support, but 3.3.1 does  
-not. You can run two servers with 3.3.1 and use x2x to switch  
-between them however...(see the next bullet)  
-  
-  
-* The inactive frame buffer will just hold the last image of when it  
-was active, no updates with occur.  
-  
-  
-* The monitor that's not selected doesn't always preseve it's state  
-when not active. (But it usually does.)  
-  
-  
-* Geert Uytterhoeven (the frame buffer maintainer) and Linus  
-Torvalds don't agree with the current "frame buffer per VT"  
-multi-head console support changes (i.e. fbaddon) so it may never  
-be in the mainstream kernel tree. (This was heard third hand and  
-may be wildly untrue.)  
-  
-  
-* If you "break the rules" and start the X server (run "startx")  
-from a different monitor, the machine can eventually crash badly  
-with the keyboard and mouse input all mixed together.  
-  
-  
-* The documentation framebuffer.txt in the kernel source explains  
-that you can use the Modeline settings in your XF86Config file  
-directly when running X. Using the Matrox frame buffer seems to  
-force the X server to drop all of those. So you can only have the  
-one ("default") setting at at time (the same one you had in text  
-mode).  
-  
-  
-* The XF86_FBDev is unaccelerated. However, there are patches for  
-accelerated Matrox support at  
-  
-http://www.in-berlin.de/User/kraxel/xfree86/  
-  
-  
-  
-  
-  
-!Getting "init level five" (i.e. xdm/gdm) to work  
-  
-  
-I have not yet figured out a way to boot with init level 5 with a  
-dual monitor configuration (and actually have the server on either  
-the second montior or both). While it seems easy enough to add a  
-line to the gdm/xdm Xservers file, the constrain that you must start  
-the X server from the same frame buffer prevents the obvious  
-solution from working. If anyone finds a way please e-mail me and  
-I'll add it here.  
-  
-  
-  
-  
-!Using the x2x program.  
-  
-  
-There's a nice little program called x2x that will switch X servers  
-for you when you get to the edge of the screen. Last known home for  
-this program was:  
-  
-http://ftp.digital.com/pub/DEC/SRC/x2x/  
-  
-It's  
-also an optional Debian package. I haven't tried it yet but some  
-users have reported success.  
-  
-  
-  
-  
-!Other useful commands  
-  
-  
-These are existing linux commands that are worth remembering when  
-dealing with a multi-head configuration (especially in writing  
-scripts).  
-  
-  
-* "chvt" will allow you to switch between virtual terminals.  
-  
-  
-* "openvt" start a program on a new virtual terminal (VT).  
-  
-  
-* "tty" will report the name of the current terminal.  
-  
-  
-  
-  
-!Appendix A. Octave cvtmode.m script  
-  
-  
-(note the bpp setting)  
-  
-#!/usr/bin/octave -q  
-bpp = 16;  
-DCF = sscanf(argv(1,:), "%f");  
-HR = sscanf(argv(2,:), "%f");  
-SH1 = sscanf(argv(3,:), "%f");  
-SH2 = sscanf(argv(4,:), "%f");  
-HFL = sscanf(argv(5,:), "%f");  
-VR = sscanf(argv(6,:), "%f");  
-SV1 = sscanf(argv(7,:), "%f");  
-SV2 = sscanf(argv(8,:), "%f");  
-VFL = sscanf(argv(9,:), "%f");  
-pixclock = 1000000 / DCF;  
-left_margin = HFL - SH2;  
-right_margin = SH1 - HR;  
-hsync_len = SH2 - SH1;  
-# 3) vertical timings:  
-upper_margin = VFL - SV2;  
-lower_margin = SV1 - VR;  
-vsync_len = SV2 - SV1;  
-RR = DCF / (HFL * VFL) *1e6;  
-HSF = DCF / HFL * 1e3;  
-printf("mode \"%dx%d\"\n",HR,VR);  
-printf(" # D: %3.2f MHz, H: %3.2f kHz, V: %2.2f Hz\n", DCF, HSF, RR);  
-printf(" geometry %d %d %d %d %d\n", HR, VR, HR, VR, bpp);  
-printf(" timings %d %d %d %d %d %d %d\n", ...  
-pixclock, left_margin, right_margin, ...  
-upper_margin, lower_margin, ...  
-hsync_len, vsync_len);  
-printf("endmode\n");  
-  
-  
-  
-  
-  
-!Appendix B. Borne Shell script "cvtfile"  
-  
-  
-(This calls the octave script "cvtmode")  
-  
-#!/bin/sh  
-# Shell script to convert XF86Config file to fb.modes file.  
-# Uses octave script cvtmode.m  
-if [[ -z $1 ]; then  
-FILE=/etc/X11/XF86Config  
-else  
-FILE=$1  
-fi  
-i=1  
-LEN=`grep Modeline $FILE | wc -l`  
-while expr $i \< $LEN > /dev/null ;  
-do  
-CURLINE=`grep Modeline $FILE | cut -d'"' -f 3-20 | head -$i | tail -1 `  
-./cvtmode.m $CURLINE  
-echo " "  
-i=`expr $i + 1`  
-done  
-  
-  
-  
-  
-----  
-  
-!!15. Using/Changing fonts  
-  
-  
-  
-  
-  
-To get the capability to change fonts, you need kbd-.99. You may obtain  
-this from  
-  
-ftp://ftp.win.tue.nl/pub/linux/utils/kbd  
-  
-  
-  
-One advantage of downloading and installing kbd-.99 is that you will be  
-able to load international fonts (i.e Euro symbol) into your console  
-device (It is tres chic to have three symbols on my keyboard, the dollar  
-sign, the English pound sign and the Euro sign!).  
-  
-  
-  
-----  
-  
-!!16. Changing console modes  
-  
-  
-  
-  
-  
-To get the capability to change modes (i.e 640x480, 800x800 etc), you  
-need fbset (currently fbset-19990118.tar.gz) - you may ftp it from:  
-  
-  
-  
-  
-http://www.cs.kuleuven.ac.be/~geert/bin/fbset-19990118.tar.gz  
-  
-  
-  
-This comes with a full set of instructions on how to operate this.  
-  
-  
-  
-----  
-  
-!!17. Setting up the X11 FBdev driver  
-  
-  
-  
-  
-  
-If you are not using XFree86 3.3.3.1 or later, you are urged to upgrade  
-to XFree86 3.3.3.1 - it includes a FBdev X driver for framebuffer devices.  
-Otherwise, follow the steps below to either download or build your own FBdev  
-driver for older XFree86 versions such as 3.3.2, 3.3.3 etc.  
-  
-  
-Go to  
-  
-http://www.xfree86.org  
-  
-, and download the latest XServers source archive,  
-unpack, and configure the drivers, following these steps:  
-  
-  
-  
-  
-  
-*Edit xc/config/cf/xf86site.def, uncomment the #define for  
-XF68FBDevServer  
-*  
-  
-*Comment out ''all'' references to FB_VISUAL_STATIC_DIRECTCOLOR, as  
-these are bogus and aren't used any more. If you are using XFree86 3.3.3.1,  
-there is no need to do this step - as they have removed this.  
-*  
-  
-*Edit xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c, and  
-change K_RAW to K_MEDIUMRAW.  
-*  
-  
-  
-  
-and then build the driver. Don't worry about the m68k references, it  
-supports Intel platforms. Then build the whole thing - it'll take a long  
-time though as it's a large source tree.  
-  
-  
-Alternatively, if you don't have the time to spare, you can obtain the  
-binaries from the sites below. Please note that these are 'unofficial'  
-builds and you use them at your risk.  
-  
-  
-For libc5, use the one at:  
-  
-  
-  
-  
-http://user.cs.tu-berlin.de/~kraxel/linux/XF68_FBDev.gz  
-  
-For glibc2, download from these URLs.  
-  
-  
-  
-  
-http://user.cs.tu-berlin.de/~kraxel/linux/XF68_FBDev.libc6.gz  
-http://pobox.com/~brion/linux/fbxserver.html  
-  
-  
-  
-There have been reports that X11 is non functional on certain graphic  
-cards with this vesafb feature enabled, if this is happening, try the new  
-XF86_FBdev driver for X11.  
-  
-  
-This driver, along with vesafb can also help run X11 in higher graphic  
-resolutions with certain graphic chipsets which are not supported by any  
-of the current X11 drivers. Examples are MGA G-200 et. al.  
-  
-  
-To configure the XF86_FBdev driver with your X11 system, you'll need to  
-edit your XF86Config for the following:  
-  
-  
-  
-  
-Section "Screen"  
-Driver "FBDev"  
-Device "Primary Card"  
-Monitor "Primary Monitor"  
-!SubSection "Display"  
-Modes "default"  
-!EndSubSection  
-!EndSection  
-  
-  
-  
-You'll also need to set !XkbDisable in the keyboard section as well, or  
-invoke the XF86_FBDev server with the '-kb' option to set up your keyboard  
-so it works properly. If you forget to set !XkbDisable, you will have to  
-put the following lines in your .Xmodmap to straighten out the keyboard  
-mappings. Alternatively, you can edit your xkb to reflect the list below.  
-  
-  
-''This is fixed in XFree86 3.3.3.1, and it is a good idea to upgrade to  
-this version anyway because there are quite a few bug fixes, and also,  
-it includes FBDev as one of the drvers, as I've mentioned previously.''  
-  
-  
-  
-  
-! Keycode settings required  
-keycode 104 = KP_Enter  
-keycode 105 = Control_R  
-keycode 106 = KP_Divide  
-keycode 108 = Alt_R Meta_R  
-keycode 110 = Home  
-keycode 111 = Up  
-keycode 112 = Prior  
-keycode 113 = Left  
-keycode 114 = Right  
-keycode 115 = End  
-keycode 116 = Down  
-keycode 117 = Next  
-keycode 118 = Insert  
-keycode 119 = Delete  
-  
-  
-  
-You may need to do some fiddling around with this (try copying the  
-original definition from the original X11 driver that you were using and  
-editing the name of the driver to FBDev), but basically this is what you  
-need to do to use the vesafb X11 driver.  
-  
-  
-Hopefully the X11 problems with supported graphic cards will be fixed in  
-future releases.  
-  
-  
-  
-----  
-  
-!!18. How do I convert XFree86 mode-lines into framebuffer device timings?  
-  
-  
-  
-  
-  
-If you have XFree86 (X11) installed on your machine, and you can use it successfully,  
-it is a simple matter to convert the mode-lines in your XF86Config to the  
-required timings needed by the framebuffer devices.  
-  
-  
-The framebuffer device requires the following fields  
-  
-  
-*pixclock - pixel clock in pico seconds  
-*  
-  
-*left_margin - time fron sync to picture  
-*  
-  
-*right_margin - time from picture to sync  
-*  
-  
-*upper_margin - time from sync to picture  
-*  
-  
-*lower_margin - time from picture to sync  
-*  
-  
-*hsync_len - length of horizontal sync  
-*  
-  
-*vsync_len - length of vertical sync  
-*  
-  
-  
-  
-  
-  
-  
-An XFree86 mode line has the following fields  
-  
-  
-  
-  
-Modeline "1280x1024" DCF HR SH1 SH2 HFL VR SV1 SV2 VFL  
-  
-  
-  
-  
-  
-  
-It is necessary to do some simple calculations to translate the XF86 mode-lines into  
-a set of framebuffer device timings. As an example, we shall examine how to convert a  
-mode-line taken from my XF86Config file.  
-  
-  
-  
-  
-Modeline "1280x1024" 110.00 1280 1328 1512 1712 1024 1025 1028 1054  
-  
-  
-  
-  
-  
-  
-First, calculate the required pixclock rate. XFree86 uses megahertz whilst framebuffer  
-devices uses picoseconds (Why, I don't know). Divide one million by DCF. For example,  
-1,000,000 / 110.0 = 9090.9091  
-  
-  
-  
-  
-  
-Now we need to calculate the horizontal timings.  
-  
-  
-*left_margin = HFL - SH2  
-*  
-  
-*right_margin = SH1 - HR  
-*  
-  
-*hsync_len = SH2 - SH1  
-*  
-  
-  
-  
-  
-  
-  
-In our example, this would be:  
-  
-  
-*left_margin = 1712 - 1512 = 200  
-*  
-  
-*right_margin = 1328 - 1280 = 48  
-*  
-  
-*hsync_len = 1512 - 1328 = 184  
-*  
-  
-  
-  
-  
-  
-  
-And now we need to calculate the vertical timings.  
-  
-  
-*upper_margin = VFL - SV2  
-*  
-  
-*lower_margin = SV1 - VR  
-*  
-  
-*vsync_len = SV2 - SV1  
-*  
-  
-  
-  
-  
-  
-  
-For our example, this would be:  
-  
-  
-*upper_margin = 1054 - 1028 = 26  
-*  
-  
-*lower_margin = 1025 - 1024 = 1  
-*  
-  
-*vsync_len = 1028 - 1025 = 3  
-*  
-  
-  
-  
-  
-  
-  
-Now we can use this information to set up the framebuffer for the desired mode.  
-For example, for the matroxfb framebuffer, it requires:  
-  
-  
-  
-  
-video=matrox:xres:<>,yres:<>,depth:<>,left:<>,right:<>,hslen:<>,upper:<>,lower:<>,vslen:<>  
-  
-  
-  
-I put in my /etc/lilo.conf the following line:  
-  
-append = "video=matrox:xres:1280,yres:1024,depth:32,left:200,right:48,hslen:184,upper:26,lower:,vslen:3"  
-  
-  
-  
-  
-  
-  
-Note that in this case the pixclock isn't used. It's only necessary if you don't like the default pixclock  
-rates. You can supply this as a parameter as well. Setting the pixclock is documented in other parts of this  
-HOWTO.  
-  
-  
-  
-----  
-  
-!!19. Changing the Linux logo  
-  
-  
-  
-  
-  
-It can be customised by changing the file linux_logo.h in include/linux  
-directory. its a c header and pretty hard to change by hand however  
-there is a plugin available for gimp  
-  
-http://registry.gimp.org/detailview.phtml?plugin=Linux+Logo  
-  
-that  
-will create one for you. all you need is a picture 80x80 with less than  
-224 colours. you can either let the plug in create the 3 varieties  
-(2,16,224) or create them yourself and use them with the plug-in. it  
-will ask you where you want to store the file and if you are game you  
-can put it in ($SRCDIR)/include/linux/linux_logo.h. once that is  
-finished all you need to do is recompile the kernel as usual, reboot,  
-and if framebuffer is working you will see your new logo upon bootup.  
-  
-  
-  
-----  
-  
-!!20. Looking for further information?  
-  
-  
-  
-  
-  
-For those of you interested in working with the framebuffer drivers,  
-point your browser at  
-  
-http://www.linux-fbdev.org  
-  
-for  
-information on programming.  
-  
-  
-French speakers, there is a translation at  
-  
-http://www.freenix.org/unix/linux/HOWTO/mini/Vesafb .html  
-  
-----  
+Describe [HowToFramebufferHOWTO ] here.