From 96aa5bc17d63245d5ad851a167b6d579e8431d32 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 6 Apr 2017 02:31:56 -0400 Subject: system/fbterm: Updated for version 1.8, new maintainer. Signed-off-by: B. Watson --- system/fbterm/checkfb.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 system/fbterm/checkfb.c (limited to 'system/fbterm/checkfb.c') diff --git a/system/fbterm/checkfb.c b/system/fbterm/checkfb.c new file mode 100644 index 0000000000..9180c4ef60 --- /dev/null +++ b/system/fbterm/checkfb.c @@ -0,0 +1,77 @@ +/* +# qtopia core testing framebuffer (1) +# Originally written by Trolltech (2)(3) +# +# (1) http://cep.xray.aps.anl.gov/software/qt4-x11-4.2.2/qtopiacore-testingframebuffer.html +# (2) http://cep.xray.aps.anl.gov/software/qt4-x11-4.2.2/opensourceedition.html +# (3) http://doc.qt.digia.com/4.2/gpl.html +# +# Modified by Sébastien Ballet +*/ + +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + int fbfd = 0; + struct fb_var_screeninfo vinfo; + struct fb_fix_screeninfo finfo; + long int screensize = 0; + char *fbp = 0; + + char* fbName="/dev/fb0"; + + if ( argc > 2) { + printf("usage: checkfb [framebuffer device] \n"); + exit(1); + } + + if ( argc == 2) { + fbName=argv[1]; + } + + fbfd = open(fbName, O_RDWR); + + if (fbfd == -1) { + perror("Error: cannot open framebuffer device"); + exit(1); + } + + printf("The framebuffer device (%s) was opened successfully.\n",fbName); + + // Get fixed screen information + if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo) == -1) { + perror("Error reading fixed information"); + exit(2); + } + + // Get variable screen information + if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo) == -1) { + perror("Error reading variable information"); + 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 ( fbp == MAP_FAILED ) { + perror("Error: failed to map framebuffer device to memory"); + exit(4); + } + printf("The framebuffer device was mapped to memory successfully.\n"); + + munmap(fbp, screensize); + close(fbfd); + return 0; +} -- cgit v1.2.3