diff --git a/sys/dev/videomode/Makefile.videomode b/sys/dev/videomode/Makefile.videomode new file mode 100644 index 000000000000..0b4069333cd6 --- /dev/null +++ b/sys/dev/videomode/Makefile.videomode @@ -0,0 +1,18 @@ +# $NetBSD: Makefile.videomode,v 1.1 2006/03/04 02:34:27 gdamore Exp $ +# +# As per tron@NetBSD.org, the proper procedure is +# +# 1.) Change "src/sys/dev/videomode/modelines". +# 2.) Commit "src/sys/dev/videomode/modelines". +# 3.) Execute "make -f Makefile.videomode" in "src/sys/dev/videomode". +# 4.) Commit "src/sys/dev/videomode/videomode.c" + + +AWK= awk + +videomode.c: modelines modelines2c.awk + /bin/rm -f videomode.c + ${AWK} -f modelines2c.awk modelines > videomode.c + +test: videomode.c videomode.h test.c + ${CC} -I ../../ -o test test.c videomode.c diff --git a/sys/dev/videomode/files.videomode b/sys/dev/videomode/files.videomode new file mode 100644 index 000000000000..4983071bc06a --- /dev/null +++ b/sys/dev/videomode/files.videomode @@ -0,0 +1,5 @@ +# $NetBSD: files.videomode,v 1.1 2006/03/04 02:34:27 gdamore Exp $ + +defpseudo videomode + +file dev/videomode/videmode.c videomode diff --git a/sys/dev/videomode/modelines b/sys/dev/videomode/modelines new file mode 100644 index 000000000000..5816ea77842c --- /dev/null +++ b/sys/dev/videomode/modelines @@ -0,0 +1,151 @@ +// $NetBSD: modelines,v 1.1 2006/03/04 02:34:27 gdamore Exp $ +// +// This file was imported from XFree86, and is made of the contents of both +// the vesamodes and extramodes files. As a result these should correspond +// to the same default modes compiled into XFree86. +// +// Default modes distilled from +// "VESA and Industry Standards and Guide for Computer Display Monitor +// Timing", version 1.0, revision 0.8, adopted September 17, 1998. +// +// $XFree86: xc/programs/Xserver/hw/xfree86/etc/vesamodes,v 1.3 1999/11/16 03:28:03 tsi Exp $ +// $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $ +// + + +# 640x350 @ 85Hz (VESA) hsync: 37.9kHz +ModeLine "640x350" 31.5 640 672 736 832 350 382 385 445 +hsync -vsync + +# 640x400 @ 85Hz (VESA) hsync: 37.9kHz +ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsync + +# 720x400 @ 85Hz (VESA) hsync: 37.9kHz +ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync + +# 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz +ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync + +# 640x480 @ 72Hz (VESA) hsync: 37.9kHz +ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync + +# 640x480 @ 75Hz (VESA) hsync: 37.5kHz +ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync + +# 640x480 @ 85Hz (VESA) hsync: 43.3kHz +ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync + +# 800x600 @ 56Hz (VESA) hsync: 35.2kHz +ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync + +# 800x600 @ 60Hz (VESA) hsync: 37.9kHz +ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync + +# 800x600 @ 72Hz (VESA) hsync: 48.1kHz +ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync + +# 800x600 @ 75Hz (VESA) hsync: 46.9kHz +ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync + +# 800x600 @ 85Hz (VESA) hsync: 53.7kHz +ModeLine "800x600" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync + +# 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz +ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace + +# 1024x768 @ 60Hz (VESA) hsync: 48.4kHz +ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync + +# 1024x768 @ 70Hz (VESA) hsync: 56.5kHz +ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync + +# 1024x768 @ 75Hz (VESA) hsync: 60.0kHz +ModeLine "1024x768" 78.8 1024 1040 1136 1312 768 769 772 800 +hsync +vsync + +# 1024x768 @ 85Hz (VESA) hsync: 68.7kHz +ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync + +# 1152x864 @ 75Hz (VESA) hsync: 67.5kHz +ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync + +# 1280x960 @ 60Hz (VESA) hsync: 60.0kHz +ModeLine "1280x960" 108.0 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync + +# 1280x960 @ 85Hz (VESA) hsync: 85.9kHz +ModeLine "1280x960" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync + +# 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz +ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync + +# 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz +ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync + +# 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz +ModeLine "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync + +# 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz +ModeLine "1600x1200" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz +ModeLine "1600x1200" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz +ModeLine "1600x1200" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz +ModeLine "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz +ModeLine "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1792x1344 @ 60Hz (VESA) hsync: 83.6kHz +ModeLine "1792x1344" 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync + +# 1792x1344 @ 75Hz (VESA) hsync: 106.3kHz +ModeLine "1792x1344" 261.0 1792 1888 2104 2456 1344 1345 1348 1417 -hsync +vsync + +# 1856x1392 @ 60Hz (VESA) hsync: 86.3kHz +ModeLine "1856x1392" 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync + +# 1856x1392 @ 75Hz (VESA) hsync: 112.5kHz +ModeLine "1856x1392" 288.0 1856 1984 2208 2560 1392 1393 1396 1500 -hsync +vsync + +# 1920x1440 @ 60Hz (VESA) hsync: 90.0kHz +ModeLine "1920x1440" 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync + +# 1920x1440 @ 75Hz (VESA) hsync: 112.5kHz +ModeLine "1920x1440" 297.0 1920 2064 2288 2640 1440 1441 1444 1500 -hsync +vsync + + +// +// Extra modes to include as default modes in the X server. +// +// $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $ +// + +# 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz +ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync + +# 1152x768 @ 54.8Hz (Titanium PowerBook) hsync: 44.2kHz +ModeLine "1152x768" 64.995 1152 1178 1314 1472 768 771 777 806 +hsync +vsync + +# 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz +ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync + +# 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz +ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync + +# 1600x1024 @ 60Hz (SGI 1600SW) hsync: 64.0kHz +Modeline "1600x1024" 106.910 1600 1620 1640 1670 1024 1027 1030 1067 -hsync -vsync + +# 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz +Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync + +# 2048x1536 @ 60Hz (VESA GTF) hsync: 95.3kHz +Modeline "2048x1536" 266.95 2048 2200 2424 2800 1536 1537 1540 1589 -hsync +vsync + +# 2048x1536 @ 75Hz (VESA GTF) hsync: 120.2kHz +Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vsync + +# 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz +Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync + diff --git a/sys/dev/videomode/modelines2c.awk b/sys/dev/videomode/modelines2c.awk new file mode 100644 index 000000000000..c796e49bf212 --- /dev/null +++ b/sys/dev/videomode/modelines2c.awk @@ -0,0 +1,143 @@ +#! /usr/bin/awk -f +# $NetBSD: modelines2c.awk,v 1.1 2006/03/04 02:34:27 gdamore Exp $ +# +# Copyright (c) 2006 Itronix Inc. +# All rights reserved. +# +# Written by Garrett D'Amore for Itronix Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of Itronix Inc. may not be used to endorse +# or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY ITRONIX INC. ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ITRONIX INC. BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +BEGIN { + nmodes = 0; +} + +NR == 1 { + split($0,v,"$"); + + VERSION=v[2]; + + printf("/*\t$NetBSD" "$\t*/\n\n"); + printf("/*\n") ; + printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n"); + printf(" *\n"); + printf(" * generated from:\n"); + printf(" *\t%s\n", VERSION); + printf(" */\n"); + + printf("#include \n\n"); + + printf("/*\n"); + printf(" * These macros help the modelines below fit on one line.\n"); + printf(" */\n"); + printf("#define HP VID_PHSYNC\n"); + printf("#define HN VID_NHSYNC\n"); + printf("#define VP VID_PVSYNC\n"); + printf("#define VN VID_NVSYNC\n"); + printf("#define I VID_INTERLACE\n"); + printf("#define DS VID_DBLSCAN\n"); + printf("\n"); + + printf("#define M(nm,hr,vr,clk,hs,he,ht,vs,ve,vt,f) \\\n"); + printf("\t{ clk, hr, hs, he, ht, vr, vs, ve, vt, f, nm } \n\n"); + + printf("const struct videomode videomode_list[] = {\n"); + + next +} + +(/^ModeLine/) { + dotclock = $3; + + hdisplay = $4; + hsyncstart = $5; + hsyncend = $6; + htotal = $7; + + vdisplay = $8; + vsyncstart = $9; + vsyncend = $10; + vtotal = $11; + + macro = "MODE"; + iflag = ""; + iflags = ""; + hflags = "HP"; + vflags = "VP"; + + if ($12 ~ "^-") + hflags = "HN"; + + if ($13 ~ "^-") + vflags = "VN"; + + if ($14 ~ "[Ii][Nn][Tt][Ee][Rr][Ll][Aa][Cc][Ee]") { + iflag = "i"; + iflags = "|I"; + } + + # why the additional .1 to vrefresh? well it seems that awk likes to + # make some "rounding errors", and this will compensate + + hrefresh= (dotclock * 1000000) / htotal; + vrefresh= int((hrefresh / vtotal) + .1); + + modestr = sprintf("%dx%dx%d%s", hdisplay, vdisplay, vrefresh, iflag); + +# printf("/* %dx%d%s refresh %dHz, hsync %d KHz */\n", +# hdisplay, vdisplay, iflag, vrefresh, hrefresh/1000); + printf("M(\"%s\",%d,%d,%d,%d,%d,%d,%d,%d,%d,%s),\n", + modestr, + hdisplay, vdisplay, dotclock * 1000, + hsyncstart, hsyncend, htotal, + vsyncstart, vsyncend, vtotal, hflags "|" vflags iflags); + + modestr = sprintf("%dx%dx%d%s", + hdisplay/2 , vdisplay/2, vrefresh, iflag); + + dmodes[nmodes]=sprintf("M(\"%s\",%d,%d,%d,%d,%d,%d,%d,%d,%d,%s),", + modestr, + hdisplay/2, vdisplay/2, dotclock * 1000 / 2, + hsyncstart/2, hsyncend/2, htotal/2, + vsyncstart/2, vsyncend/2, vtotal/2, + hflags "|" vflags "|DS" iflags); + + nmodes = nmodes + 1 + +} + +END { + + printf("\n/* Derived Double Scan Modes */\n\n"); + + for ( i = 0; i < nmodes; i++ ) + { + print dmodes[i]; + } + + printf("};\n\n"); + printf("const int videomode_count = %d;\n", nmodes); +} diff --git a/sys/dev/videomode/videomode.c b/sys/dev/videomode/videomode.c new file mode 100644 index 000000000000..890adba9ae0c --- /dev/null +++ b/sys/dev/videomode/videomode.c @@ -0,0 +1,106 @@ +/* $NetBSD: videomode.c,v 1.1 2006/03/04 02:34:27 gdamore Exp $ */ + +/* + * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. + * + * generated from: + * NetBSD + */ +#include + +/* + * These macros help the modelines below fit on one line. + */ +#define HP VID_PHSYNC +#define HN VID_NHSYNC +#define VP VID_PVSYNC +#define VN VID_NVSYNC +#define I VID_INTERLACE +#define DS VID_DBLSCAN + +#define M(nm,hr,vr,clk,hs,he,ht,vs,ve,vt,f) \ + { clk, hr, hs, he, ht, vr, vs, ve, vt, f, nm } + +const struct videomode videomode_list[] = { +M("640x350x85",640,350,31500,672,736,832,382,385,445,HP|VN), +M("640x400x85",640,400,31500,672,736,832,401,404,445,HN|VP), +M("720x400x85",720,400,35500,756,828,936,401,404,446,HN|VP), +M("640x480x60",640,480,25200,656,752,800,490,492,525,HN|VN), +M("640x480x72",640,480,31500,664,704,832,489,491,520,HN|VN), +M("640x480x75",640,480,31500,656,720,840,481,484,500,HN|VN), +M("640x480x85",640,480,36000,696,752,832,481,484,509,HN|VN), +M("800x600x56",800,600,36000,824,896,1024,601,603,625,HP|VP), +M("800x600x60",800,600,40000,840,968,1056,601,605,628,HP|VP), +M("800x600x72",800,600,50000,856,976,1040,637,643,666,HP|VP), +M("800x600x75",800,600,49500,816,896,1056,601,604,625,HP|VP), +M("800x600x85",800,600,56300,832,896,1048,601,604,631,HP|VP), +M("1024x768x43i",1024,768,44900,1032,1208,1264,768,776,817,HP|VP|I), +M("1024x768x60",1024,768,65000,1048,1184,1344,771,777,806,HN|VN), +M("1024x768x70",1024,768,75000,1048,1184,1328,771,777,806,HN|VN), +M("1024x768x75",1024,768,78800,1040,1136,1312,769,772,800,HP|VP), +M("1024x768x85",1024,768,94500,1072,1168,1376,769,772,808,HP|VP), +M("1152x864x75",1152,864,108000,1216,1344,1600,865,868,900,HP|VP), +M("1280x960x60",1280,960,108000,1376,1488,1800,961,964,1000,HP|VP), +M("1280x960x85",1280,960,148500,1344,1504,1728,961,964,1011,HP|VP), +M("1280x1024x60",1280,1024,108000,1328,1440,1688,1025,1028,1066,HP|VP), +M("1280x1024x75",1280,1024,135000,1296,1440,1688,1025,1028,1066,HP|VP), +M("1280x1024x85",1280,1024,157500,1344,1504,1728,1025,1028,1072,HP|VP), +M("1600x1200x60",1600,1200,162000,1664,1856,2160,1201,1204,1250,HP|VP), +M("1600x1200x65",1600,1200,175500,1664,1856,2160,1201,1204,1250,HP|VP), +M("1600x1200x70",1600,1200,189000,1664,1856,2160,1201,1204,1250,HP|VP), +M("1600x1200x75",1600,1200,202500,1664,1856,2160,1201,1204,1250,HP|VP), +M("1600x1200x85",1600,1200,229500,1664,1856,2160,1201,1204,1250,HP|VP), +M("1792x1344x60",1792,1344,204800,1920,2120,2448,1345,1348,1394,HN|VP), +M("1792x1344x75",1792,1344,261000,1888,2104,2456,1345,1348,1417,HN|VP), +M("1856x1392x60",1856,1392,218300,1952,2176,2528,1393,1396,1439,HN|VP), +M("1856x1392x75",1856,1392,288000,1984,2208,2560,1393,1396,1500,HN|VP), +M("1920x1440x60",1920,1440,234000,2048,2256,2600,1441,1444,1500,HN|VP), +M("1920x1440x75",1920,1440,297000,2064,2288,2640,1441,1444,1500,HN|VP), +M("832x624x74",832,624,57284,864,928,1152,625,628,667,HN|VN), +M("1152x768x54",1152,768,64995,1178,1314,1472,771,777,806,HP|VP), +M("1400x1050x60",1400,1050,122000,1488,1640,1880,1052,1064,1082,HP|VP), +M("1400x1050x74",1400,1050,155800,1464,1784,1912,1052,1064,1090,HP|VP), + +/* Derived Double Scan Modes */ + +M("320x175x85",320,175,15750,336,368,416,191,192,222,HP|VN|DS), +M("320x200x85",320,200,15750,336,368,416,200,202,222,HN|VP|DS), +M("360x200x85",360,200,17750,378,414,468,200,202,223,HN|VP|DS), +M("320x240x60",320,240,12600,328,376,400,245,246,262,HN|VN|DS), +M("320x240x72",320,240,15750,332,352,416,244,245,260,HN|VN|DS), +M("320x240x75",320,240,15750,328,360,420,240,242,250,HN|VN|DS), +M("320x240x85",320,240,18000,348,376,416,240,242,254,HN|VN|DS), +M("400x300x56",400,300,18000,412,448,512,300,301,312,HP|VP|DS), +M("400x300x60",400,300,20000,420,484,528,300,302,314,HP|VP|DS), +M("400x300x72",400,300,25000,428,488,520,318,321,333,HP|VP|DS), +M("400x300x75",400,300,24750,408,448,528,300,302,312,HP|VP|DS), +M("400x300x85",400,300,28150,416,448,524,300,302,315,HP|VP|DS), +M("512x384x43i",512,384,22450,516,604,632,384,388,408,HP|VP|DS|I), +M("512x384x60",512,384,32500,524,592,672,385,388,403,HN|VN|DS), +M("512x384x70",512,384,37500,524,592,664,385,388,403,HN|VN|DS), +M("512x384x75",512,384,39400,520,568,656,384,386,400,HP|VP|DS), +M("512x384x85",512,384,47250,536,584,688,384,386,404,HP|VP|DS), +M("576x432x75",576,432,54000,608,672,800,432,434,450,HP|VP|DS), +M("640x480x60",640,480,54000,688,744,900,480,482,500,HP|VP|DS), +M("640x480x85",640,480,74250,672,752,864,480,482,505,HP|VP|DS), +M("640x512x60",640,512,54000,664,720,844,512,514,533,HP|VP|DS), +M("640x512x75",640,512,67500,648,720,844,512,514,533,HP|VP|DS), +M("640x512x85",640,512,78750,672,752,864,512,514,536,HP|VP|DS), +M("800x600x60",800,600,81000,832,928,1080,600,602,625,HP|VP|DS), +M("800x600x65",800,600,87750,832,928,1080,600,602,625,HP|VP|DS), +M("800x600x70",800,600,94500,832,928,1080,600,602,625,HP|VP|DS), +M("800x600x75",800,600,101250,832,928,1080,600,602,625,HP|VP|DS), +M("800x600x85",800,600,114750,832,928,1080,600,602,625,HP|VP|DS), +M("896x672x60",896,672,102400,960,1060,1224,672,674,697,HN|VP|DS), +M("896x672x75",896,672,130500,944,1052,1228,672,674,708,HN|VP|DS), +M("928x696x60",928,696,109150,976,1088,1264,696,698,719,HN|VP|DS), +M("928x696x75",928,696,144000,992,1104,1280,696,698,750,HN|VP|DS), +M("960x720x60",960,720,117000,1024,1128,1300,720,722,750,HN|VP|DS), +M("960x720x75",960,720,148500,1032,1144,1320,720,722,750,HN|VP|DS), +M("416x312x74",416,312,28642,432,464,576,312,314,333,HN|VN|DS), +M("576x384x54",576,384,32497,589,657,736,385,388,403,HP|VP|DS), +M("700x525x60",700,525,61000,744,820,940,526,532,541,HP|VP|DS), +M("700x525x74",700,525,77900,732,892,956,526,532,545,HP|VP|DS), +}; + +const int videomode_count = 38; diff --git a/sys/dev/videomode/videomode.h b/sys/dev/videomode/videomode.h new file mode 100644 index 000000000000..1e077eb64313 --- /dev/null +++ b/sys/dev/videomode/videomode.h @@ -0,0 +1,69 @@ +/* $NetBSD: videomode.h,v 1.1 2006/03/04 02:34:27 gdamore Exp $ */ + +/* + * Copyright (c) 2001, 2002 Bang Jun-Young + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _DEV_VIDEOMODE_H +#define _DEV_VIDEOMODE_H + +struct videomode { + int dot_clock; /* Dot clock frequency in kHz. */ + int hdisplay; + int hsync_start; + int hsync_end; + int htotal; + int vdisplay; + int vsync_start; + int vsync_end; + int vtotal; + int flags; /* Video mode flags; see below. */ + const char *name; +}; + +/* + * Video mode flags. + */ + +#define VID_PHSYNC 0x0001 +#define VID_NHSYNC 0x0002 +#define VID_PVSYNC 0x0004 +#define VID_NVSYNC 0x0008 +#define VID_INTERLACE 0x0010 +#define VID_DBLSCAN 0x0020 +#define VID_CSYNC 0x0040 +#define VID_PCSYNC 0x0080 +#define VID_NCSYNC 0x0100 +#define VID_HSKEW 0x0200 +#define VID_BCAST 0x0400 +#define VID_PIXMUX 0x1000 +#define VID_DBLCLK 0x2000 +#define VID_CLKDIV2 0x4000 + +extern const struct videomode videomode_list[]; +extern const int videomode_count; + +#endif /* _DEV_VIDEOMODE_H */