Remove getconfig horrorshow. Replace with a static built-in rule list for now.
This commit is contained in:
parent
39158e98ac
commit
990a400905
|
@ -1659,7 +1659,6 @@ hw/xfree86/dri/Makefile
|
||||||
hw/xfree86/dummylib/Makefile
|
hw/xfree86/dummylib/Makefile
|
||||||
hw/xfree86/exa/Makefile
|
hw/xfree86/exa/Makefile
|
||||||
hw/xfree86/fbdevhw/Makefile
|
hw/xfree86/fbdevhw/Makefile
|
||||||
hw/xfree86/getconfig/Makefile
|
|
||||||
hw/xfree86/i2c/Makefile
|
hw/xfree86/i2c/Makefile
|
||||||
hw/xfree86/int10/Makefile
|
hw/xfree86/int10/Makefile
|
||||||
hw/xfree86/loader/Makefile
|
hw/xfree86/loader/Makefile
|
||||||
|
|
|
@ -7,12 +7,12 @@ DOC_SUBDIR = doc
|
||||||
SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support parser rac \
|
SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support parser rac \
|
||||||
ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp xf8_16bpp \
|
ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp xf8_16bpp \
|
||||||
xf8_32bpp loader scanpci dixmods exa \
|
xf8_32bpp loader scanpci dixmods exa \
|
||||||
$(DRI_SUBDIR) utils $(DOC_SUBDIR) getconfig
|
$(DRI_SUBDIR) utils $(DOC_SUBDIR)
|
||||||
|
|
||||||
DIST_SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support \
|
DIST_SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support \
|
||||||
parser rac ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp \
|
parser rac ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp \
|
||||||
xf8_16bpp xf8_32bpp loader scanpci dixmods dri exa \
|
xf8_16bpp xf8_32bpp loader scanpci dixmods dri exa \
|
||||||
utils doc getconfig
|
utils doc
|
||||||
|
|
||||||
bin_PROGRAMS = Xorg
|
bin_PROGRAMS = Xorg
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
/* $DHD: xc/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c,v 1.15 2003/09/24 19:39:36 dawes Exp $ */
|
|
||||||
/* $XdotOrg: $ */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2003 by David H. Dawes.
|
* Copyright 2003 by David H. Dawes.
|
||||||
* Copyright 2003 by X-Oz Technologies.
|
* Copyright 2003 by X-Oz Technologies.
|
||||||
|
@ -32,7 +29,6 @@
|
||||||
* Author: David Dawes <dawes@XFree86.Org>.
|
* Author: David Dawes <dawes@XFree86.Org>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_XORG_CONFIG_H
|
#ifdef HAVE_XORG_CONFIG_H
|
||||||
#include <xorg-config.h>
|
#include <xorg-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,9 +40,7 @@
|
||||||
#include "xf86Priv.h"
|
#include "xf86Priv.h"
|
||||||
#include "xf86_OSlib.h"
|
#include "xf86_OSlib.h"
|
||||||
|
|
||||||
/*
|
/* Sections for the default built-in configuration. */
|
||||||
* Sections for the default built-in configuration.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define BUILTIN_MODULE_SECTION \
|
#define BUILTIN_MODULE_SECTION \
|
||||||
"Section \"Module\"\n" \
|
"Section \"Module\"\n" \
|
||||||
|
@ -100,17 +94,6 @@
|
||||||
#define BUILTIN_LAYOUT_SECTION_POST \
|
#define BUILTIN_LAYOUT_SECTION_POST \
|
||||||
"EndSection\n\n"
|
"EndSection\n\n"
|
||||||
|
|
||||||
|
|
||||||
#ifndef GET_CONFIG_CMD
|
|
||||||
#define GET_CONFIG_CMD "getconfig"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GETCONFIG_DIR
|
|
||||||
#define GETCONFIG_DIR PROJECTROOT "/lib/X11/getconfig"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define GETCONFIG_WHITESPACE " \t\n"
|
|
||||||
|
|
||||||
static const char **builtinConfig = NULL;
|
static const char **builtinConfig = NULL;
|
||||||
static int builtinLines = 0;
|
static int builtinLines = 0;
|
||||||
static const char *deviceList[] = {
|
static const char *deviceList[] = {
|
||||||
|
@ -170,6 +153,61 @@ AppendToConfig(const char *s)
|
||||||
AppendToList(s, &builtinConfig, &builtinLines);
|
AppendToList(s, &builtinConfig, &builtinLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
videoPtrToDriverName(pciVideoPtr info)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* things not handled yet:
|
||||||
|
* amd/cyrix/nsc
|
||||||
|
* xgi
|
||||||
|
*/
|
||||||
|
|
||||||
|
switch (info->vendor)
|
||||||
|
{
|
||||||
|
case 0x1142: return "apm";
|
||||||
|
case 0xedd8: return "ark";
|
||||||
|
case 0x1a03: return "ast";
|
||||||
|
case 0x1002: return "ati";
|
||||||
|
case 0x102c: return "chips";
|
||||||
|
case 0x1013: return "cirrus";
|
||||||
|
case 0x8086:
|
||||||
|
if ((info->chipType == 0x00d1) || (info->chipType == 0x7800))
|
||||||
|
return "i740";
|
||||||
|
else return "i810";
|
||||||
|
case 0x102b: return "mga";
|
||||||
|
case 0x10c8: return "neomagic";
|
||||||
|
case 0x105d: return "i128";
|
||||||
|
case 0x10de: case 0x12d2: return "nv";
|
||||||
|
case 0x1163: return "rendition";
|
||||||
|
case 0x5333:
|
||||||
|
switch (info->chipType)
|
||||||
|
{
|
||||||
|
case 0x88d0: case 0x88d1: case 0x88f0: case 0x8811:
|
||||||
|
case 0x8812: case 0x8814: case 0x8901:
|
||||||
|
return "s3";
|
||||||
|
case 0x5631: case 0x883d: case 0x8a01: case 0x8a10:
|
||||||
|
case 0x8c01: case 0x8c03: case 0x8904: case 0x8a13:
|
||||||
|
return "s3virge";
|
||||||
|
default:
|
||||||
|
return "savage";
|
||||||
|
}
|
||||||
|
case 0x1039: return "sis";
|
||||||
|
case 0x126f: return "siliconmotion";
|
||||||
|
case 0x121a:
|
||||||
|
if (info->chipType < 0x0003)
|
||||||
|
return "voodoo";
|
||||||
|
else
|
||||||
|
return "tdfx";
|
||||||
|
case 0x3d3d: return "glint";
|
||||||
|
case 0x1023: return "trident";
|
||||||
|
case 0x100c: return "tseng";
|
||||||
|
case 0x1106: return "via";
|
||||||
|
case 0x15ad: return "vmware";
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
xf86AutoConfig(void)
|
xf86AutoConfig(void)
|
||||||
{
|
{
|
||||||
|
@ -177,7 +215,6 @@ xf86AutoConfig(void)
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
pciVideoPtr *pciptr, info = NULL;
|
pciVideoPtr *pciptr, info = NULL;
|
||||||
char *driver = NULL;
|
char *driver = NULL;
|
||||||
FILE *gp = NULL;
|
|
||||||
ConfigStatus ret;
|
ConfigStatus ret;
|
||||||
|
|
||||||
/* Find the primary device, and get some information about it. */
|
/* Find the primary device, and get some information about it. */
|
||||||
|
@ -194,108 +231,8 @@ xf86AutoConfig(void)
|
||||||
ErrorF("xf86PciVideoInfo is not set\n");
|
ErrorF("xf86PciVideoInfo is not set\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info) {
|
if (info)
|
||||||
char *tmp;
|
driver = videoPtrToDriverName(info);
|
||||||
char *path = NULL, *a, *b;
|
|
||||||
char *searchPath = NULL;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Look for the getconfig program first in the xf86ModulePath
|
|
||||||
* directories, then in GETCONFIG_DIR, then in BINDIR. If it
|
|
||||||
* isn't found in any of those locations, just use the normal
|
|
||||||
* search path.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (xf86ModulePath) {
|
|
||||||
a = xnfstrdup(xf86ModulePath);
|
|
||||||
b = strtok(a, ",");
|
|
||||||
while (b) {
|
|
||||||
path = xnfrealloc(path,
|
|
||||||
strlen(b) + 1 + strlen(GET_CONFIG_CMD) + 1);
|
|
||||||
sprintf(path, "%s/%s", b, GET_CONFIG_CMD);
|
|
||||||
if (access(path, X_OK) == 0)
|
|
||||||
break;
|
|
||||||
b = strtok(NULL, ",");
|
|
||||||
}
|
|
||||||
if (!b) {
|
|
||||||
xfree(path);
|
|
||||||
path = NULL;
|
|
||||||
}
|
|
||||||
xfree(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!path) {
|
|
||||||
path = xnfstrdup(GETCONFIG_DIR "/" GET_CONFIG_CMD);
|
|
||||||
if (access(path, X_OK) != 0) {
|
|
||||||
xfree(path);
|
|
||||||
path = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef BINDIR
|
|
||||||
if (!path) {
|
|
||||||
path = xnfstrdup(BINDIR "/" GET_CONFIG_CMD);
|
|
||||||
if (access(path, X_OK) != 0) {
|
|
||||||
xfree(path);
|
|
||||||
path = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!path)
|
|
||||||
path = xnfstrdup(GET_CONFIG_CMD);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Build up the config file directory search path:
|
|
||||||
*
|
|
||||||
* /etc/X11
|
|
||||||
* PROJECTROOT/etc/X11
|
|
||||||
* xf86ModulePath
|
|
||||||
* PROJECTROOT/lib/X11/getconfig (GETCONFIG_DIR)
|
|
||||||
*/
|
|
||||||
|
|
||||||
searchPath = xnfalloc(strlen("/etc/X11") + 1 +
|
|
||||||
strlen(PROJECTROOT "/etc/X11") + 1 +
|
|
||||||
(xf86ModulePath ? strlen(xf86ModulePath) : 0)
|
|
||||||
+ 1 +
|
|
||||||
strlen(GETCONFIG_DIR) + 1);
|
|
||||||
strcpy(searchPath, "/etc/X11," PROJECTROOT "/etc/X11,");
|
|
||||||
if (xf86ModulePath && *xf86ModulePath) {
|
|
||||||
strcat(searchPath, xf86ModulePath);
|
|
||||||
strcat(searchPath, ",");
|
|
||||||
}
|
|
||||||
strcat(searchPath, GETCONFIG_DIR);
|
|
||||||
|
|
||||||
ErrorF("xf86AutoConfig: Primary PCI is %d:%d:%d\n",
|
|
||||||
info->bus, info->device, info->func);
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s"
|
|
||||||
#ifdef DEBUG
|
|
||||||
" -D"
|
|
||||||
#endif
|
|
||||||
" -X %d"
|
|
||||||
" -I %s"
|
|
||||||
" -v 0x%04x -d 0x%04x -r 0x%02x -s 0x%04x"
|
|
||||||
" -b 0x%04x -c 0x%04x",
|
|
||||||
path,
|
|
||||||
(unsigned int)xorgGetVersion(),
|
|
||||||
searchPath,
|
|
||||||
info->vendor, info->chipType, info->chipRev,
|
|
||||||
info->subsysVendor, info->subsysCard,
|
|
||||||
info->class << 8 | info->subclass);
|
|
||||||
ErrorF("Running \"%s\"\n", buf);
|
|
||||||
gp = Popen(buf, "r");
|
|
||||||
if (gp) {
|
|
||||||
if (fgets(buf, sizeof(buf) - 1, gp)) {
|
|
||||||
buf[strlen(buf) - 1] = '\0';
|
|
||||||
tmp = strtok(buf, GETCONFIG_WHITESPACE);
|
|
||||||
if (tmp)
|
|
||||||
driver = xnfstrdup(tmp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
xfree(path);
|
|
||||||
xfree(searchPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
AppendToConfig(BUILTIN_MODULE_SECTION);
|
AppendToConfig(BUILTIN_MODULE_SECTION);
|
||||||
AppendToConfig(BUILTIN_MONITOR_SECTION);
|
AppendToConfig(BUILTIN_MONITOR_SECTION);
|
||||||
|
@ -306,19 +243,12 @@ xf86AutoConfig(void)
|
||||||
AppendToConfig(buf);
|
AppendToConfig(buf);
|
||||||
ErrorF("New driver is \"%s\"\n", driver);
|
ErrorF("New driver is \"%s\"\n", driver);
|
||||||
buf[0] = '\t';
|
buf[0] = '\t';
|
||||||
while (fgets(buf + 1, sizeof(buf) - 2, gp)) {
|
|
||||||
AppendToConfig(buf);
|
|
||||||
ErrorF("Extra line: %s", buf);
|
|
||||||
}
|
|
||||||
AppendToConfig(BUILTIN_DEVICE_SECTION_POST);
|
AppendToConfig(BUILTIN_DEVICE_SECTION_POST);
|
||||||
snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION,
|
snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION,
|
||||||
driver, 0, driver, 0);
|
driver, 0, driver, 0);
|
||||||
AppendToConfig(buf);
|
AppendToConfig(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gp)
|
|
||||||
Pclose(gp);
|
|
||||||
|
|
||||||
for (p = deviceList; *p; p++) {
|
for (p = deviceList; *p; p++) {
|
||||||
snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
|
snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
|
||||||
AppendToConfig(buf);
|
AppendToConfig(buf);
|
||||||
|
@ -337,13 +267,6 @@ xf86AutoConfig(void)
|
||||||
}
|
}
|
||||||
AppendToConfig(BUILTIN_LAYOUT_SECTION_POST);
|
AppendToConfig(BUILTIN_LAYOUT_SECTION_POST);
|
||||||
|
|
||||||
#ifdef BUILTIN_EXTRA
|
|
||||||
AppendToConfig(BUILTIN_EXTRA);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (driver)
|
|
||||||
xfree(driver);
|
|
||||||
|
|
||||||
xf86MsgVerb(X_DEFAULT, 0,
|
xf86MsgVerb(X_DEFAULT, 0,
|
||||||
"Using default built-in configuration (%d lines)\n",
|
"Using default built-in configuration (%d lines)\n",
|
||||||
builtinLines);
|
builtinLines);
|
||||||
|
@ -356,12 +279,9 @@ xf86AutoConfig(void)
|
||||||
xf86setBuiltinConfig(builtinConfig);
|
xf86setBuiltinConfig(builtinConfig);
|
||||||
ret = xf86HandleConfigFile(TRUE);
|
ret = xf86HandleConfigFile(TRUE);
|
||||||
FreeConfig();
|
FreeConfig();
|
||||||
switch(ret) {
|
|
||||||
case CONFIG_OK:
|
|
||||||
return TRUE;
|
|
||||||
default:
|
|
||||||
xf86Msg(X_ERROR, "Error parsing the built-in default configuration.\n");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (ret != CONFIG_OK)
|
||||||
|
xf86Msg(X_ERROR, "Error parsing the built-in default configuration.\n");
|
||||||
|
|
||||||
|
return (ret == CONFIG_OK);
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
getconfig.1
|
|
||||||
getconfig.1x
|
|
||||||
getconfig.5
|
|
||||||
getconfig.5x
|
|
|
@ -1,56 +0,0 @@
|
||||||
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
# copy of this software and associated documentation files (the
|
|
||||||
# "Software"), to deal in the Software without restriction, including
|
|
||||||
# without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
# distribute, and/or sell copies of the Software, and to permit persons
|
|
||||||
# to whom the Software is furnished to do so, provided that the above
|
|
||||||
# copyright notice(s) and this permission notice appear in all copies of
|
|
||||||
# the Software and that both the above copyright notice(s) and this
|
|
||||||
# permission notice appear in supporting documentation.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
||||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
||||||
# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
||||||
# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
|
|
||||||
# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
|
||||||
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
|
||||||
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
#
|
|
||||||
# Except as contained in this notice, the name of a copyright holder
|
|
||||||
# shall not be used in advertising or otherwise to promote the sale, use
|
|
||||||
# or other dealings in this Software without prior written authorization
|
|
||||||
# of the copyright holder.
|
|
||||||
#
|
|
||||||
|
|
||||||
dist_bin_SCRIPTS = getconfig getconfig.pl
|
|
||||||
|
|
||||||
getconfigdir = $(libdir)/X11/getconfig
|
|
||||||
dist_getconfig_DATA = xorg.cfg cfg.sample
|
|
||||||
|
|
||||||
include $(top_srcdir)/cpprules.in
|
|
||||||
|
|
||||||
appmandir = $(APP_MAN_DIR)
|
|
||||||
appman_PRE = getconfig.man
|
|
||||||
appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
|
|
||||||
|
|
||||||
filemandir = $(FILE_MAN_DIR)
|
|
||||||
fileman_DATA = getconfig.$(FILE_MAN_SUFFIX)
|
|
||||||
|
|
||||||
getconfig.$(FILE_MAN_SUFFIX): cfg.man
|
|
||||||
-rm -f getconfig.$(FILE_MAN_SUFFIX)
|
|
||||||
$(LN_S) cfg.man getconfig.$(FILE_MAN_SUFFIX)
|
|
||||||
|
|
||||||
SUFFIXES += .$(APP_MAN_SUFFIX) .man
|
|
||||||
|
|
||||||
.man.$(APP_MAN_SUFFIX):
|
|
||||||
-rm -f $@
|
|
||||||
$(LN_S) $< $@
|
|
||||||
|
|
||||||
BUILT_SOURCES = $(appman_PRE)
|
|
||||||
CLEANFILES = $(appman_PRE) $(appman_DATA) $(fileman_DATA) cfg.man
|
|
||||||
|
|
||||||
EXTRA_DIST = cfg.man.pre getconfig.man.pre
|
|
|
@ -1,137 +0,0 @@
|
||||||
.TH getconfig __filemansuffix__ __vendorversion__
|
|
||||||
.SH NAME
|
|
||||||
getconfig - meta configuration files for getconfig(1)
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B \(**.cfg
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B getconfig
|
|
||||||
is a programmatic interface that is used by the
|
|
||||||
.B __xservername__
|
|
||||||
server to get configuration information about video hardware when
|
|
||||||
operating without an
|
|
||||||
.B __xconfigfile__
|
|
||||||
file.
|
|
||||||
.PP
|
|
||||||
This implementation of
|
|
||||||
.B getconfig
|
|
||||||
is written in perl. It processes rules from meta-configuration files.
|
|
||||||
All meta-configuration files have a
|
|
||||||
.I .cfg
|
|
||||||
suffix.
|
|
||||||
.PP
|
|
||||||
Lines starting with a pound-sign (#) are comments, and are ignored.
|
|
||||||
Blank lines that consist only of white space are also treated as comments
|
|
||||||
and ignored.
|
|
||||||
.PP
|
|
||||||
The first non-comment line must be a signature string followed by
|
|
||||||
the file format version number. The signature string is
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
.nf
|
|
||||||
"Xorg getconfig rules file.\ \ Version: "
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
The currently defined version is "1.0". Files that do not have the
|
|
||||||
correct signature string are ignored.
|
|
||||||
.PP
|
|
||||||
The remaining non-comment lines define rules. The start of a new rule
|
|
||||||
is indicated by a line with no leading white space. Subsequent lines
|
|
||||||
making up a rule must be indented with white space. Logical lines within
|
|
||||||
a rule may be split over multiple physical lines by using the usual
|
|
||||||
continuation convention ('\e' at the end of the line). The first logical
|
|
||||||
line of each rule is a perl expression. It may be any valid perl
|
|
||||||
expression whose evaluated (with 'eval') result may be used as the
|
|
||||||
argument to a perl 'if' statement. The second logical line should be
|
|
||||||
the name of the __xservername__ video driver to use when the rule is true, and
|
|
||||||
subsequent logical lines of each rule, if present, are additional
|
|
||||||
configuration output for the video device's
|
|
||||||
.B __xconfigfile__
|
|
||||||
.B Device
|
|
||||||
section. The driver name and additional lines of configuration information
|
|
||||||
are written to standard output when the rule is chosen as the successful
|
|
||||||
rule.
|
|
||||||
.PP
|
|
||||||
Pseudo rules consisting of perl expressions may be present in the file
|
|
||||||
for the purpose of defining custom perl variables or setting the weight
|
|
||||||
to use for the following rules. Pseudo rules are rules that consist of
|
|
||||||
a single logical line only, and the are never candidates themselves for the
|
|
||||||
successful rule.
|
|
||||||
.PP
|
|
||||||
Several perl variables are pre-defined, and may be used within rules.
|
|
||||||
They include:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
.nf
|
|
||||||
.BR "$vendor " "PCI vendor ID"
|
|
||||||
.BR "$device " "PCI device ID"
|
|
||||||
.BR "$revision " "PCI revision ID"
|
|
||||||
.BR "$subsys " "PCI subsystem ID"
|
|
||||||
.BR "$subsysVendor " "PCI subsystem vendor ID"
|
|
||||||
.BR "$class " "PCI class"
|
|
||||||
.BR "$XorgVersion " "Xorg version, as a 'v' string"
|
|
||||||
.BR "$XorgVersionNumeric " "Xorg numeric version"
|
|
||||||
.BR "$XorgVersionMajor " "Xorg major version"
|
|
||||||
.BR "$XorgVersionMinor " "Xorg minor version"
|
|
||||||
.BR "$XorgVersionPatch " "Xorg patch version"
|
|
||||||
.BR "$XorgVersionSnap " "Xorg snap version"
|
|
||||||
.BR "$weight " "current rule weight"
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
The
|
|
||||||
.B $weight
|
|
||||||
variable determines the weight of the rules as they are processed. The
|
|
||||||
weight for subsequent rules may be set with a pseudo rule that sets or
|
|
||||||
changes the value of
|
|
||||||
.BR $weight .
|
|
||||||
The default weight, and the weight used for built-in rules is 500. The
|
|
||||||
meta-configuration files are processed in an unpredictable order. The
|
|
||||||
weighting of the rules is used to determine their relative priority
|
|
||||||
.PP
|
|
||||||
After processing all of the rules, both built-in and those read from
|
|
||||||
the meta-configuration files, the
|
|
||||||
.B getconfig
|
|
||||||
program chooses as the successful rule the last and highest weighted
|
|
||||||
rule that evaluates to true.
|
|
||||||
.SH FILES
|
|
||||||
.I .cfg
|
|
||||||
files located in the search path. The search path typically specified
|
|
||||||
by the
|
|
||||||
.B __xservername__
|
|
||||||
server is:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
.nf
|
|
||||||
.I /etc/X11
|
|
||||||
.I __projectroot__/etc/X11
|
|
||||||
.I <modulepath>
|
|
||||||
.I __projectroot__/lib/X11/getconfig
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
where
|
|
||||||
.I <modulepath>
|
|
||||||
is the
|
|
||||||
.B __xservername__
|
|
||||||
server's module search path.
|
|
||||||
.PP
|
|
||||||
.TP 30
|
|
||||||
.I __projectroot__/lib/X11/getconfig/xorg.cfg
|
|
||||||
Default rules file that gets installed. This file doesn't contain any
|
|
||||||
rules by default.
|
|
||||||
.TP 30
|
|
||||||
.I __projectroot__/lib/X11/getconfig/cfg.sample
|
|
||||||
A sample rules file that gives some examples of what types of rules can
|
|
||||||
appear in rules files.
|
|
||||||
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
getconfig(1),
|
|
||||||
__xservername__(__appmansuffix__),
|
|
||||||
__xconfigfile__(__filemansuffix__).
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
The __xservername__ automatic configuration support and the
|
|
||||||
.B getconfig
|
|
||||||
interface was written by David H. Dawes, with the support of X-Oz
|
|
||||||
Technologies for XFree86.
|
|
|
@ -1,110 +0,0 @@
|
||||||
# $DHD: xc/programs/Xserver/hw/xfree86/getconfig/cfg.sample,v 1.2 2003/09/23 05:12:07 dawes Exp $
|
|
||||||
|
|
||||||
# Some sample Xorg getconfig rules file.
|
|
||||||
|
|
||||||
#
|
|
||||||
# The line below is the getconfig rules file signature, and must be the
|
|
||||||
# first non-blank, non-comment line.
|
|
||||||
#
|
|
||||||
|
|
||||||
Xorg Project getconfig rules file. Version: 1.0
|
|
||||||
|
|
||||||
#
|
|
||||||
# Set the weight for the following rules. This should be set, otherwise
|
|
||||||
# the previously set weight will get used, and you have no idea of knowing
|
|
||||||
# what that might be.
|
|
||||||
#
|
|
||||||
|
|
||||||
$weight = 1000
|
|
||||||
|
|
||||||
#
|
|
||||||
# Rules. Rules consist of a condition (in perl code) followed by
|
|
||||||
# a driver name and optionally some additional strings. The start of a
|
|
||||||
# rule is indicated by a line with no leading white space. Subsequent
|
|
||||||
# lines making up a rule must be indented. Logical lines may be split
|
|
||||||
# over multiple physical lines by using the usual continuation '\'.
|
|
||||||
#
|
|
||||||
# Rules that are not followed by a driver name may be used to do other
|
|
||||||
# things, like setting the weight as above.
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Pre-defined variables include:
|
|
||||||
#
|
|
||||||
# $vendor PCI vendor ID
|
|
||||||
# $device PCI device ID
|
|
||||||
# $revision PCI revision ID
|
|
||||||
# $subsys PCI subsystem ID
|
|
||||||
# $subsysVendor PCI subsystem vendor ID
|
|
||||||
# $class PCI class
|
|
||||||
# $XorgVersion Xorg version, as a 'v' string.
|
|
||||||
#
|
|
||||||
# The Xorg version information is also available as the following:
|
|
||||||
#
|
|
||||||
# $XorgVersionNumeric
|
|
||||||
# $XorgVersionMajor
|
|
||||||
# $XorgVersionMinor
|
|
||||||
# $XorgVersionPatch
|
|
||||||
# $XorgVersionSnap
|
|
||||||
#
|
|
||||||
|
|
||||||
# Define a fake vendor ID for some sample rules.
|
|
||||||
|
|
||||||
$novendor = 0x10000
|
|
||||||
$nodevice = 0x10000
|
|
||||||
|
|
||||||
$vendor == $novendor
|
|
||||||
nodriver
|
|
||||||
Option "xx"
|
|
||||||
Videoram 1000
|
|
||||||
|
|
||||||
# A rule with continued lines.
|
|
||||||
|
|
||||||
$vendor == $novendor && \
|
|
||||||
$device == $nodevice
|
|
||||||
nodriver2
|
|
||||||
Option \
|
|
||||||
"yy"
|
|
||||||
|
|
||||||
# Increase the weight of the following rules if the Xorg version is 4.3 or
|
|
||||||
# higher.
|
|
||||||
|
|
||||||
$weight++ if ($XorgVersion ge v4.3)
|
|
||||||
|
|
||||||
$vendor == $novendor
|
|
||||||
nodriver
|
|
||||||
Option "yy"
|
|
||||||
|
|
||||||
#
|
|
||||||
# The weight can be changed at any times, and applies to rules that follow
|
|
||||||
# until changed again.
|
|
||||||
#
|
|
||||||
|
|
||||||
$weight = 100
|
|
||||||
|
|
||||||
$vendor == $novendor && $XorgVersion eq v4.3.2.1
|
|
||||||
nodriver3
|
|
||||||
|
|
||||||
$weight = 600
|
|
||||||
|
|
||||||
#
|
|
||||||
# The following two examples use some real values.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Example: make the default depth 24 for Radeon R200 and RV200 cards.
|
|
||||||
|
|
||||||
$vendor == 0x1002 && \
|
|
||||||
($device >= 0x5148 && $device <= 0x514F || \
|
|
||||||
$device >= 0x5168 && $device <= 0x516C || \
|
|
||||||
$device == 0x4242 || \
|
|
||||||
$device >= 0x5157 && device <= 0x5158)
|
|
||||||
ati
|
|
||||||
Option "DefaultDepth" "24"
|
|
||||||
|
|
||||||
|
|
||||||
# Example: enable DRI for MGA G400
|
|
||||||
|
|
||||||
$vendor == 0x102b && $device == 0x0525
|
|
||||||
mga
|
|
||||||
Option "dri"
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# $XdotOrg$
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright 2003 by David H. Dawes.
|
|
||||||
# Copyright 2003 by X-Oz Technologies.
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
# copy of this software and associated documentation files (the "Software"),
|
|
||||||
# to deal in the Software without restriction, including without limitation
|
|
||||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
# and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
# Software is furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
# OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
#
|
|
||||||
# Except as contained in this notice, the name of the copyright holder(s)
|
|
||||||
# and author(s) shall not be used in advertising or otherwise to promote
|
|
||||||
# the sale, use or other dealings in this Software without prior written
|
|
||||||
# authorization from the copyright holder(s) and author(s).
|
|
||||||
#
|
|
||||||
# Author: David Dawes <dawes@XFree86.Org>.
|
|
||||||
#
|
|
||||||
|
|
||||||
# A simple wrapper to execute the real getconfig program. So long as perl
|
|
||||||
# is in $PATH, we don't need to know where it is this way.
|
|
||||||
|
|
||||||
if echo $0 | grep / >/dev/null 2>&1; then
|
|
||||||
DIR=`dirname $0`/
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec perl ${DIR}getconfig.pl "$@"
|
|
|
@ -1,98 +0,0 @@
|
||||||
.TH getconfig 1 __vendorversion__
|
|
||||||
.SH NAME
|
|
||||||
getconfig - get configuration information for the __xservername__ server
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B getconfig
|
|
||||||
.RI [ option
|
|
||||||
.IR ... ]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B getconfig
|
|
||||||
is a programmatic interface that is used by the
|
|
||||||
.B __xservername__
|
|
||||||
server to get configuration information about video hardware when
|
|
||||||
operating without an
|
|
||||||
.B __xconfigfile__
|
|
||||||
file.
|
|
||||||
.PP
|
|
||||||
This implementation of
|
|
||||||
.B getconfig
|
|
||||||
is written in perl. It processes a prioritized and ordered list of
|
|
||||||
rules supplied internally and from meta-configuration files. The rules
|
|
||||||
are in the form of perl expressions.
|
|
||||||
.B getconfig
|
|
||||||
writes to standard output the __xconfigfile__-style configuration data
|
|
||||||
specified by the last highest priority rule that evaluates to true.
|
|
||||||
Information about the format of the meta-configuration files can be
|
|
||||||
found in the getconfig(__filemansuffix__) manual page.
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP 8
|
|
||||||
.BI \-I " search-path"
|
|
||||||
Specify the search path to use for meta-config files.
|
|
||||||
.I search-path
|
|
||||||
is a comma-separated list of directories to search. Each directory in
|
|
||||||
the search path is searched for files with a
|
|
||||||
.I .cfg
|
|
||||||
suffix. Each such file is opened and checked for a valid signature
|
|
||||||
string. Rules are read from files with a valid signature string and
|
|
||||||
appended to the list of rules to evaluate. If no search path is specified,
|
|
||||||
only the internally supplied configuration rules will be used.
|
|
||||||
.TP 8
|
|
||||||
.B \-D
|
|
||||||
Enable debugging output.
|
|
||||||
.TP 8
|
|
||||||
.B \-V
|
|
||||||
Print out the version information and exit.
|
|
||||||
.TP 8
|
|
||||||
.BI \-X
|
|
||||||
.BI __xservername__-version
|
|
||||||
Specify the __xservername__ version in numeric (integer) form.
|
|
||||||
.TP 8
|
|
||||||
.BI \-b " subsys-id"
|
|
||||||
Specify the PCI subsystem ID of the video device.
|
|
||||||
.TP 8
|
|
||||||
.BI \-c " class"
|
|
||||||
Specify the PCI class of the video device.
|
|
||||||
.TP 8
|
|
||||||
.BI \-d " device-id"
|
|
||||||
Specify the PCI devide ID of the video device.
|
|
||||||
.TP 8
|
|
||||||
.BI \-r " revision"
|
|
||||||
Specify the PCI revision of the video device.
|
|
||||||
.TP 8
|
|
||||||
.BI \-s " subsysvendor-id"
|
|
||||||
Specify the PCI subsystem vendor ID of the video device.
|
|
||||||
.TP 8
|
|
||||||
.BI \-v " vendor-id"
|
|
||||||
Specify the PCI vendor ID of the video device.
|
|
||||||
.SH FILES
|
|
||||||
.I .cfg
|
|
||||||
files located in the search path. The search path typically specified
|
|
||||||
by the
|
|
||||||
.B __xservername__
|
|
||||||
server is:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
.nf
|
|
||||||
.I /etc/X11
|
|
||||||
.I __projectroot__/etc/X11
|
|
||||||
.I <modulepath>
|
|
||||||
.I __projectroot__/lib/X11/getconfig
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
where
|
|
||||||
.I <modulepath>
|
|
||||||
is the
|
|
||||||
.B __xservername__
|
|
||||||
server's module search path.
|
|
||||||
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
getconfig(__filemansuffix__),
|
|
||||||
__xservername__(__appmansuffix__),
|
|
||||||
__xconfigfile__(__filemansuffix__).
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
The __xservername__ automatic configuration support and the
|
|
||||||
.B getconfig
|
|
||||||
interface was written by David H. Dawes, with the support of X-Oz
|
|
||||||
Technologies for XFree86.
|
|
|
@ -1,433 +0,0 @@
|
||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
# $DHD: xc/programs/Xserver/hw/xfree86/getconfig/getconfig.pl,v 1.13 2003/09/23 05:12:07 dawes Exp $
|
|
||||||
# $XdotOrg: $
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright 2003 by David H. Dawes.
|
|
||||||
# Copyright 2003 by X-Oz Technologies.
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
# copy of this software and associated documentation files (the "Software"),
|
|
||||||
# to deal in the Software without restriction, including without limitation
|
|
||||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
# and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
# Software is furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
# OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
#
|
|
||||||
# Except as contained in this notice, the name of the copyright holder(s)
|
|
||||||
# and author(s) shall not be used in advertising or otherwise to promote
|
|
||||||
# the sale, use or other dealings in this Software without prior written
|
|
||||||
# authorization from the copyright holder(s) and author(s).
|
|
||||||
#
|
|
||||||
# Author: David Dawes <dawes@XFree86.Org>.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# This script takes PCI id information, compares it against an ordered list
|
|
||||||
# of rules, and prints out the configuration information specified by the
|
|
||||||
# last matching rule.
|
|
||||||
#
|
|
||||||
# This script is called by xf86AutoConfig().
|
|
||||||
#
|
|
||||||
|
|
||||||
# Command line processing.
|
|
||||||
|
|
||||||
$GetconfigVersion = v1.0;
|
|
||||||
|
|
||||||
$debug = 0;
|
|
||||||
|
|
||||||
$myname = $0;
|
|
||||||
$myname =~ s/.*\///;
|
|
||||||
|
|
||||||
$signature = "Xorg Foundation getconfig rules file. Version: ";
|
|
||||||
|
|
||||||
while (@ARGV[0] =~ /^-[A-Za-z]$/) {
|
|
||||||
$f = shift;
|
|
||||||
SWITCH: {
|
|
||||||
if ($f eq "-D") {
|
|
||||||
$debug = 1;
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
if ($f eq "-I") {
|
|
||||||
push(@searchPaths, split(/,/, shift));
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
if ($f eq "-V") {
|
|
||||||
printf STDERR "$myname: Version %vd.\n", $GetconfigVersion;
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
if ($f eq "-X") {
|
|
||||||
$XorgVersionNumeric = shift;
|
|
||||||
if (!defined($XorgVersionNumeric)) {
|
|
||||||
print STDERR "$myname: -X requires the Xorg version.\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($f eq "-b") {
|
|
||||||
$subsys = oct(shift);
|
|
||||||
if (!defined($subsys)) {
|
|
||||||
print STDERR "$myname: -b requires the subsys id.\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
if ($f eq "-c") {
|
|
||||||
$class = oct(shift);
|
|
||||||
if (!defined($class)) {
|
|
||||||
print STDERR "$myname: -c requires the class value.\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
if ($f eq "-d") {
|
|
||||||
$device = oct(shift);
|
|
||||||
if (!defined($device)) {
|
|
||||||
print STDERR "$myname: -d requires the device id.\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
if ($f eq "-r") {
|
|
||||||
$revision = oct(shift);
|
|
||||||
if (!defined($revision)) {
|
|
||||||
print STDERR "$myname: -r requires the device revision.\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
if ($f eq "-s") {
|
|
||||||
$subsysVendor = oct(shift);
|
|
||||||
if (!defined($subsysVendor)) {
|
|
||||||
print STDERR "$myname: -s requires the subsysVendor id.\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
if ($f eq "-v") {
|
|
||||||
$vendor = oct(shift);
|
|
||||||
if (!defined($vendor)) {
|
|
||||||
print STDERR "$myname: -v requires the vendor id.\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
last SWITCH;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printf STDERR "$myname: Version %vd.\n", $GetconfigVersion;
|
|
||||||
|
|
||||||
if (defined($XorgVersionNumeric)) {
|
|
||||||
$XorgVersionMajor = $XorgVersionNumeric / 10000000;
|
|
||||||
$XorgVersionMinor = ($XorgVersionNumeric % 10000000) / 100000;
|
|
||||||
$XorgVersionPatch = ($XorgVersionNumeric % 100000) / 1000;
|
|
||||||
$XorgVersionSnapshot = $XorgVersionNumeric % 1000;
|
|
||||||
$XorgVersion = chr($XorgVersionMajor) . chr($XorgVersionMinor) .
|
|
||||||
chr($XorgVersionPatch) . chr($XorgVersionSnapshot);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($debug) {
|
|
||||||
printf STDERR "$myname: Xorg Version: %d, %d.%d.%d.%d, %vd.\n",
|
|
||||||
$XorgVersionNumeric, $XorgVersionMajor, $XorgVersionMinor,
|
|
||||||
$XorgVersionPatch, $XorgVersionSnapshot, $XorgVersion;
|
|
||||||
} else {
|
|
||||||
printf STDERR "$myname: Xorg Version: %vd.\n", $XorgVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# The rules here are just basic vendor ID to driver mappings.
|
|
||||||
# Ideally this is all that would be required. More complicated configuration
|
|
||||||
# rules will be provided in external files.
|
|
||||||
|
|
||||||
# XXX This set of basic rules isn't complete yet.
|
|
||||||
|
|
||||||
@rules = (
|
|
||||||
|
|
||||||
# Set the weight for the built-in rules.
|
|
||||||
['$weight = 500'],
|
|
||||||
|
|
||||||
# APM
|
|
||||||
['$vendor == 0x1142',
|
|
||||||
'apm'],
|
|
||||||
|
|
||||||
# ARK
|
|
||||||
['$vendor == 0xedd8',
|
|
||||||
'apm'],
|
|
||||||
|
|
||||||
# AST
|
|
||||||
['$vendor == 0x1a03',
|
|
||||||
'ast'],
|
|
||||||
|
|
||||||
# ATI
|
|
||||||
['$vendor == 0x1002',
|
|
||||||
'ati'],
|
|
||||||
|
|
||||||
# Chips & Technologies
|
|
||||||
['$vendor == 0x102c',
|
|
||||||
'chips'],
|
|
||||||
|
|
||||||
# Cirrus
|
|
||||||
['$vendor == 0x1013',
|
|
||||||
'cirrus'],
|
|
||||||
|
|
||||||
# Intel
|
|
||||||
['$vendor == 0x8086',
|
|
||||||
'i810'],
|
|
||||||
['$vendor == 0x8086 && ($chipType == 0x00d1 || $chipType == 0x7800)',
|
|
||||||
'i740'],
|
|
||||||
|
|
||||||
# Matrox
|
|
||||||
['$vendor == 0x102b',
|
|
||||||
'mga'],
|
|
||||||
|
|
||||||
# Neomagic
|
|
||||||
['$vendor == 0x10c8',
|
|
||||||
'neomagic'],
|
|
||||||
|
|
||||||
# Number Nine
|
|
||||||
['$vendor == 0x105d',
|
|
||||||
'i128'],
|
|
||||||
|
|
||||||
# NVIDIA
|
|
||||||
['$vendor == 0x10de || $vendor == 0x12d2',
|
|
||||||
'nv'],
|
|
||||||
|
|
||||||
# S3
|
|
||||||
['$vendor == 0x5333 && ($device == 0x88d0 ||' .
|
|
||||||
'$device == 0x88d1 ||' .
|
|
||||||
'$device == 0x88f0 ||' .
|
|
||||||
'$device == 0x8811 ||' .
|
|
||||||
'$device == 0x8812 ||' .
|
|
||||||
'$device == 0x8814 ||' .
|
|
||||||
'$device == 0x8901)',
|
|
||||||
's3'],
|
|
||||||
|
|
||||||
# S3 virge
|
|
||||||
['$vendor == 0x5333 && ($device == 0x5631 ||' .
|
|
||||||
'$device == 0x883d ||' .
|
|
||||||
'$device == 0x8a01 ||' .
|
|
||||||
'$device == 0x8a10 ||' .
|
|
||||||
'$device == 0x8c01 ||' .
|
|
||||||
'$device == 0x8c03 ||' .
|
|
||||||
'$device == 0x8904 ||' .
|
|
||||||
'$device == 0x8a13)',
|
|
||||||
's3virge'],
|
|
||||||
|
|
||||||
# S3 Savage
|
|
||||||
['$vendor == 0x5333 && ($device >= 0x8a20 && $device <= 0x8a22 ||' .
|
|
||||||
'$device == 0x9102 ||' .
|
|
||||||
'$device >= 0x8c10 && $device <= 0x8c13 ||' .
|
|
||||||
'$device == 0x8a25 ||' .
|
|
||||||
'$device == 0x8a26 ||' .
|
|
||||||
'$device >= 0x8d01 && $device <= 0x8d04 ||' .
|
|
||||||
'$device >= 0x8c2a && $device <= 0x8c2f ||' .
|
|
||||||
'$device == 0x8c22 ||' .
|
|
||||||
'$device == 0x8c24 ||' .
|
|
||||||
'$device == 0x8c26)',
|
|
||||||
'savage'],
|
|
||||||
|
|
||||||
# SIS
|
|
||||||
['$vendor == 0x1039',
|
|
||||||
'sis'],
|
|
||||||
|
|
||||||
# SMI
|
|
||||||
['$vendor == 0x126f',
|
|
||||||
'siliconmotion'],
|
|
||||||
|
|
||||||
# 3Dfx
|
|
||||||
['$vendor == 0x121a',
|
|
||||||
'tdfx'],
|
|
||||||
|
|
||||||
# 3Dlabs
|
|
||||||
['$vendor == 0x3d3d',
|
|
||||||
'glint'],
|
|
||||||
|
|
||||||
# Trident
|
|
||||||
['$vendor == 0x1023',
|
|
||||||
'trident'],
|
|
||||||
|
|
||||||
# Tseng Labs
|
|
||||||
['$vendor == 0x100c',
|
|
||||||
'tseng'],
|
|
||||||
|
|
||||||
# VIA
|
|
||||||
['$vendor == 0x1106',
|
|
||||||
'via'],
|
|
||||||
|
|
||||||
# VMware
|
|
||||||
['$vendor == 0x15ad',
|
|
||||||
'vmware'],
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# Reverse the search path list, since the later rules have higher priority
|
|
||||||
# than earlier ones (weighting being equal).
|
|
||||||
|
|
||||||
@searchPaths = reverse(@searchPaths);
|
|
||||||
|
|
||||||
if ($debug) {
|
|
||||||
$i = 0;
|
|
||||||
for $path (@searchPaths) {
|
|
||||||
print STDERR "$myname: Search path $i is: \"$path\".\n";
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print STDERR "$myname: ", $#rules + 1, " built-in rule", plural($#rules + 1),
|
|
||||||
".\n";
|
|
||||||
|
|
||||||
for $path (@searchPaths) {
|
|
||||||
while (<$path/*.cfg>) {
|
|
||||||
@tmp = readRulesFile($_);
|
|
||||||
if (defined(@tmp[0])) {
|
|
||||||
push @rules, @tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($debug) {
|
|
||||||
$i = 0;
|
|
||||||
for $r (@rules) {
|
|
||||||
print STDERR "$myname: rule $i is: \'@$r\'.\n";
|
|
||||||
$i++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$i = 0;
|
|
||||||
$e = 0;
|
|
||||||
$weight = 0;
|
|
||||||
$w = 0;
|
|
||||||
for $r (@rules) {
|
|
||||||
($cond, $d, @o) = @$r;
|
|
||||||
$result = eval $cond;
|
|
||||||
if ($@) {
|
|
||||||
print STDERR "$myname: Error evaluating rule $i \'$cond\': $@";
|
|
||||||
$e++;
|
|
||||||
}
|
|
||||||
if ($debug) {
|
|
||||||
print STDERR "$myname: rule $i \'$cond\' evaluates to \'$result\'.\n";
|
|
||||||
}
|
|
||||||
if ($result && defined($d) && $weight >= $w) {
|
|
||||||
$driver = $d;
|
|
||||||
@opts = @o;
|
|
||||||
$w = $weight;
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
print STDERR "$myname: Evaluated $i rule", plural($i),
|
|
||||||
" with $e error", plural($e), ".\n";
|
|
||||||
|
|
||||||
print STDERR "$myname: Weight of result is $w.\n";
|
|
||||||
|
|
||||||
if ($debug) {
|
|
||||||
if (defined($driver)) {
|
|
||||||
print STDERR "$myname: Driver is \'$driver\'.\n";
|
|
||||||
} else {
|
|
||||||
print STDERR "$myname: No driver.\n";
|
|
||||||
}
|
|
||||||
if (defined(@opts)) {
|
|
||||||
print STDERR "$myname: options are:\n";
|
|
||||||
for $opt (@opts) {
|
|
||||||
print STDERR "\t$opt\n";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print STDERR "$myname: No options.\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print "$driver\n";
|
|
||||||
for $opt (@opts) {
|
|
||||||
print "$opt\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
|
|
||||||
# Subroutines.
|
|
||||||
|
|
||||||
sub readRulesFile {
|
|
||||||
my ($file) = @_;
|
|
||||||
my $signatureOK = 0;
|
|
||||||
my @r, @tmp;
|
|
||||||
my $line, $cont, $prevcont, $fileversion;
|
|
||||||
|
|
||||||
undef @tmp;
|
|
||||||
undef @r;
|
|
||||||
|
|
||||||
if (open(RF, "<$file")) {
|
|
||||||
$prevcont = 0;
|
|
||||||
while (<RF>) {
|
|
||||||
chop;
|
|
||||||
$line = $_;
|
|
||||||
next if ($line =~ /^#/);
|
|
||||||
next if ($line =~ /^\s*$/);
|
|
||||||
if (!$signatureOK) {
|
|
||||||
if ($line =~ /^$signature(.*)$/) {
|
|
||||||
$fileversion = $1;
|
|
||||||
$signatureOK = 1;
|
|
||||||
print STDERR
|
|
||||||
"$myname: rules file \'$file\' has version $fileversion.\n";
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!$signatureOK) {
|
|
||||||
print STDERR "$myname: file \'$file\' has bad signature.\n";
|
|
||||||
close(RF);
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
$cont = 0;
|
|
||||||
if ($line =~ s/\\\s*$//) {
|
|
||||||
$cont = 1;
|
|
||||||
}
|
|
||||||
if (!$prevcont && $line =~ /^\S+/) {
|
|
||||||
if (defined(@tmp[0])) {
|
|
||||||
push(@r,[@tmp]);
|
|
||||||
}
|
|
||||||
undef @tmp;
|
|
||||||
}
|
|
||||||
if ($prevcont) {
|
|
||||||
push(@tmp, pop(@tmp) . $line);
|
|
||||||
} else {
|
|
||||||
push(@tmp, $line);
|
|
||||||
}
|
|
||||||
$prevcont = $cont;
|
|
||||||
}
|
|
||||||
if (defined(@tmp[0])) {
|
|
||||||
push(@r,[@tmp]);
|
|
||||||
}
|
|
||||||
if (!defined(@r[0])) {
|
|
||||||
print STDERR "$myname: no rules in file \'$file\'.\n";
|
|
||||||
} else {
|
|
||||||
print STDERR "$myname: ", $#r + 1,
|
|
||||||
" rule", plural($#r + 1),
|
|
||||||
" added from file \'$file\'.\n";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print STDERR "$myname: cannot open file \'$file\'.\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
return @r;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub plural {
|
|
||||||
my ($count) = @_;
|
|
||||||
|
|
||||||
if ($count != 1) {
|
|
||||||
return "s";
|
|
||||||
} else {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
# $XdotOrg: xc/programs/Xserver/hw/xfree86/getconfig/xorg.cfg,v 1.2 2004/04/23 19:54:01 eich Exp $
|
|
||||||
|
|
||||||
# Base Xorg getconfig rules file.
|
|
||||||
|
|
||||||
#
|
|
||||||
# The line below is the getconfig rules file signature, and must be the
|
|
||||||
# first non-blank, non-comment line.
|
|
||||||
#
|
|
||||||
|
|
||||||
Xorg Foundation getconfig rules file. Version: 1.0
|
|
||||||
|
|
||||||
#
|
|
||||||
# Set the weight for the following rules. This should be set, otherwise
|
|
||||||
# the previously set weight will get used, and you have no idea of knowing
|
|
||||||
# what that might be.
|
|
||||||
#
|
|
||||||
|
|
||||||
$weight = 1000
|
|
||||||
|
|
||||||
#
|
|
||||||
# Rules. Rules consist of a condition (in perl code) followed by
|
|
||||||
# a driver name and optionally some additional strings. The start of a
|
|
||||||
# rule is indicated by a line with no leading white space. subsequent
|
|
||||||
# lines making up a rule must be indented. Logical lines may be split
|
|
||||||
# over multiple physical lines by using the usual continuation '\'.
|
|
||||||
#
|
|
||||||
# Rules that are not followed by a driver name may be used to do other
|
|
||||||
# things, like setting the weight as above.
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Pre-defined variables include:
|
|
||||||
#
|
|
||||||
# $vendor PCI vendor ID
|
|
||||||
# $device PCI device ID
|
|
||||||
# $revision PCI revision ID
|
|
||||||
# $subsys PCI subsystem ID
|
|
||||||
# $subsysVendor PCI subsystem vendor ID
|
|
||||||
# $class PCI class
|
|
||||||
# $XorgVersion Xorg version, as a 'v' string.
|
|
||||||
#
|
|
||||||
# The Xorg version information is also available as the following:
|
|
||||||
#
|
|
||||||
# $XorgVersionNumeric
|
|
||||||
# $XorgVersionMajor
|
|
||||||
# $XorgVersionMinor
|
|
||||||
# $XorgVersionPatch
|
|
||||||
# $XorgVersionSnap
|
|
||||||
#
|
|
||||||
|
|
Loading…
Reference in New Issue