diff options
Diffstat (limited to 'doc/framebuffer-howto.doc')
-rw-r--r-- | doc/framebuffer-howto.doc | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/doc/framebuffer-howto.doc b/doc/framebuffer-howto.doc deleted file mode 100644 index b0c0b6e32..000000000 --- a/doc/framebuffer-howto.doc +++ /dev/null @@ -1,250 +0,0 @@ -/**************************************************************************** -** -** Windowsystem-specific pages -** -** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved. -** -** This file is part of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at sales@trolltech.com. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.QPL -** included in the packaging of this file. Licensees holding valid Qt -** Commercial licenses may use this file in accordance with the Qt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -/*! -\page emb-framebuffer-howto.html - -\title Enabling the Linux Framebuffer - -This is only a short guide. -See \l file:/usr/src/linux/README and -\l file:/usr/src/linux/Documentation/fb/ for detailed information. -There is also a detailed explanation at -\l http://www.linuxdoc.org/HOWTO/Framebuffer-HOWTO.html. - -\list 1 -\i Make sure that you have the Linux kernel source code in -\l file:/usr/src/linux/. - -\i Log in as root and \c cd \c /usr/src/linux - -\i Configure the kernel: - - Run: -\code - make menuconfig -\endcode - - Select "Code maturity level options" and set "Prompt for - development and/or incomplete code/drivers". - - Then select "Console drivers" and set "Support for frame buffer - devices" to built-in (even if it says EXPERIMENTAL). Then configure - the driver. Most modern graphics cards can use the "VESA VGA - graphics console"; use that or a driver that specifically matches - your video card. Finally, enable "Advanced low level driver options" - and make sure that 16 and 32 bpp packed pixel support are enabled. - - When you are finished, chose exit and save. - -\i Compile the kernel - - First do: -\code - make dep -\endcode - then: -\code - make bzImage -\endcode - - The new kernel should now be in arch/i386/boot/bzImage. - -\i Copy the kernel to the boot directory: -\code - cp arch/i386/boot/bzImage /boot/linux.vesafb -\endcode - -\i Edit /etc/lilo.conf. - - \warning Keep a backup of \l file:/etc/lilo.conf, and have a rescue disk - available. If you make a mistake, the machine may not boot. - - The file \l file:/etc/lilo.conf specifies how the system boots. The - precise contents of the file varies from system to system. Here is - an example: -\code -# LILO configuration file -boot = /dev/hda3 -delay = 30 -image = /boot/vmlinuz - root = /dev/hda3 - label = Linux - read-only # Non-UMSDOS filesystems should be mounted read-only for checking -other=/dev/hda1 - label=nt - table=/dev/hda -\endcode - - Make a new "image" section that is a copy of the first one, but with -\code - image = /boot/linux.vesafb -\endcode - and -\code - label = Linux-vesafb -\endcode - Place it just above the first image section. - - Add a line before the image section saying \c{vga = 791}. (Meaning - 1024x768, 16 bpp.) - - With the above example, lilo.conf would now be: -\code -# LILO configuration file -boot = /dev/hda3 -delay = 30 -vga = 791 -image = /boot/linux.vesafb - root = /dev/hda3 - label = Linux-vesafb - read-only # Non-UMSDOS filesystems should be mounted read-only for checking -image = /boot/vmlinuz - root = /dev/hda3 - label = Linux - read-only # Non-UMSDOS filesystems should be mounted read-only for checking -other=/dev/hda1 - label=nt - table=/dev/hda -\endcode - -Do not change any existing lines in the file; just add new ones. - -\i To make the new changes take effect, run the lilo program: -\code - lilo -\endcode - -\i Reboot the system. You should now see a penguin logo while the - system is booting. - (Or more than one on a multi-processor machine.) - -\i If it does not boot properly with the new kernel, you can boot with - the old kernel by entering the label of the old image section at - the LILO prompt. (with the example lilo.conf file, the old label is - Linux.) - - If that does not work (probably because of an error in lilo.conf), - boot the machine using your rescue disk, restore \l - file:/etc/lilo.conf from backup and re-run lilo. - -\i Testing: Here's a short program that opens the frame buffer and draws a - gradient-filled red square. - -\code -#include <unistd.h> -#include <stdio.h> -#include <fcntl.h> -#include <linux/fb.h> -#include <sys/mman.h> - -int main() -{ - int fbfd = 0; - struct fb_var_screeninfo vinfo; - struct fb_fix_screeninfo finfo; - long int screensize = 0; - char *fbp = 0; - int x = 0, y = 0; - long int location = 0; - - // Open the file for reading and writing - fbfd = open("/dev/fb0", O_RDWR); - if (!fbfd) { - printf("Error: cannot open framebuffer device.\n"); - exit(1); - } - printf("The framebuffer device was opened successfully.\n"); - - // Get fixed screen information - if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo)) { - printf("Error reading fixed information.\n"); - exit(2); - } - - // Get variable screen information - if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo)) { - printf("Error reading variable information.\n"); - exit(3); - } - - printf("%dx%d, %dbpp\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel ); - - // Figure out the size of the screen in bytes - screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; - - // Map the device to memory - fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, - fbfd, 0); - if ((int)fbp == -1) { - printf("Error: failed to map framebuffer device to memory.\n"); - exit(4); - } - printf("The framebuffer device was mapped to memory successfully.\n"); - - x = 100; y = 100; // Where we are going to put the pixel - - // Figure out where in memory to put the pixel - for ( y = 100; y < 300; y++ ) - for ( x = 100; x < 300; x++ ) { - - location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) + - (y+vinfo.yoffset) * finfo.line_length; - - if ( vinfo.bits_per_pixel == 32 ) { - *(fbp + location) = 100; // Some blue - *(fbp + location + 1) = 15+(x-100)/2; // A little green - *(fbp + location + 2) = 200-(y-100)/5; // A lot of red - *(fbp + location + 3) = 0; // No transparency - } else { //assume 16bpp - int b = 10; - int g = (x-100)/6; // A little green - int r = 31-(y-100)/16; // A lot of red - unsigned short int t = r<<11 | g << 5 | b; - *((unsigned short int*)(fbp + location)) = t; - } - - } - munmap(fbp, screensize); - close(fbfd); - return 0; -} -\endcode -\endlist - -*/ |