summaryrefslogtreecommitdiffstats
path: root/TOOLS/TVout/fbset/modeline2fb
diff options
context:
space:
mode:
Diffstat (limited to 'TOOLS/TVout/fbset/modeline2fb')
-rwxr-xr-xTOOLS/TVout/fbset/modeline2fb150
1 files changed, 0 insertions, 150 deletions
diff --git a/TOOLS/TVout/fbset/modeline2fb b/TOOLS/TVout/fbset/modeline2fb
deleted file mode 100755
index 3a227f558c..0000000000
--- a/TOOLS/TVout/fbset/modeline2fb
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/perl
-
-# Simple modeline-to-fb.modes translator
-# (c) 1998 by Patrick Reynolds
-# distributed under the GNU General Public License
-
-# mapping of modeline options to fb.modes options
-%options_map = (
- "-hsync" => "hsync low",
- "-vsync" => "vsync low",
- "+hsync" => "hsync high",
- "+vsync" => "vsync high",
- "interlace" => "laced true",
- "doublescan" => "double true"
-);
-
-@possible_vxres = ( 640, 800, 1024, 1152, 1280, 1600, 1920, 2048 );
-
-# default settings (override with -d and -r)
-$depth = 8;
-$rounding = 128;
-
-# parse options
-while ($ARGV[0] =~ /^-/) {
- $arg = shift;
- if ($arg eq "-d" || $arg eq "--depth") {
- if (!($arg = shift @ARGV)) {
- usage("-d requires an argument");
- }
- $depth = $arg;
- }
- elsif ($arg eq "-r" || $arg eq "--rounding") {
- if (!($arg = shift @ARGV)) {
- usage("-r requires an argument");
- }
- $rounding = $arg;
- }
- elsif ($arg eq "-x" || $arg eq "--vxres") {
- if (!($arg = shift @ARGV)) {
- usage("-x requires an argument");
- }
- push @possible_vxres, (split/,/,$arg);
- @possible_vxres = sort { $a <=> $b } @possible_vxres;
- print "new vxres: " . (join ",", @possible_vxres) . "\n";
- }
- elsif ($arg eq "-h" || $arg eq "--help") {
- usage();
- }
- else {
- usage("unknown option: $arg");
- }
-}
-
-# find out how much video memory is available
-open(FBSET, "fbset -i|") || die "could not detect available video memory";
-while (<FBSET>) {
- if (/Size\s*:\s*(\d+)/) {
- $size = $1;
- last;
- }
-}
-if (!$size) { die "could not detect available video memory"; }
-
-# huge kludge (hey, that rhymes!) ...
-# subtract 16384 from the available memory $size
-# why? the default 640x480 mode uses all but 16384, and when I set it
-# to use more than that, it oopses (!). So... for safety's sake, and
-# because you probably don't use those 15-25 lines anyway...
-$size -= 16384;
-
-print "# modes.fb - video mode descriptions for fbset
-#
-# See fbset(8) and fb.modes(5) for more information
-
-";
-
-$flag = 0;
-# read all XF86Config files
-while(<>) {
- chomp;
- next if !(($name, $clock, $xres, $xsyncstart, $xsyncend, $xfres,
- $yres, $ysyncstart, $ysyncend, $yfres, $extra) =
- /^\s*modeline\s+"([^"]+)"\s+([0-9.]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*(.*)$/i);
- $flag = 1;
-
- # timing transformations, as described in the fb HOWTO
- $pixtime = int(1000000/$clock);
- $left = $xfres - $xsyncend;
- $right = $xsyncstart - $xres;
- $hsynclen = $xsyncend - $xsyncstart;
- $top = $yfres - $ysyncend;
- $bottom = $ysyncstart - $yres;
- $vsynclen = $ysyncend - $ysyncstart;
-
- # pick a virtual X and Y resolution
- $vxres = get_vxres($xres);
- if ($vxres < 0) {
- print STDERR "Could not guess a good virtual resolution for mode $name.\n";
- print STDERR "Use the advanced options --rounding and --vxres.\n";
- next;
- }
- $vyres = int($size/$vxres);
-
- # print out our entry
- print "mode \"$name\"\n";
- print " geometry $xres $yres $vxres $vyres $depth\n";
- print " timings $pixtime $left $right $top $bottom $hsynclen $vsynclen\n";
-
- # handle extra options at the end of the modeline
- $extra =~ tr/A-Z/a-z/;
- @options = split/\s+/,$extra;
- foreach (@options) {
- if ($options_map{$_}) {
- print " $options_map{$_}\n";
- }
- else {
- print " # unknown option: $_\n";
- }
- }
- print "endmode\n\n";
-}
-
-if (!$flag) {
- print STDERR "No modelines found.\n";
- print STDERR "Make sure the file you specified was an XF86Config file and\n";
- print STDERR "used the single-line Modeline format.\n\n";
- print STDERR "Use \"$0 --help\" for help.\n";
-}
-
-sub get_vxres {
- foreach (@possible_vxres) {
- return $_ if ($_ >= $_[0] && ($_ % $rounding) == 0);
- }
- return -1;
-}
-
-sub usage {
- print STDERR "$_[0]\n" if ($_[0]);
- print STDERR "$0 [OPTION] [FILES]\n\n";
- print STDERR " -d,--depth depth use a certain display depth (default is 8)\n";
- print STDERR " -h,--help what you see here\n\n";
- print STDERR "Advanced options:\n";
- print STDERR " -r,--rounding div vxres divisor (default is 128)\n";
- print STDERR " -x,--vxres X,X,X,... extra possible vxres values\n\n";
- print STDERR "[FILES] refers to one or more XF86Config files. Note that\n";
- print STDERR "all modelines must be in single-line format.\n\n";
- print STDERR "Example:\n";
- print STDERR " $0 -d 16 /etc/X11/XF86Config\n";
- exit 0;
-}