New package: fbset-2.1 (with Debian patches).

This commit is contained in:
Juan RP 2013-07-16 22:28:58 +02:00
parent 3d4825e31c
commit b1c504efd1
12 changed files with 2402 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,135 @@
---
etc/fb.modes.ATI | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 77 insertions(+), 7 deletions(-)
--- a/etc/fb.modes.ATI
+++ b/etc/fb.modes.ATI
@@ -6,6 +6,8 @@
# Mach64 Programmer's Guide, Appendix C
# (C) 1998 ATI Technologies Inc.
#
+# Kop: this are very generic modes and not only for ATI cards.
+#
#
# 640x480, 60 Hz, Non-Interlaced (25.175 MHz dotclock)
@@ -132,6 +134,36 @@ mode "640x480-100"
timings 22272 48 32 17 22 128 12
endmode
+
+#
+# 768x576, 75 Hz, Non-Interlaced (49.188 MHz dotclock)
+#
+# Horizontal Vertical
+# Resolution 768 576
+# Scan Frequency 46.580 kHz 75.008 Hz
+# Sync Width us ms
+# chars lines
+# Front Porch us ms
+# chars lines
+# Back Porch us ms
+# chars lines
+# Active Time us ms
+# chars lines
+# Blank Time us ms
+# chars lines
+# Polarity negative negative
+#
+# This is a mode often used, because fbtv suggests this, since
+# this is the mode for "normal" TVs.
+#
+
+mode "768x576-75"
+ # D: 49.188 MHz, H: 46.580 kHz, V: 75.008 Hz
+ geometry 768 576 768 576 32
+ timings 20330 128 32 32 8 128 5
+endmode
+
+
#
# 800x600, 48 Hz, Interlaced (36.00 MHz dotclock)
#
@@ -430,7 +462,7 @@ endmode
# 1024x768, 72 Hz, Non-Interlaced (75.00 MHz dotclock)
#
# Horizontal Vertical
-# Resolution 10224 768
+# Resolution 1024 768
# Scan Frequency 58.230 kHz 72.245 Hz
# Sync Width 1.813 us 0.103 ms
# 17 chars 6 lines
@@ -447,7 +479,7 @@ endmode
mode "1024x768-72"
# D: 75.00 MHz, H: 58.230 kHz, V: 72.245 Hz
- geometry 10224 768 10224 768 8
+ geometry 1024 768 1024 768 8
timings 13334 104 24 29 3 136 6
endmode
@@ -691,7 +723,45 @@ mode "1152x864-80"
hsync high
vsync high
endmode
-
+
+#
+# 1280x960, 75 Hz, Non-Interlaced (126.00 MHz dotclock)
+#
+# Horizontal Vertical
+# Resolution 1280 960
+# Scan Frequency 74.788 kHz 74.788 Hz
+# Sync Width 1.018 us 0.092 ms
+# 14 chars 7 lines
+# Front Porch 0.127 us 0.393 ms
+# 2 chars 30 lines
+# Back Porch 1.473 us 0.747 ms
+# 20 chars 57 lines
+# Active Time 10.473 us 11.311 ms
+# 144 chars 864 lines
+# Blank Time 2.618 us 1.231 ms
+# 36 chars 94 lines
+# Polarity positive positive
+#
+
+mode "1280x960-75-8"
+ # D: 125.644 MHz, H: 74.788 kHz, V: 74.788 Hz
+ geometry 1280 960 1280 960 8
+ timings 7959 224 32 36 1 144 3
+endmode
+
+mode "1280x960-75"
+ # D: 125.644 MHz, H: 74.788 kHz, V: 74.788 Hz
+ geometry 1280 960 1280 960 16
+ timings 7959 224 32 36 1 144 3
+endmode
+
+mode "1280x960-75-32"
+ # D: 125.644 MHz, H: 74.788 kHz, V: 74.788 Hz
+ geometry 1280 960 1280 960 32
+ timings 7959 224 32 36 1 144 3
+endmode
+
+
#
# 1280x1024, 43 Hz, Interlaced (80.00 MHz dotclock)
#
@@ -849,13 +919,13 @@ endmode
#
mode "1280x1024-75"
- # D: 135.00 MHz, H: 79.976 kHz, V: 75.02 Hz
- geometry 1280 1024 1280 1024 8
- timings 7408 248 16 38 1 144 3
+ # D: 134.880 MHz, H: 79.905 kHz, V: 74.958 Hz
+ geometry 1280 1024 1280 3264 8
+ timings 7414 232 64 38 1 112 3
hsync high
vsync high
endmode
-
+
#
# 1600x1200, 60 Hz, Non-Interlaced (156.00 MHz dotclock)
#

View File

@ -0,0 +1,110 @@
Status: not-sent
# This supposedly does not need to be sent upstream as there's fbutils,
# although its development has stagnated.
---
con2fbmap.1 | 29 ++++++++++++++++++++++++++
con2fbmap.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 95 insertions(+)
--- /dev/null
+++ b/con2fbmap.1
@@ -0,0 +1,29 @@
+.TH con2fbmap 1 2006-01-18 2.1 "Linux frame buffer utils"
+.SH NAME
+con2fbmap \- shows and sets mapping between consoles and framebuffer devices.
+.SH SYNOPSIS
+.B con2fbmap
+.RI console
+.RI [ framebuffer ]
+.SH DESCRIPTION
+.B This documentation is not finished
+.PP
+.B con2fbmap
+is a system utility to show or change the mapping of the consoles to the
+frame buffer device. The frame buffer device provides a simple and unique
+interface to access different kinds of graphic displays.
+.PP
+Frame buffer devices are accessed via special device nodes located in the
+/dev directory. The naming scheme for these nodes is always
+.IR \fBfb < n >,
+where
+.I n
+is the number of the used frame buffer device.
+.PP
+.SH OPTIONS
+The first option must be there, and identify the console on which to work.
+If the second option is not set, con2fbmap shows the current mapping of
+identified console. If the second argument is given (as a number) con2fbmap
+maps the identified console to said framebuffer device.
+.TP
+Sven LUTHER <luther@debian.org>
--- /dev/null
+++ b/con2fbmap.c
@@ -0,0 +1,66 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <linux/fb.h>
+
+#define DEFAULT_FRAMEBUFFER "/dev/fb0"
+#define DEFAULT_FRAMEBUFFER_DEVFS "/dev/fb/0"
+
+const char *programname;
+
+void Usage(void)
+{
+ fprintf(stderr, "\nUsage: %s console [framebuffer]\n\n", programname);
+ exit(1);
+}
+
+int main(int argc, char *argv[])
+{
+ int do_write = 0;
+ char *fbpath; /* any frame buffer will do */
+ int fd;
+ struct fb_con2fbmap map;
+
+ programname = argv[0];
+ switch (argc) {
+ case 3:
+ do_write = 1;
+ map.framebuffer = atoi(argv[2]);
+ case 2:
+ map.console = atoi(argv[1]);
+ break;
+ default:
+ Usage();
+ }
+
+ if (access("/dev/.devfsd", F_OK) == 0) /* devfs detected */
+ fbpath = DEFAULT_FRAMEBUFFER_DEVFS;
+ else
+ fbpath = DEFAULT_FRAMEBUFFER;
+
+ if ((fd = open(fbpath, O_RDONLY)) == -1) {
+ fprintf(stderr, "open %s: %s\n", fbpath, strerror(errno));
+ exit(1);
+ }
+ if (do_write) {
+ if (ioctl(fd, FBIOPUT_CON2FBMAP, &map)) {
+ fprintf(stderr, "ioctl FBIOPUT_CON2FBMAP: %s\n", strerror(errno));
+ exit(1);
+ }
+ } else {
+ if (ioctl(fd, FBIOGET_CON2FBMAP, &map)) {
+ fprintf(stderr, "ioctl FBIOGET_CON2FBMAP: %s\n", strerror(errno));
+ exit(1);
+ }
+ printf("console %d is mapped to framebuffer %d\n", map.console,
+ map.framebuffer);
+ }
+ close(fd);
+ exit(0);
+}

View File

@ -0,0 +1,26 @@
Status: sent-upstream
---
fbset.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fbset.c
+++ b/fbset.c
@@ -710,7 +710,7 @@ static void DisplayFBInfo(struct fb_fix_
puts("Frame buffer device information:");
printf(" Name : %s\n", fix->id);
- printf(" Address : %p\n", fix->smem_start);
+ printf(" Address : %#0lx\n", fix->smem_start);
printf(" Size : %d\n", fix->smem_len);
printf(" Type : ");
switch (fix->type) {
@@ -780,7 +780,7 @@ static void DisplayFBInfo(struct fb_fix_
printf(" YWrapStep : %d\n", fix->ywrapstep);
printf(" LineLength : %d\n", fix->line_length);
if (fix->mmio_len) {
- printf(" MMIO Address: %p\n", fix->mmio_start);
+ printf(" MMIO Address: %#0lx\n", fix->mmio_start);
printf(" MMIO Size : %d\n", fix->mmio_len);
}
printf(" Accelerator : ");

View File

@ -0,0 +1,26 @@
Status: sent-upstream
---
fbset.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/fbset.c
+++ b/fbset.c
@@ -832,7 +832,8 @@ static int FillScanRates(struct VideoMod
static void Usage(void)
{
puts(VERSION);
- Die("\nUsage: %s [options] [mode]\n\n"
+ printf(
+ "\nUsage: %s [options] [mode]\n\n"
"Valid options:\n"
" General options:\n"
" -h, --help : display this usage information\n"
@@ -887,6 +888,7 @@ static void Usage(void)
" -step <value> : step increment (in pixels or pixel lines)\n"
" (default is 8 horizontal, 2 vertical)\n",
ProgramName);
+ exit(0);
}

View File

@ -0,0 +1,69 @@
Status: sent-upstream
---
fbset.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
--- a/fbset.c
+++ b/fbset.c
@@ -199,6 +199,60 @@ static struct accelentry {
{ FB_ACCEL_SUN_CGTHREE, "Sun cg3" },
{ FB_ACCEL_SUN_TCX, "Sun tcx" },
{ FB_ACCEL_MATROX_MGAG400, "Matrox G400" },
+ { FB_ACCEL_NV3, "nVidia RIVA 128" },
+ { FB_ACCEL_NV4, "nVidia RIVA TNT" },
+ { FB_ACCEL_NV5, "nVidia RIVA TNT2" },
+ { FB_ACCEL_CT_6555x, "C&T 6555x" },
+ { FB_ACCEL_3DFX_BANSHEE, "3Dfx Banshee" },
+ { FB_ACCEL_ATI_RAGE128, "ATI Rage128 family" },
+ { FB_ACCEL_ATI_RADEON, "ATI Radeon family" },
+ { FB_ACCEL_IGS_CYBER2000, "CyberPro 2000" },
+ { FB_ACCEL_IGS_CYBER2010, "CyberPro 2010" },
+ { FB_ACCEL_IGS_CYBER5000, "CyberPro 5000" },
+ { FB_ACCEL_SIS_GLAMOUR, "SiS 300/630/540" },
+ { FB_ACCEL_SIS_GLAMOUR_2, "SiS 315/650/740" },
+ { FB_ACCEL_SIS_XABRE, "SiS 330 (Xabre)" },
+ { FB_ACCEL_3DLABS_PERMEDIA3, "3Dlabs Permedia 3" },
+ { FB_ACCEL_I810, "Intel 810/815" },
+ { FB_ACCEL_I830, "Intel 830M/845G/85x/865G" },
+ { FB_ACCEL_NEOMAGIC_NM2070, "NeoMagic NM2070" },
+ { FB_ACCEL_NEOMAGIC_NM2090, "NeoMagic NM2090" },
+ { FB_ACCEL_NEOMAGIC_NM2093, "NeoMagic NM2093" },
+ { FB_ACCEL_NEOMAGIC_NM2097, "NeoMagic NM2097" },
+ { FB_ACCEL_NEOMAGIC_NM2160, "NeoMagic NM2160" },
+ { FB_ACCEL_NEOMAGIC_NM2200, "NeoMagic NM2200" },
+ { FB_ACCEL_NEOMAGIC_NM2230, "NeoMagic NM2230" },
+ { FB_ACCEL_NEOMAGIC_NM2360, "NeoMagic NM2360" },
+ { FB_ACCEL_NEOMAGIC_NM2380, "NeoMagic NM2380" },
+ { FB_ACCEL_PXA3XX, "PXA3xx" },
+ { FB_ACCEL_SAVAGE4, "S3 Savage4" },
+ { FB_ACCEL_SAVAGE3D, "S3 Savage3D" },
+ { FB_ACCEL_SAVAGE3D_MV, "S3 Savage3D-MV" },
+ { FB_ACCEL_SAVAGE2000, "S3 Savage2000" },
+ { FB_ACCEL_SAVAGE_MX_MV, "S3 Savage/MX-MV" },
+ { FB_ACCEL_SAVAGE_MX, "S3 Savage/MX" },
+ { FB_ACCEL_SAVAGE_IX_MV, "S3 Savage/IX-MV" },
+ { FB_ACCEL_SAVAGE_IX, "S3 Savage/IX" },
+ { FB_ACCEL_PROSAVAGE_PM, "S3 ProSavage PM133" },
+ { FB_ACCEL_PROSAVAGE_KM, "S3 ProSavage KM133" },
+ { FB_ACCEL_S3TWISTER_P, "S3 Twister" },
+ { FB_ACCEL_S3TWISTER_K, "S3 TwisterK" },
+ { FB_ACCEL_SUPERSAVAGE, "S3 Supersavage" },
+ { FB_ACCEL_PROSAVAGE_DDR, "S3 ProSavage DDR" },
+ { FB_ACCEL_PROSAVAGE_DDRK, "S3 ProSavage DDR-K" },
+ { FB_ACCEL_PUV3_UNIGFX, "PKUnity-v3 Unigfx" },
+ { FB_ACCEL_NV_10, "nVidia Arch 10" },
+ { FB_ACCEL_NV_20, "nVidia Arch 20" },
+ { FB_ACCEL_NV_30, "nVidia Arch 30" },
+ { FB_ACCEL_NV_40, "nVidia Arch 40" },
+ { FB_ACCEL_XGI_VOLARI_V, "XGI Volari V3XT, V5, V8" },
+ { FB_ACCEL_XGI_VOLARI_Z, "XGI Volari Z7" },
+ { FB_ACCEL_OMAP1610, "TI OMAP16xx" },
+ { FB_ACCEL_TRIDENT_TGUI, "Trident TGUI" },
+ { FB_ACCEL_TRIDENT_3DIMAGE, "Trident 3DImage" },
+ { FB_ACCEL_TRIDENT_BLADE3D, "Trident Blade3D" },
+ { FB_ACCEL_TRIDENT_BLADEXP, "Trident BladeXP" },
+ { FB_ACCEL_CIRRUS_ALPINE, "Cirrus Logic 543x/544x/5480" },
};

View File

@ -0,0 +1,49 @@
Status: sent-upstream
---
modes.l | 6 ++++++
modes.y | 4 ++--
2 files changed, 8 insertions(+), 2 deletions(-)
--- a/modes.l
+++ b/modes.l
@@ -99,6 +99,7 @@ static const char *CopyString(const char
keyword [a-zA-Z][a-zA-Z0-9]*
number [0-9]*
+colors [0-9/,]*
string \"[^\"\n]*\"
comment \#([^\n]*)
space [ \t]+
@@ -115,6 +116,11 @@ junk .
return NUMBER;
}
+{colors} {
+ yylval = (unsigned long)CopyString(yytext);
+ return COLORS;
+ }
+
{string} {
yylval = (unsigned long)CopyString(yytext);
return STRING;
--- a/modes.y
+++ b/modes.y
@@ -42,7 +42,7 @@ static void ClearVideoMode(void)
%token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC BCAST LACED DOUBLE
RGBA NONSTD ACCEL GRAYSCALE
- ENDMODE POLARITY BOOLEAN STRING NUMBER
+ ENDMODE POLARITY BOOLEAN STRING NUMBER COLORS
%%
@@ -148,7 +148,7 @@ double : DOUBLE BOOLEAN
}
;
-rgba : RGBA STRING
+rgba : RGBA COLORS
{
makeRGBA(&VideoMode, (const char*)$2);
}

View File

@ -0,0 +1,103 @@
Status: sent-upstream
# Sent part of it, not the indentation fixes, nor the con2fbmap.
---
Makefile | 88 +++++++++++++++++++++++++++++++++++++--------------------------
1 file changed, 53 insertions(+), 35 deletions(-)
--- a/Makefile
+++ b/Makefile
@@ -2,40 +2,58 @@
# Linux Frame Buffer Device Configuration
#
-CC = gcc -Wall -O2 -I.
-BISON = bison -d
-FLEX = flex
-INSTALL = install
-RM = rm -f
-
-All: fbset
-
-
-fbset: fbset.o modes.tab.o lex.yy.o
-
-fbset.o: fbset.c fbset.h fb.h
-modes.tab.o: modes.tab.c fbset.h fb.h
-lex.yy.o: lex.yy.c fbset.h modes.tab.h
-
-lex.yy.c: modes.l
- $(FLEX) modes.l
-
-modes.tab.c: modes.y
- $(BISON) modes.y
-
-install: fbset
- if [ -f /sbin/fbset ]; then rm /sbin/fbset; fi
- $(INSTALL) fbset /usr/sbin
- $(INSTALL) fbset.8 /usr/man/man8
- $(INSTALL) fb.modes.5 /usr/man/man5
- if [ ! -c /dev/fb0 ]; then mknod /dev/fb0 c 29 0; fi
- if [ ! -c /dev/fb1 ]; then mknod /dev/fb1 c 29 32; fi
- if [ ! -c /dev/fb2 ]; then mknod /dev/fb2 c 29 64; fi
- if [ ! -c /dev/fb3 ]; then mknod /dev/fb3 c 29 96; fi
- if [ ! -c /dev/fb4 ]; then mknod /dev/fb4 c 29 128; fi
- if [ ! -c /dev/fb5 ]; then mknod /dev/fb5 c 29 160; fi
- if [ ! -c /dev/fb6 ]; then mknod /dev/fb6 c 29 192; fi
- if [ ! -c /dev/fb7 ]; then mknod /dev/fb7 c 29 224; fi
+srcdir = .
+
+CC = gcc
+CFLAGS = -Wall -O2
+BISON = bison -d
+FLEX = flex
+INSTALL = install
+INSTALL_PROGRAM = $(INSTALL) -m 755
+INSTALL_DATA = $(INSTALL) -m 644
+RM = rm -f
+
+all: fbset con2fbmap
+
+fbset: fbset.o modes.tab.o lex.yy.o
+
+fbset.o: fbset.c fbset.h fb.h
+modes.tab.o: modes.tab.c fbset.h fb.h
+lex.yy.o: lex.yy.c fbset.h modes.tab.h
+
+lex.yy.c: modes.l
+ $(FLEX) $<
+
+modes.tab.c modes.tab.h: modes.y
+ $(BISON) $<
+
+con2fbmap: con2fbmap.o
+con2fbmap.o: con2fbmap.c
+
+install: fbset
+ $(INSTALL) -d $(DESTDIR)/etc
+ $(INSTALL) -d $(DESTDIR)/bin
+ $(INSTALL) -d $(DESTDIR)/usr/share/man/man1
+ $(INSTALL) -d $(DESTDIR)/usr/share/man/man5
+ $(INSTALL_DATA) $(srcdir)/etc/fb.modes.ATI $(DESTDIR)/etc/fb.modes
+ $(INSTALL_DATA) $(srcdir)/fb.modes.5 $(DESTDIR)/usr/share/man/man5
+ $(INSTALL_PROGRAM) fbset $(DESTDIR)/bin
+ $(INSTALL_DATA) $(srcdir)/fbset.8 $(DESTDIR)/usr/share/man/man1/fbset.1
+ $(INSTALL_PROGRAM) $(srcdir)/modeline2fb $(DESTDIR)/bin
+ $(INSTALL_DATA) $(srcdir)/modeline2fb.1 $(DESTDIR)/usr/share/man/man1
+ $(INSTALL_PROGRAM) con2fbmap $(DESTDIR)/bin
+ $(INSTALL_DATA) $(srcdir)/con2fbmap.1 $(DESTDIR)/usr/share/man/man1
+
+install-devices:
+ if [ ! -c /dev/fb0 ]; then mknod $(DESTDIR)/dev/fb0 c 29 0; fi
+ if [ ! -c /dev/fb1 ]; then mknod $(DESTDIR)/dev/fb1 c 29 32; fi
+ if [ ! -c /dev/fb2 ]; then mknod $(DESTDIR)/dev/fb2 c 29 64; fi
+ if [ ! -c /dev/fb3 ]; then mknod $(DESTDIR)/dev/fb3 c 29 96; fi
+ if [ ! -c /dev/fb4 ]; then mknod $(DESTDIR)/dev/fb4 c 29 128; fi
+ if [ ! -c /dev/fb5 ]; then mknod $(DESTDIR)/dev/fb5 c 29 160; fi
+ if [ ! -c /dev/fb6 ]; then mknod $(DESTDIR)/dev/fb6 c 29 192; fi
+ if [ ! -c /dev/fb7 ]; then mknod $(DESTDIR)/dev/fb7 c 29 224; fi
clean:
- $(RM) *.o fbset lex.yy.c modes.tab.c modes.tab.h
+ $(RM) *.o fbset con2fbmap lex.yy.c modes.tab.c modes.tab.h
+

View File

@ -0,0 +1,243 @@
Status: sent-upstream
# Latest updates from 2010-04-12 for fbset.8 not sent.
---
fb.modes.5 | 38 +++++++++++++++++++++++++++++++++++++-
fbset.8 | 41 ++++++++++++++++++++++++++++++-----------
modeline2fb.1 | 40 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 107 insertions(+), 12 deletions(-)
--- a/fb.modes.5
+++ b/fb.modes.5
@@ -1,4 +1,4 @@
-.TH fb.modes 8 "Aug 1996" local "Linux frame buffer utils"
+.TH fb.modes 5 2003-08-07 2.1 "Linux frame buffer utils"
.SH NAME
fb.modes \- frame buffer modes file
.SH DESCRIPTION
@@ -27,6 +27,9 @@ timings
.br
.B options
.RI < value >
+.br
+.B rgba
+.RI < red , green , blue , alpha >
.RE
endmode
.SH OPTIONS
@@ -74,6 +77,22 @@ horizontal sync length (in pixels)
vertical sync length (in pixel lines)
.RE
.PP
+rgba options (only valid with truecolor):
+.RS
+.TP
+.I red
+red color bitfields (in length or length/offset)
+.TP
+.I green
+green color bitfields (in length or length/offset)
+.TP
+.I blue
+blue color bitfields (in length or length/offset)
+.TP
+.I alpha
+alpha color bitfields (in length or length/offset)
+.RE
+.PP
other options:
.RS
the first value of this options is the default
@@ -87,6 +106,14 @@ the vertical sync polarity
.IR \fBcsync "\ {" low | high }
the composite sync polarity
.TP
+.IR \fBgsync "\ {" low | high }
+the sync on green polarity
+.TP
+.IR \fBbcast "\ {" false | true }
+enable or disable broadcast modes. If enabled the frame buffer generates
+the exact timings fot several broadcast modes (e.g. PAL or NTSC). Note that
+this option may not be supported by every frame buffer
+.TP
.IR \fBextsync "\ {" false | true }
enable or disable external resync. If enabled the sync timings are not
generated by the frame buffer device and must be provided externally
@@ -106,6 +133,15 @@ and this way the horizontal frequency ca
same resolution can be displayed on different monitors, even if the
horizontal frequency specification differs. Note that this option may not be
supported by every frame buffer device
+.TP
+.IR \fBnostd "\ <" number >
+select nonstandard video mode
+.TP
+.IR \fBaccel "\ {" false | true }
+enable or disable hardware text acceleration
+.TP
+.IR \fBgrayscale "\ {" false | true }
+enable or disable graylevels instead of colors
.RE
.SH INTERNALS
Generally a frame buffer display is organized as follows:
--- a/fbset.8
+++ b/fbset.8
@@ -1,4 +1,4 @@
-.TH fbset 8 "July 1998" local "Linux frame buffer utils"
+.TH fbset 1 2010-04-12 2.1 "Linux frame buffer utils"
.SH NAME
fbset \- show and modify frame buffer device settings
.SH SYNOPSIS
@@ -6,8 +6,6 @@ fbset \- show and modify frame buffer de
.RI [ options ]
.RI [ mode ]
.SH DESCRIPTION
-.B This documentation is out of date!!
-.PP
.B fbset
is a system utility to show or change the settings of the frame buffer
device. The frame buffer device provides a simple and unique interface to
@@ -36,10 +36,8 @@ General options:
.BR \-\-help ",\ " \-h
display an usage information
.TP
-.BR \-\-now ",\ " \-n
-change the video mode immediately. If no frame buffer device is given via
-.B \-fb
-, then this option is activated by default
+.BR \-\-test
+don't change, just test whether the mode is valid
.TP
.BR \-\-show ",\ " \-s
display the video mode settings. This is default if no further option or
@@ -66,14 +64,16 @@ display the timing information as it's n
Frame buffer device nodes:
.RS
.TP
+.BR \-\-all ",\ " \-a
+change all virtual consoles on this device
+.TP
.BR \-fb "\ <" \fIdevice >
.I device
gives the frame buffer device node. If no device via
.B \-fb
is given,
.I /dev/fb0
is used
-.TP
.RE
.PP
Video mode database:
@@ -86,6 +88,13 @@ see also
.BR fb.modes (5)
.RE
.PP
+Display bitfield colors:
+.RS
+.TP
+.BR \-rgba "\ <" \fIred , \fIgreen , \fIblue , \fIalpha >
+each in length or length/offset color format
+.RE
+.PP
Display geometry:
.RS
.TP
@@ -104,6 +113,10 @@ set virtual vertical resolution (in pixe
.BR \-depth "\ <" \fIvalue >
set display depth (in bits per pixel)
.TP
+.TP
+.BR \-nonstd "\ <" \fIvalue >
+select nonstandard video mode
+.TP
.BR \-\-geometry ",\ " \-g "\ ..."
set all geometry parameters at once in the order
.RI < xres >
@@ -154,13 +167,16 @@ set all timing parameters at once in the
.RI < hslen >
.RI < vslen >,
e.g.
-.B \-g
+.B \-t
.I 35242 64 96 35 12 112 2
.RE
.PP
Display flags:
.RS
.TP
+.IR \fB\-accel "\ {" false | true }
+set hardware text acceleration enable
+.TP
.IR \fB\-hsync "\ {" low | high }
set the horizontal sync polarity
.TP
@@ -170,6 +186,9 @@ set the vertical sync polarity
.IR \fB\-csync "\ {" low | high }
set the composite sync polarity
.TP
+.IR \fB\-gsync "\ {" false | true }
+set synch on green
+.TP
.IR \fB\-extsync "\ {" false | true }
enable or disable external resync. If enabled the sync timings are not
generated by the frame buffer device and must be provided externally
@@ -217,7 +236,7 @@ insert the following in rc.local:
.B fbset
-fb
.I /dev/fb0
-vga
+640x480\-60
.sp
.RE
and make the used frame buffer device known to
@@ -232,7 +251,7 @@ and make the used frame buffer device kn
.br
.I /etc/fb.modes
.SH SEE ALSO
-.BR fb.modes "(5), " fbdev (4)
+.BR fb.modes "(5), " fbdev "(4), " /usr/share/doc/fbset/FAQ.gz
.SH AUTHORS
.TP
Geert Uytterhoeven <Geert.Uytterhoeven@cs.kuleuven.ac.be>
--- /dev/null
+++ b/modeline2fb.1
@@ -0,0 +1,40 @@
+.TH modeline2fb 1 2006-01-18 2.1 "Linux frame buffer utils"
+.SH NAME
+modeline2fb \- simple modeline to fb.modes translator
+.SH SYNOPSIS
+.B modeline2fb
+[\fIOPTION\fR] [\fIFILES\fR]
+.SH DESCRIPTION
+.PP
+.I Modeline2fb
+is a simple Perl script that converts XF86Config-style modelines to options
+suitable for a fb.modes file.
+.PP
+Note that only one option can be successfully enabled at any particular time.
+.SH OPTIONS
+.TP
+\fB\-d\fR, \fB\-\-depth\fR \fIdepth\fR
+Use the given display depth (default is 8).
+.TP
+\fB\-h\fR \fB\-\-help\fR
+Print out a help screen and exit.
+.SH ADVANCED OPTIONS
+.TP
+\fB\-r\fR \fB\-\-rounding\fR \fIdiv\fR
+Sets the vxres divisor (default is 128).
+.TP
+\fB\-x\fR \fB\-\-vxres\fR \fIX,X,X,...\fR
+Sets extra vxres values.
+.PP
+[\fIFILES\fR] refers to one or more XF86Config files. Note that all modelines
+must be in single-line format. If no files are given on the command line,
+this program reads from standard in. This program will also write to
+standard out.
+.SH EXAMPLE
+modeline2fb \-d 16 /etc/X11/XF86Config
+.SH "SEE ALSO"
+.BR fb.modes(5),
+.BR XF86Config(5)
+.SH AUTHOR
+This manual page is a quick write-up for Debian done by Kevin Kreamer
+<kkreamer@etherhogz.org>.

View File

@ -0,0 +1,231 @@
>From cb00e6fade39afdb2adb0727647e9c97ce0fd02c Mon Sep 17 00:00:00 2001
From: David Kozub <zub@linux.fjfi.cvut.cz>
Date: Thu, 7 Jun 2012 15:46:16 +0200
Subject: [PATCH] add support for custom sync flags
---
fb.modes.5 | 3 +++
fbset.8 | 4 ++++
fbset.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
fbset.h | 3 +++
modes.l | 3 ++-
modes.y | 10 +++++++++-
6 files changed, 66 insertions(+), 2 deletions(-)
--- a/fb.modes.5
+++ b/fb.modes.5
@@ -120,6 +120,9 @@ generated by the frame buffer device and
instead. Note that this option may not be supported by every frame buffer
device
.TP
+.IR \fBsync "\ <" number >
+custom sync flags (frame buffer driver dependent)
+.TP
.IR \fBlaced "\ {" false | true }
enable or disable interlace. If enabled the display will be split in two
frames, each frame contains only even and odd lines respectively. These two
--- a/fbset.8
+++ b/fbset.8
@@ -191,6 +191,10 @@ generated by the frame buffer device and
instead. Note that this option may not be supported by every frame buffer
device
.TP
+.IR \fB\-sync "\ <" \fIvalue >
+set custom sync flags. If specified, this value is bitwise or-ed to the
+other sync flags. This is useful for drivers that use custom sync flags
+.TP
.IR \fB\-bcast "\ {" false | true }
enable or disable broadcast modes. If enabled the frame buffer generates the
exact timings for several broadcast modes (e.g. PAL or NTSC). Note that
--- a/fbset.c
+++ b/fbset.c
@@ -16,6 +16,9 @@
* Brad Midgley <brad@exodus.pht.com>:
* -match
*
+ * David Kozub <zub@linux.fjfi.cvut.cz>:
+ * -sync
+ *
*/
@@ -52,6 +55,12 @@ struct inode;
/*
+ * Mask to zero-out all known sync flags
+ */
+#define FB_CUSTOM_SYNC_MASK ~(FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT| \
+ FB_SYNC_COMP_HIGH_ACT|FB_SYNC_ON_GREEN|FB_SYNC_EXT|FB_SYNC_BROADCAST)
+
+ /*
* Command Line Options
*/
@@ -86,6 +95,7 @@ static const char *Opt_vsync = NULL;
static const char *Opt_csync = NULL;
static const char *Opt_gsync = NULL;
static const char *Opt_extsync = NULL;
+static const char *Opt_sync = NULL;
static const char *Opt_bcast = NULL;
static const char *Opt_laced = NULL;
static const char *Opt_double = NULL;
@@ -123,6 +133,7 @@ static struct {
{ "-csync", &Opt_csync, 1 },
{ "-gsync", &Opt_gsync, 1 },
{ "-extsync", &Opt_extsync, 1 },
+ { "-sync", &Opt_sync, 1 },
{ "-bcast", &Opt_bcast, 1 },
{ "-laced", &Opt_laced, 1 },
{ "-double", &Opt_double, 1 },
@@ -402,6 +413,7 @@ static void ConvertFromVideoMode(const s
var->sync |= FB_SYNC_EXT;
if (vmode->bcast == TRUE)
var->sync |= FB_SYNC_BROADCAST;
+ var->sync |= vmode->sync;
if (vmode->laced == TRUE)
var->vmode = FB_VMODE_INTERLACED;
else if (vmode->dblscan == TRUE)
@@ -445,6 +457,7 @@ static void ConvertToVideoMode(const str
vmode->gsync = var->sync & FB_SYNC_ON_GREEN ? TRUE : FALSE;
vmode->extsync = var->sync & FB_SYNC_EXT ? TRUE : FALSE;
vmode->bcast = var->sync & FB_SYNC_BROADCAST ? TRUE : FALSE;
+ vmode->sync = var->sync & FB_CUSTOM_SYNC_MASK;
vmode->grayscale = var->grayscale;
vmode->laced = FALSE;
vmode->dblscan = FALSE;
@@ -554,6 +567,27 @@ void makeRGBA(struct VideoMode *vmode, c
}
/*
+ * Take known bits from sync and set appropriate flags instead
+ */
+
+void fixCustomSync(struct VideoMode *vmode)
+{
+ if (vmode->sync & FB_SYNC_HOR_HIGH_ACT)
+ vmode->hsync = 1;
+ if (vmode->sync & FB_SYNC_VERT_HIGH_ACT)
+ vmode->vsync = 1;
+ if (vmode->sync & FB_SYNC_COMP_HIGH_ACT)
+ vmode->csync = 1;
+ if (vmode->sync & FB_SYNC_ON_GREEN)
+ vmode->gsync = 1;
+ if (vmode->sync & FB_SYNC_EXT)
+ vmode->extsync =1;
+ if (vmode->sync & FB_SYNC_BROADCAST)
+ vmode->bcast = 1;
+ vmode->sync &= FB_CUSTOM_SYNC_MASK;
+}
+
+ /*
* Find a Video Mode
*/
@@ -617,6 +651,12 @@ static void ModifyVideoMode(struct Video
vmode->extsync = atoboolean(Opt_extsync);
if (Opt_bcast)
vmode->bcast = atoboolean(Opt_bcast);
+ if (Opt_sync)
+ {
+ vmode->sync = strtoul(Opt_sync, NULL, 0);
+ // call this only once all the other sync fields are determined!
+ fixCustomSync(vmode);
+ }
if (Opt_laced)
vmode->laced = atoboolean(Opt_laced);
if (Opt_double)
@@ -693,6 +733,8 @@ static void DisplayVModeInfo(struct Vide
puts(" extsync true");
if (vmode->bcast)
puts(" bcast true");
+ if (vmode->sync)
+ printf(" sync 0x%x\n", vmode->sync);
if (vmode->laced)
puts(" laced true");
if (vmode->dblscan)
@@ -745,6 +787,8 @@ static void DisplayVModeInfo(struct Vide
puts(" # Warning: XFree86 doesn't support extsync\n");
if (vmode->bcast)
printf(" \"bcast\"");
+ if (vmode->sync)
+ puts(" # Warning: XFree86 doesn't support custom sync values\n");
if (vmode->accel_flags)
puts(" # Warning: XFree86 doesn't support accel\n");
if (vmode->grayscale)
@@ -931,6 +975,7 @@ static void Usage(void)
" -csync <value> : composite sync polarity (low or high)\n"
" -gsync <value> : synch on green (false or true)\n"
" -extsync <value> : external sync enable (false or true)\n"
+ " -sync <value> : custom (driver specific) sync value\n"
" -bcast <value> : broadcast enable (false or true)\n"
" -laced <value> : interlace enable (false or true)\n"
" -double <value> : doublescan enable (false or true)\n"
--- a/fbset.h
+++ b/fbset.h
@@ -64,6 +64,8 @@ struct VideoMode {
unsigned laced : 1;
unsigned dblscan : 1;
unsigned grayscale : 1;
+ /* extra (fb driver specific) sync bits */
+ __u32 sync;
/* scanrates */
double drate;
double hrate;
@@ -80,3 +82,4 @@ extern int yyparse(void);
extern void Die(const char *fmt, ...) __attribute__ ((noreturn));
extern void AddVideoMode(const struct VideoMode *vmode);
extern void makeRGBA(struct VideoMode *vmode, const char* opt);
+extern void fixCustomSync(struct VideoMode *vmode);
--- a/modes.l
+++ b/modes.l
@@ -38,6 +38,7 @@ static struct keyword keywords[] = {
{ "csync", CSYNC, 0 },
{ "gsync", GSYNC, 0 },
{ "extsync", EXTSYNC, 0 },
+ { "sync", SYNC, 0 },
{ "bcast", BCAST, 0 },
{ "laced", LACED, 0 },
{ "double", DOUBLE, 0 },
@@ -98,7 +99,7 @@ static const char *CopyString(const char
%}
keyword [a-zA-Z][a-zA-Z0-9]*
-number [0-9]*
+number (0x)?[0-9]*
colors [0-9/,]*
string \"[^\"\n]*\"
comment \#([^\n]*)
--- a/modes.y
+++ b/modes.y
@@ -40,7 +40,7 @@ static void ClearVideoMode(void)
%start file
-%token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC BCAST LACED DOUBLE
+%token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC SYNC BCAST LACED DOUBLE
RGBA NONSTD ACCEL GRAYSCALE
ENDMODE POLARITY BOOLEAN STRING NUMBER COLORS
@@ -91,6 +91,7 @@ options : /* empty */
| options csync
| options gsync
| options extsync
+ | options sync
| options bcast
| options laced
| options double
@@ -130,6 +131,13 @@ extsync : EXTSYNC BOOLEAN
}
;
+sync: SYNC NUMBER
+ {
+ VideoMode.sync = $2;
+ fixCustomSync(&VideoMode);
+ }
+ ;
+
bcast : BCAST BOOLEAN
{
VideoMode.bcast = $2;

View File

@ -0,0 +1,10 @@
01_kernel_fb.h.patch
02_fb_modes.patch
03_con2fbmap.patch
04_fbset_warnings.patch
06_fbset_usage.patch
07_new_accels.patch
08_rgba_keyword.patch
10_build.patch
11_manpages.patch
add-support-for-custom-sync-flags.patch

30
srcpkgs/fbset/template Normal file
View File

@ -0,0 +1,30 @@
# Template file for 'fbset'
pkgname=fbset
version=2.1
revision=1
patch_args="-Np1"
short_desc="Framebuffer device maintenance program"
maintainer="Juan RP <xtraeme@gmail.com>"
license="GPL-2"
homepage="http://users.telenet.be/geertu/Linux/fbdev/"
distfiles="http://ftp.de.debian.org/debian/pool/main/f/fbset/fbset_${version}.orig.tar.gz"
checksum=517fa062d7b2d367f931a1c6ebb2bef84907077f0ce3f0c899e34490bbea9338
hostmakedepends="flex"
makedepends="libfl-devel"
do_build() {
sed -e 's,$(DESTDIR)/bin,$(DESTDIR)/usr/bin,g' -i Makefile
make CC=$CC CFLAGS="$CFLAGS" ${makejobs}
}
do_install() {
make DESTDIR=$DESTDIR PREFIX=/usr install
}
fbset_package() {
conf_files="/etc/fb.modes"
pkg_install() {
vmove all
}
}