Remove source files that have been dead since day-1 of this branch.
This commit is contained in:
parent
eb95128f61
commit
7dff8d98a9
|
@ -1,32 +0,0 @@
|
|||
module_LTLIBRARIES = libscanpci.la libpcidata.la
|
||||
|
||||
libpcidata_la_LDFLAGS = -avoid-version
|
||||
libscanpci_la_LDFLAGS = -avoid-version
|
||||
|
||||
libpcidata_la_SOURCES = xf86PciData.c
|
||||
libscanpci_la_SOURCES = xf86ScanPci.c
|
||||
|
||||
INCLUDES = $(XORG_INCS)
|
||||
|
||||
AM_CFLAGS = $(XORG_CFLAGS)
|
||||
|
||||
BUILT_SOURCES = xf86PciIds.h
|
||||
|
||||
EXTRA_DIST = \
|
||||
xf86PciData.h \
|
||||
xf86PciIds.h \
|
||||
xf86PciStdIds.h \
|
||||
xf86PciStr.h \
|
||||
xf86ScanPci.h \
|
||||
pci.ids \
|
||||
extrapci.ids \
|
||||
pciid2c.pl
|
||||
|
||||
xf86PciData.c:
|
||||
echo "#define PCIDATA" > $@
|
||||
echo "#include \"$(srcdir)/xf86ScanPci.c\"" >> $@
|
||||
|
||||
xf86PciIds.h: $(srcdir)/../common/xf86PciInfo.h
|
||||
cat $(srcdir)/pci.ids $(srcdir)/extrapci.ids | $(PERL) $(srcdir)/pciid2c.pl $(srcdir)/../common/xf86PciInfo.h > xf86PciIds.h
|
||||
|
||||
DISTCLEANFILES = xf86PciData.c xf86PciIds.h
|
|
@ -1,48 +0,0 @@
|
|||
#
|
||||
# Modifications and additions to the standard list of PCI IDs in
|
||||
# pci.ids.
|
||||
#
|
||||
# To modify an entry, simply add the modified version here.
|
||||
# To leave part of an entry unchanged, use '"' for the name
|
||||
# (e.g., leave the vendor name unchanged while adding/modifying
|
||||
# a device). To delete an entry, set the name to '-'.
|
||||
#
|
||||
# One syntax extension is allowing a 16-bit class value to be
|
||||
# specified for a device (see the syntax description below).
|
||||
#
|
||||
# Don't make gratuitous changes, and please send back
|
||||
# changes/additions that aren't XFree86-specific to the pciids
|
||||
# project (http://pciids.sf.net/).
|
||||
#
|
||||
# $XdotOrg: xserver/xorg/hw/xfree86/scanpci/extrapci.ids,v 1.6 2005/09/19 18:54:05 alanc Exp $
|
||||
# $XFree86: xc/programs/Xserver/hw/xfree86/etc/extrapci.ids,v 1.11 2003/12/18 16:22:27 dawes Exp $
|
||||
#
|
||||
|
||||
# Vendors, devices and subsystems. Please keep sorted.
|
||||
|
||||
# Syntax:
|
||||
# vendor vendor_name
|
||||
# device device_name <-- single tab
|
||||
# C class <-- two tabs
|
||||
# subvendor subdevice subsystem_name <-- two tabs
|
||||
#
|
||||
# Use lower-case hex digits for all numeric values.
|
||||
|
||||
# Example: Add a new chipset for vendor who's ID is xyzw
|
||||
#
|
||||
# xyzw "
|
||||
# 20ce New Chipset Description
|
||||
|
||||
1102 "
|
||||
0002 "
|
||||
C 0401
|
||||
|
||||
# Some NVIDIA cards that are not in the master pci.ids file yet.
|
||||
10de "
|
||||
0046 NV40 [GeForce 6800 GT]
|
||||
0048 GeForce 6800 XT
|
||||
0147 GeForce 6700 XL
|
||||
0160 GeForce 6500
|
||||
0163 GeForce 6200 LE
|
||||
0169 GeForce 6250
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -1,389 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# $XdotOrg$
|
||||
|
||||
# Automatically generate the data structures for PCI vendor/device lists
|
||||
# from the pci.ids file.
|
||||
#
|
||||
# It should be run as:
|
||||
#
|
||||
# perl pciid2c.pl ../common/xf86PciInfo.h < pci.ids > xf86PciStdIds.h
|
||||
#
|
||||
#
|
||||
# Copyright © 2002 by The XFree86 Project, Inc.
|
||||
#
|
||||
# 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
|
||||
#
|
||||
# $XFree86: xc/programs/Xserver/hw/xfree86/scanpci/pciid2c.pl,v 1.3 2003/08/24 17:37:10 dawes Exp $
|
||||
#
|
||||
|
||||
if (@ARGV[0]) {
|
||||
$infofile = @ARGV[0];
|
||||
}
|
||||
|
||||
#
|
||||
# The basic pci.ids format is:
|
||||
# - Vendor lines start with four (lower case) hex digits
|
||||
# - Device lines start with one tab followed by four hex digits
|
||||
# - Subsystem lines start with two tabs followed by two sets of four
|
||||
# hex digits.
|
||||
# - Class overrides for devices start with two tabs followed by a "C",
|
||||
# followed by four hex digits with the class/subclass value.
|
||||
# - Class lines start with a "C".
|
||||
# - Comment lines start with a '#'.
|
||||
# - Blank lines are ignored.
|
||||
#
|
||||
# We allow for extra lines to be appended to modify existing entries or
|
||||
# add new ones. To add/modify Device entries without modifying the
|
||||
# Vendor name, a special vendor name of '"' is used (mnemonic: "ditto").
|
||||
# Similarly for adding subsystem names without modifying (or adding)
|
||||
# a corresponding device entry. To rename an existing entry, simply
|
||||
# provide the new name. To remove an existing entry, use the special
|
||||
# name '-'.
|
||||
#
|
||||
|
||||
while (<STDIN>) {
|
||||
# Process data lines
|
||||
if (/^([0-9a-f]{4})\s+(.*)/) {
|
||||
$vendor = $1;
|
||||
if ($2 eq '-') {
|
||||
delete($vendors{$vendor});
|
||||
} elsif ($2 ne '"') {
|
||||
$vendors{$vendor} = $2;
|
||||
# Remove " characters
|
||||
$vendors{$vendor} =~ s/"//g;
|
||||
# Remove multiple "?" sequences to avoid trigraphs
|
||||
$vendors{$vendor} =~ s/\?+/\?/g;
|
||||
}
|
||||
} elsif (/^\t([0-9a-f]{4})\s+(.*)/) {
|
||||
$device = $1;
|
||||
if ($2 eq '-') {
|
||||
delete($devices{$vendor}{$device});
|
||||
} elsif ($2 ne '"') {
|
||||
$devices{$vendor}{$device} = $2;
|
||||
# Remove " characters
|
||||
$devices{$vendor}{$device} =~ s/"//g;
|
||||
# Remove multiple "?" sequences to avoid trigraphs
|
||||
$devices{$vendor}{$device} =~ s/\?+/\?/g;
|
||||
}
|
||||
} elsif (/^\t\t([0-9a-f]{4})\s+([0-9a-f]{4})\s+(.*)/) {
|
||||
$v = $1;
|
||||
$s = $2;
|
||||
if ($3 eq '-') {
|
||||
delete($subsystems{$v}{$s});
|
||||
delete($devsubsystems{$vendor}{$device}{"$v-$s"});
|
||||
} elsif ($3 ne '"') {
|
||||
if ($subsystems{$v}{$s}) {
|
||||
#print STDERR "Duplicate subsytem: $v, $s, \"$subsystems{$v}{$s}\", \"$3\"\n";
|
||||
}
|
||||
$subsystems{$v}{$s} = $3;
|
||||
# Remove " characters
|
||||
$subsystems{$v}{$s} =~ s/"//g;
|
||||
# Remove multiple "?" sequences to avoid trigraphs
|
||||
$subsystems{$v}{$s} =~ s/\?+/\?/g;
|
||||
$devsubsystems{$vendor}{$device}{"$v-$s"} = $subsystems{$v}{$s};
|
||||
}
|
||||
} elsif (/^\t\tC\s+([0-9a-f]{4})/) {
|
||||
$classes{$vendor}{$device} = $1;
|
||||
}
|
||||
# Ignore all other lines.
|
||||
}
|
||||
|
||||
# Find which vendors are "video" vendors.
|
||||
if ($infofile) {
|
||||
open(INFO, "<$infofile") || die "Can't open $infofile";
|
||||
while (<INFO>) {
|
||||
if (/^#define\s+PCI_VENDOR_.*0x([0-9a-fA-F]{4})/) {
|
||||
$vendor = $1;
|
||||
$vendor =~ tr/A-F/a-f/;
|
||||
$video{$vendor} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# This layout is quite different from that used in the old xf86PciInfo.h
|
||||
# file. One main difference is that the list is initialised at runtime.
|
||||
# It's currently a flat list. This could be improved.
|
||||
#
|
||||
|
||||
# Print out header information.
|
||||
|
||||
$proj = "XdotOrg";
|
||||
print "/* \$$proj\$ */
|
||||
|
||||
/*
|
||||
* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
|
||||
*
|
||||
* It is generated by pciid2c.pl using data from the following files:
|
||||
*
|
||||
* ../etc/pci.ids
|
||||
* ../etc/extrapci.ids
|
||||
* ../common/xf86PciInfo.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright © 2002 by the XFree86 Project, Inc.
|
||||
*
|
||||
* The pci.ids file and the data it contains are from the Linux PCI ID's
|
||||
* Project (http://pciids.sf.net/). It is maintained by Martin Mares
|
||||
* <mj\@ucw.cz> and other volunteers. The pci.ids file is licensed under
|
||||
* the BSD 3-clause or GPL version 2 or later licenses.
|
||||
*/
|
||||
|
||||
#include \"xf86PciInfo.h\"
|
||||
#ifndef NULL
|
||||
#define NULL (void *)0
|
||||
#endif
|
||||
|
||||
";
|
||||
|
||||
# The following #ifdefs are used:
|
||||
# - INIT_SUBSYS_INFO -- initialise subsystem data
|
||||
# - INIT_VENDOR_SUBSYS_INFO -- initialise a vendor<->subsystem table.
|
||||
# - VENDOR_INCLUDE_NONVIDEO -- include data for non-video vendors.
|
||||
|
||||
# Define static variables with all of the strings.
|
||||
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
}
|
||||
print "static const char pci_vendor_${vendor}[] = \"$vendors{$vendor}\";\n";
|
||||
foreach $device (sort keys %{$devices{$vendor}}) {
|
||||
print "static const char pci_device_${vendor}_${device}[] = " .
|
||||
"\"$devices{$vendor}{$device}\";\n";
|
||||
foreach $subsys (sort keys %{$devsubsystems{$vendor}{$device}}) {
|
||||
$s = $subsys;
|
||||
($v) = split /-/, $s;
|
||||
if ($infofile && !$video{$vendor} && $video{$v}) {
|
||||
print "#endif\n";
|
||||
}
|
||||
$s =~ s/-/_/;
|
||||
print "#ifdef INIT_SUBSYS_INFO\n";
|
||||
print "static const char pci_subsys_${vendor}_${device}_${s}[] = " .
|
||||
"\"$devsubsystems{$vendor}{$device}{$subsys}\";\n";
|
||||
print "#endif\n";
|
||||
if ($infofile && !$video{$vendor} && $video{$v}) {
|
||||
print "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#endif\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Pre-initialise the table structures (from the inner to the outer).
|
||||
|
||||
# First, the subsys structures.
|
||||
|
||||
print "#ifdef INIT_SUBSYS_INFO\n";
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
$pre = "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
} else {
|
||||
undef($pre);
|
||||
undef($post);
|
||||
}
|
||||
foreach $device (sort keys %{$devices{$vendor}}) {
|
||||
foreach $subsys (sort keys %{$devsubsystems{$vendor}{$device}}) {
|
||||
$s = $subsys;
|
||||
$s =~ tr/-/_/;
|
||||
($vid, $sid) = split /_/, $s;
|
||||
if ($pre) {
|
||||
print $pre;
|
||||
undef($pre);
|
||||
$post = "#endif\n";
|
||||
}
|
||||
if ($infofile && !$video{$vendor} && $video{$vid}) {
|
||||
print "#endif\n";
|
||||
}
|
||||
print "static const pciSubsystemInfo " .
|
||||
"pci_ss_info_${vendor}_${device}_$s =\n";
|
||||
print "\t{0x$vid, 0x$sid, pci_subsys_${vendor}_${device}_$s, 0};\n";
|
||||
print "#undef pci_ss_info_$s\n";
|
||||
print "#define pci_ss_info_$s pci_ss_info_${vendor}_${device}_$s\n";
|
||||
if ($infofile && !$video{$vendor} && $video{$vid}) {
|
||||
print "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($post) {
|
||||
print $post;
|
||||
undef($post);
|
||||
}
|
||||
}
|
||||
|
||||
# Next, the list of per vendor+device subsystem arrays
|
||||
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
$pre = "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
} else {
|
||||
undef($pre);
|
||||
undef($post);
|
||||
}
|
||||
foreach $device (sort keys %{$devices{$vendor}}) {
|
||||
if (scalar(keys %{$devsubsystems{$vendor}{$device}}) > 0) {
|
||||
if ($pre) {
|
||||
print $pre;
|
||||
undef($pre);
|
||||
$post = "#endif\n";
|
||||
}
|
||||
print "static const pciSubsystemInfo *pci_ss_list_${vendor}_${device}[] = {\n";
|
||||
foreach $sub (sort keys %{$devsubsystems{$vendor}{$device}}) {
|
||||
$sub =~ s/-/_/;
|
||||
print "\t&pci_ss_info_${vendor}_${device}_${sub},\n";
|
||||
}
|
||||
print "\tNULL\n};\n";
|
||||
} else {
|
||||
print "#define pci_ss_list_${vendor}_${device} NULL\n";
|
||||
}
|
||||
}
|
||||
if ($post) {
|
||||
print $post;
|
||||
undef($post);
|
||||
}
|
||||
}
|
||||
|
||||
# Next, the list of per vendor subsystem arrays
|
||||
|
||||
print "#ifdef INIT_VENDOR_SUBSYS_INFO\n";
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if (scalar(keys %{$subsystems{$vendor}}) > 0) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
}
|
||||
print "static const pciSubsystemInfo *pci_ss_list_${vendor}[] = {\n";
|
||||
foreach $sub (sort keys %{$subsystems{$vendor}}) {
|
||||
print "\t&pci_ss_info_${vendor}_${sub},\n";
|
||||
}
|
||||
print "\tNULL\n};\n";
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#endif\n";
|
||||
}
|
||||
} else {
|
||||
print "#define pci_ss_list_${vendor} NULL\n";
|
||||
}
|
||||
}
|
||||
print "#endif /* INIT_VENDOR_SUBSYS_INFO */\n";
|
||||
print "#endif /* INIT_SUBSYS_INFO */\n";
|
||||
|
||||
# Next the device structures
|
||||
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
$pre = "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
} else {
|
||||
undef($pre);
|
||||
undef($post);
|
||||
}
|
||||
foreach $device (sort keys %{$devices{$vendor}}) {
|
||||
if ($pre) {
|
||||
print $pre;
|
||||
undef($pre);
|
||||
$post = "#endif\n";
|
||||
}
|
||||
if ($classes{$vendor}{$device}) {
|
||||
$class = "0x$classes{$vendor}{$device}";
|
||||
} else {
|
||||
$class = "0";
|
||||
}
|
||||
print "static const pciDeviceInfo " .
|
||||
"pci_dev_info_${vendor}_${device} = {\n";
|
||||
print "\t0x$device, pci_device_${vendor}_${device},\n";
|
||||
print "#ifdef INIT_SUBSYS_INFO\n";
|
||||
print "\tpci_ss_list_${vendor}_${device},\n";
|
||||
print "#else\n";
|
||||
print "\tNULL,\n";
|
||||
print "#endif\n";
|
||||
print "\t$class\n};\n";
|
||||
}
|
||||
if ($post) {
|
||||
print $post;
|
||||
undef($post);
|
||||
}
|
||||
}
|
||||
|
||||
# Next, the list of per vendor device arrays
|
||||
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if (scalar(keys %{$devices{$vendor}}) > 0) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
}
|
||||
print "static const pciDeviceInfo *pci_dev_list_${vendor}[] = {\n";
|
||||
foreach $device (sort keys %{$devices{$vendor}}) {
|
||||
print "\t&pci_dev_info_${vendor}_${device},\n";
|
||||
}
|
||||
print "\tNULL\n};\n";
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#endif\n";
|
||||
}
|
||||
} else {
|
||||
print "#define pci_dev_list_${vendor} NULL\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Next, the main vendor list
|
||||
|
||||
print "
|
||||
static const pciVendorInfo pciVendorInfoList[] = {
|
||||
";
|
||||
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
}
|
||||
print "\t{0x$vendor, pci_vendor_$vendor, pci_dev_list_$vendor},\n";
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#endif\n";
|
||||
}
|
||||
}
|
||||
print "\t{0x0000, NULL, NULL}\n};\n";
|
||||
|
||||
# Finally, the main vendor/subsystem list
|
||||
|
||||
print "
|
||||
#if defined(INIT_VENDOR_SUBSYS_INFO) && defined(INIT_SUBSYS_INFO)
|
||||
static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
|
||||
";
|
||||
|
||||
foreach $vendor (sort keys %vendors) {
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#ifdef VENDOR_INCLUDE_NONVIDEO\n";
|
||||
}
|
||||
print "\t{0x$vendor, pci_vendor_$vendor, pci_ss_list_$vendor},\n";
|
||||
if ($infofile && !$video{$vendor}) {
|
||||
print "#endif\n";
|
||||
}
|
||||
}
|
||||
print "\t{0x0000, NULL, NULL}\n};\n";
|
||||
print "#endif\n";
|
|
@ -1,70 +0,0 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/scanpci/xf86PciData.h,v 1.3 2003/08/24 17:37:10 dawes Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2000-2002 by The XFree86 Project, Inc.
|
||||
*
|
||||
* 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).
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#ifndef PCI_DATA_H_
|
||||
#define PCI_DATA_H_
|
||||
|
||||
#define NOVENDOR 0xFFFF
|
||||
#define NODEVICE 0xFFFF
|
||||
#define NOSUBSYS 0xFFFF
|
||||
|
||||
typedef Bool (*ScanPciSetupProcPtr)(void);
|
||||
typedef void (*ScanPciCloseProcPtr)(void);
|
||||
typedef int (*ScanPciFindByDeviceProcPtr)(
|
||||
unsigned short vendor, unsigned short device,
|
||||
unsigned short svendor, unsigned short subsys,
|
||||
const char **vname, const char **dname,
|
||||
const char **svname, const char **sname);
|
||||
typedef int (*ScanPciFindBySubsysProcPtr)(
|
||||
unsigned short svendor, unsigned short subsys,
|
||||
const char **svname, const char **sname);
|
||||
|
||||
/*
|
||||
* Whoever loads this module needs to define these and initialise them
|
||||
* after loading.
|
||||
*/
|
||||
extern ScanPciSetupProcPtr xf86SetupPciIds;
|
||||
extern ScanPciCloseProcPtr xf86ClosePciIds;
|
||||
extern ScanPciFindByDeviceProcPtr xf86FindPciNamesByDevice;
|
||||
extern ScanPciFindBySubsysProcPtr xf86FindPciNamesBySubsys;
|
||||
|
||||
Bool ScanPciSetupPciIds(void);
|
||||
void ScanPciClosePciIds(void);
|
||||
int ScanPciFindPciNamesByDevice(unsigned short vendor, unsigned short device,
|
||||
unsigned short svendor, unsigned short subsys,
|
||||
const char **vname, const char **dname,
|
||||
const char **svname, const char **sname);
|
||||
int ScanPciFindPciNamesBySubsys(unsigned short svendor, unsigned short subsys,
|
||||
const char **svname, const char **sname);
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -1,67 +0,0 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/scanpci/xf86PciStr.h,v 1.2 2003/08/24 17:37:10 dawes Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2002 by The XFree86 Project, Inc.
|
||||
*
|
||||
* 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).
|
||||
*/
|
||||
|
||||
/*
|
||||
* Structs used to hold the pre-parsed pci.ids data. These are private
|
||||
* to the scanpci and pcidata modules.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#ifndef _XF86_PCISTR_H
|
||||
#define _XF86_PCISTR_H
|
||||
|
||||
typedef struct {
|
||||
unsigned short VendorID;
|
||||
unsigned short SubsystemID;
|
||||
const char *SubsystemName;
|
||||
unsigned short class;
|
||||
} pciSubsystemInfo;
|
||||
|
||||
typedef struct {
|
||||
unsigned short DeviceID;
|
||||
const char *DeviceName;
|
||||
const pciSubsystemInfo **Subsystem;
|
||||
unsigned short class;
|
||||
} pciDeviceInfo;
|
||||
|
||||
typedef struct {
|
||||
unsigned short VendorID;
|
||||
const char *VendorName;
|
||||
const pciDeviceInfo **Device;
|
||||
} pciVendorInfo;
|
||||
|
||||
typedef struct {
|
||||
unsigned short VendorID;
|
||||
const char *VendorName;
|
||||
const pciSubsystemInfo **Subsystem;
|
||||
} pciVendorSubsysInfo;
|
||||
|
||||
#endif /* _XF86_PCISTR_H */
|
|
@ -1,346 +0,0 @@
|
|||
/*
|
||||
* Display the Subsystem Vendor Id and Subsystem Id in order to identify
|
||||
* the cards installed in this computer
|
||||
*
|
||||
* A lot of this comes from Robin Cutshaw's scanpci
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1995-2002 by The XFree86 Project, Inc.
|
||||
*
|
||||
* 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).
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is used to build both the scanpci and pcidata modules.
|
||||
* The interfaces have changed compared with XFree86 4.2.0 and earlier.
|
||||
* The data is no longer exported directly. Lookup functions are provided.
|
||||
* This means that the data format can change in the future without affecting
|
||||
* the exported interfaces.
|
||||
*
|
||||
* The namespaces for pcidata and scanpci clash, so both modules can't be
|
||||
* loaded at the same time. The X server should only load the scanpci module
|
||||
* when run with the '-scanpci' flag. The main difference between the
|
||||
* two modules is size. pcidata only holds the subset of data that is
|
||||
* "interesting" to the X server. "Interesting" is determined by the
|
||||
* PCI_VENDOR_* defines in ../common/xf86PciInfo.h.
|
||||
*/
|
||||
|
||||
|
||||
/* XXX This is including a lot of stuff that modules should not include! */
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include "os.h"
|
||||
#include "xf86.h"
|
||||
#include "xf86Priv.h"
|
||||
#include "xf86Pci.h"
|
||||
#include "xf86_OSproc.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef PCIDATA
|
||||
#define VENDOR_INCLUDE_NONVIDEO
|
||||
#endif
|
||||
#define INIT_SUBSYS_INFO
|
||||
#define INIT_VENDOR_SUBSYS_INFO
|
||||
|
||||
#include "xf86PciStr.h"
|
||||
#include "xf86PciIds.h"
|
||||
#include "xf86ScanPci.h"
|
||||
|
||||
#include "xf86Module.h"
|
||||
|
||||
#ifdef PCIDATA
|
||||
|
||||
static XF86ModuleVersionInfo pciDataVersRec = {
|
||||
"pcidata",
|
||||
MODULEVENDORSTRING,
|
||||
MODINFOSTRING1,
|
||||
MODINFOSTRING2,
|
||||
XORG_VERSION_CURRENT,
|
||||
1, 0, 0,
|
||||
ABI_CLASS_VIDEODRV,
|
||||
ABI_VIDEODRV_VERSION,
|
||||
NULL,
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
_X_EXPORT XF86ModuleData pcidataModuleData = { &pciDataVersRec, NULL, NULL };
|
||||
|
||||
#else
|
||||
|
||||
static XF86ModuleVersionInfo scanPciVersRec = {
|
||||
"scanpci",
|
||||
MODULEVENDORSTRING,
|
||||
MODINFOSTRING1,
|
||||
MODINFOSTRING2,
|
||||
XORG_VERSION_CURRENT,
|
||||
1, 0, 0,
|
||||
ABI_CLASS_VIDEODRV,
|
||||
ABI_VIDEODRV_VERSION,
|
||||
NULL,
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
_X_EXPORT XF86ModuleData scanpciModuleData = { &scanPciVersRec, NULL, NULL };
|
||||
|
||||
#endif /* PCIDATA */
|
||||
|
||||
/* Initialisation/Close hooks, in case they're ever needed. */
|
||||
Bool
|
||||
ScanPciSetupPciIds(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
ScanPciClosePciIds(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* The return value is the number of strings found, or -1 for an error.
|
||||
* Requested strings that aren't found are set to NULL.
|
||||
*/
|
||||
|
||||
int
|
||||
ScanPciFindPciNamesByDevice(unsigned short vendor, unsigned short device,
|
||||
unsigned short svendor, unsigned short subsys,
|
||||
const char **vname, const char **dname,
|
||||
const char **svname, const char **sname)
|
||||
{
|
||||
int i, j, k;
|
||||
const pciDeviceInfo **pDev;
|
||||
const pciSubsystemInfo **pSub;
|
||||
|
||||
/* It's an error to not provide the Vendor */
|
||||
if (vendor == NOVENDOR)
|
||||
return -1;
|
||||
|
||||
/* Initialise returns requested/provided to NULL */
|
||||
if (vname)
|
||||
*vname = NULL;
|
||||
if (device != NODEVICE && dname)
|
||||
*dname = NULL;
|
||||
if (svendor != NOVENDOR && svname)
|
||||
*svname = NULL;
|
||||
if (subsys != NOSUBSYS && sname)
|
||||
*sname = NULL;
|
||||
|
||||
for (i = 0; pciVendorInfoList[i].VendorName; i++) {
|
||||
if (vendor == pciVendorInfoList[i].VendorID) {
|
||||
if (vname) {
|
||||
*vname = pciVendorInfoList[i].VendorName;
|
||||
}
|
||||
if (device == NODEVICE) {
|
||||
return 1;
|
||||
}
|
||||
pDev = pciVendorInfoList[i].Device;
|
||||
if (!pDev) {
|
||||
return 1;
|
||||
}
|
||||
for (j = 0; pDev[j]; j++) {
|
||||
if (device == pDev[j]->DeviceID) {
|
||||
if (dname) {
|
||||
*dname = pDev[j]->DeviceName;
|
||||
}
|
||||
if (svendor == NOVENDOR) {
|
||||
return 2;
|
||||
}
|
||||
for (k = 0; pciVendorInfoList[k].VendorName; k++) {
|
||||
if (svendor &&
|
||||
svendor == pciVendorInfoList[k].VendorID) {
|
||||
if (svname) {
|
||||
*svname = pciVendorInfoList[k].VendorName;
|
||||
}
|
||||
if (subsys == NOSUBSYS) {
|
||||
return 3;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!pciVendorInfoList[k].VendorName) {
|
||||
return 2;
|
||||
}
|
||||
pSub = pDev[j]->Subsystem;
|
||||
if (!pSub) {
|
||||
return 3;
|
||||
}
|
||||
for (k = 0; pSub[k]; k++) {
|
||||
if (svendor == pSub[k]->VendorID &&
|
||||
subsys == pSub[k]->SubsystemID) {
|
||||
if (sname)
|
||||
*sname = pSub[k]->SubsystemName;
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
/* No vendor/subsys match */
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
/* No device match */
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
/* No vendor match */
|
||||
return 0;
|
||||
}
|
||||
|
||||
Bool
|
||||
ScanPciFindPciNamesBySubsys(unsigned short svendor, unsigned short subsys,
|
||||
const char **svname, const char **sname)
|
||||
{
|
||||
int i, j;
|
||||
const pciSubsystemInfo **pSub;
|
||||
|
||||
/* It's an error to not provide the Vendor */
|
||||
if (svendor == NOVENDOR)
|
||||
return -1;
|
||||
|
||||
/* Initialise returns requested/provided to NULL */
|
||||
if (svname)
|
||||
*svname = NULL;
|
||||
if (subsys != NOSUBSYS && sname)
|
||||
*sname = NULL;
|
||||
|
||||
for (i = 0; pciVendorSubsysInfoList[i].VendorName; i++) {
|
||||
if (svendor == pciVendorSubsysInfoList[i].VendorID) {
|
||||
if (svname) {
|
||||
*svname = pciVendorSubsysInfoList[i].VendorName;
|
||||
}
|
||||
if (subsys == NOSUBSYS) {
|
||||
return 1;
|
||||
}
|
||||
pSub = pciVendorSubsysInfoList[i].Subsystem;
|
||||
if (!pSub) {
|
||||
return 1;
|
||||
}
|
||||
for (j = 0; pSub[j]; j++) {
|
||||
if (subsys == pSub[j]->SubsystemID) {
|
||||
if (sname) {
|
||||
*sname = pSub[j]->SubsystemName;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* No subsys match */
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
/* No vendor match */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef PCIDATA
|
||||
void
|
||||
ScanPciDisplayPCICardInfo(int verbosity)
|
||||
{
|
||||
pciConfigPtr pcrp, *pcrpp;
|
||||
int i;
|
||||
|
||||
xf86EnableIO();
|
||||
pcrpp = xf86scanpci(0);
|
||||
|
||||
if (pcrpp == NULL) {
|
||||
xf86MsgVerb(X_NONE,0,"No PCI info available\n");
|
||||
return;
|
||||
}
|
||||
xf86MsgVerb(X_NONE,0,"Probing for PCI devices (Bus:Device:Function)\n\n");
|
||||
for (i = 0; (pcrp = pcrpp[i]); i++) {
|
||||
const char *svendorname = NULL, *subsysname = NULL;
|
||||
const char *vendorname = NULL, *devicename = NULL;
|
||||
Bool noCard = FALSE;
|
||||
const char *prefix1 = "", *prefix2 = "";
|
||||
|
||||
xf86MsgVerb(X_NONE, -verbosity, "(%d:%d:%d) ",
|
||||
pcrp->busnum, pcrp->devnum, pcrp->funcnum);
|
||||
|
||||
/*
|
||||
* Lookup as much as we can about the device.
|
||||
*/
|
||||
if (pcrp->pci_subsys_vendor || pcrp->pci_subsys_card) {
|
||||
ScanPciFindPciNamesByDevice(pcrp->pci_vendor, pcrp->pci_device,
|
||||
NOVENDOR, NOSUBSYS,
|
||||
&vendorname, &devicename, NULL, NULL);
|
||||
} else {
|
||||
ScanPciFindPciNamesByDevice(pcrp->pci_vendor, pcrp->pci_device,
|
||||
pcrp->pci_subsys_vendor,
|
||||
pcrp->pci_subsys_card,
|
||||
&vendorname, &devicename,
|
||||
&svendorname, &subsysname);
|
||||
}
|
||||
|
||||
if (svendorname)
|
||||
xf86MsgVerb(X_NONE, -verbosity, "%s ", svendorname);
|
||||
if (subsysname)
|
||||
xf86MsgVerb(X_NONE, -verbosity, "%s ", subsysname);
|
||||
if (svendorname && !subsysname) {
|
||||
if (pcrp->pci_subsys_card && pcrp->pci_subsys_card != NOSUBSYS) {
|
||||
xf86MsgVerb(X_NONE, -verbosity, "unknown card (0x%04x) ",
|
||||
pcrp->pci_subsys_card);
|
||||
} else {
|
||||
xf86MsgVerb(X_NONE, -verbosity, "card ");
|
||||
}
|
||||
}
|
||||
if (!svendorname && !subsysname) {
|
||||
/*
|
||||
* We didn't find a text representation of the information
|
||||
* about the card.
|
||||
*/
|
||||
if (pcrp->pci_subsys_vendor || pcrp->pci_subsys_card) {
|
||||
/*
|
||||
* If there was information and we just couldn't interpret
|
||||
* it, print it out as unknown, anyway.
|
||||
*/
|
||||
xf86MsgVerb(X_NONE, -verbosity,
|
||||
"unknown card (0x%04x/0x%04x) ",
|
||||
pcrp->pci_subsys_vendor, pcrp->pci_subsys_card);
|
||||
} else
|
||||
noCard = TRUE;
|
||||
}
|
||||
if (!noCard) {
|
||||
prefix1 = "using a ";
|
||||
prefix2 = "using an ";
|
||||
}
|
||||
if (vendorname && devicename) {
|
||||
xf86MsgVerb(X_NONE, -verbosity,"%s%s %s\n", prefix1, vendorname,
|
||||
devicename);
|
||||
} else if (vendorname) {
|
||||
xf86MsgVerb(X_NONE, -verbosity,
|
||||
"%sunknown chip (DeviceId 0x%04x) from %s\n",
|
||||
prefix2, pcrp->pci_device, vendorname);
|
||||
} else {
|
||||
xf86MsgVerb(X_NONE, -verbosity,
|
||||
"%sunknown chipset(0x%04x/0x%04x)\n",
|
||||
prefix2, pcrp->pci_vendor, pcrp->pci_device);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/scanpci/xf86ScanPci.h,v 1.3 2003/08/24 17:37:10 dawes Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2000-2002 by The XFree86 Project, Inc.
|
||||
*
|
||||
* 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).
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#ifndef SCANPCI_H_
|
||||
#define SCANPCI_H_
|
||||
|
||||
#include "xf86PciData.h"
|
||||
|
||||
typedef void (*ScanPciDisplayCardInfoProcPtr)(int verbosity);
|
||||
|
||||
/*
|
||||
* Whoever loads this module needs to define these and initialise them
|
||||
* after loading.
|
||||
*/
|
||||
|
||||
extern ScanPciDisplayCardInfoProcPtr xf86DisplayPCICardInfo;
|
||||
|
||||
void ScanPciDisplayPCICardInfo(int verbosity);
|
||||
|
||||
#endif
|
3
hw/xfree86/utils/pcitweak/.gitignore
vendored
3
hw/xfree86/utils/pcitweak/.gitignore
vendored
|
@ -1,3 +0,0 @@
|
|||
pcitweak.1
|
||||
pcitweak.1x
|
||||
|
|
@ -1,60 +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.
|
||||
#
|
||||
|
||||
bin_PROGRAMS = pcitweak
|
||||
|
||||
XFREE86_SRCDIR = $(top_srcdir)/hw/xfree86
|
||||
DUMMYLIB_SRCDIR = $(XFREE86_SRCDIR)/dummylib
|
||||
|
||||
INCLUDES = $(XORG_INCS) -I$(DUMMYLIB_SRCDIR)
|
||||
|
||||
pcitweak_CFLAGS = $(XORG_CFLAGS)
|
||||
pcitweak_LDADD = \
|
||||
../../os-support/libxorgos.la \
|
||||
../../dummylib/libdummy-nonserver.a \
|
||||
${SYS_LIBS}
|
||||
|
||||
pcitweak_SOURCES = \
|
||||
pcitweak.c
|
||||
|
||||
appmandir = $(APP_MAN_DIR)
|
||||
|
||||
appman_PRE = pcitweak.man
|
||||
appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
|
||||
|
||||
include $(top_srcdir)/cpprules.in
|
||||
|
||||
EXTRA_DIST = pcitweak.man.pre
|
||||
BUILT_SOURCES = $(appman_PRE)
|
||||
CLEANFILES = $(appman_PRE) $(appman_DATA)
|
||||
|
||||
SUFFIXES += .$(APP_MAN_SUFFIX) .man
|
||||
|
||||
.man.$(APP_MAN_SUFFIX):
|
||||
-rm -f $@
|
||||
$(LN_S) $< $@
|
|
@ -1,242 +0,0 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/pcitweak.c,v 1.17 2003/08/24 17:37:01 dawes Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1999-2002 by The XFree86 Project, Inc.
|
||||
*
|
||||
* 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).
|
||||
*/
|
||||
|
||||
/*
|
||||
* pcitweak.c
|
||||
*
|
||||
* Author: David Dawes <dawes@xfree86.org>
|
||||
*/
|
||||
|
||||
#include <X11/X.h>
|
||||
#include "os.h"
|
||||
#include "xf86.h"
|
||||
#include "xf86Priv.h"
|
||||
#include "xf86_OSproc.h"
|
||||
#include "xf86Pci.h"
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef __linux__
|
||||
/* to get getopt on Linux */
|
||||
#ifndef __USE_POSIX2
|
||||
#define __USE_POSIX2
|
||||
#endif
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
#if defined(ISC) || defined(Lynx)
|
||||
extern char *optarg;
|
||||
extern int optind, opterr;
|
||||
#endif
|
||||
|
||||
pciVideoPtr *xf86PciVideoInfo = NULL;
|
||||
|
||||
static void usage(void);
|
||||
static Bool parsePciBusString(const char *id, int *bus, int *device, int *func);
|
||||
static char *myname = NULL;
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int c;
|
||||
PCITAG tag;
|
||||
int bus, device, func;
|
||||
Bool list = FALSE, rd = FALSE, wr = FALSE;
|
||||
Bool byte = FALSE, halfword = FALSE;
|
||||
int offset = 0;
|
||||
CARD32 value = 0;
|
||||
char *id = NULL, *end;
|
||||
|
||||
myname = argv[0];
|
||||
while ((c = getopt(argc, argv, "bhlr:w:")) != -1) {
|
||||
switch (c) {
|
||||
case 'b':
|
||||
byte = TRUE;
|
||||
break;
|
||||
case 'h':
|
||||
halfword = TRUE;
|
||||
break;
|
||||
case 'l':
|
||||
list = TRUE;
|
||||
break;
|
||||
case 'r':
|
||||
rd = TRUE;
|
||||
id = optarg;
|
||||
break;
|
||||
case 'w':
|
||||
wr = TRUE;
|
||||
id = optarg;
|
||||
break;
|
||||
case '?':
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
if (list) {
|
||||
xf86Verbose = 2;
|
||||
xf86EnableIO();
|
||||
xf86scanpci(0);
|
||||
xf86DisableIO();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (rd && wr)
|
||||
usage();
|
||||
if (wr && argc != 2)
|
||||
usage();
|
||||
if (rd && argc != 1)
|
||||
usage();
|
||||
if (byte && halfword)
|
||||
usage();
|
||||
|
||||
if (rd || wr) {
|
||||
if (!parsePciBusString(id, &bus, &device, &func)) {
|
||||
fprintf(stderr, "%s: Bad PCI ID string\n", myname);
|
||||
usage();
|
||||
}
|
||||
offset = strtoul(argv[0], &end, 0);
|
||||
if (*end != '\0') {
|
||||
fprintf(stderr, "%s: Bad offset\n", myname);
|
||||
usage();
|
||||
}
|
||||
if (halfword) {
|
||||
if (offset % 2) {
|
||||
fprintf(stderr, "%s: offset must be a multiple of two\n",
|
||||
myname);
|
||||
exit(1);
|
||||
}
|
||||
} else if (!byte) {
|
||||
if (offset % 4) {
|
||||
fprintf(stderr, "%s: offset must be a multiple of four\n",
|
||||
myname);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
usage();
|
||||
}
|
||||
|
||||
if (wr) {
|
||||
value = strtoul(argv[1], &end, 0);
|
||||
if (*end != '\0') {
|
||||
fprintf(stderr, "%s: Bad value\n", myname);
|
||||
usage();
|
||||
}
|
||||
}
|
||||
|
||||
xf86EnableIO();
|
||||
|
||||
/*
|
||||
* This is needed to setup all the buses. Otherwise secondary buses
|
||||
* can't be accessed.
|
||||
*/
|
||||
xf86scanpci(0);
|
||||
|
||||
tag = pciTag(bus, device, func);
|
||||
if (rd) {
|
||||
if (byte) {
|
||||
printf("0x%02x\n", (unsigned int)pciReadByte(tag, offset) & 0xFF);
|
||||
} else if (halfword) {
|
||||
printf("0x%04x\n", (unsigned int)pciReadWord(tag, offset) & 0xFFFF);
|
||||
} else {
|
||||
printf("0x%08lx\n", (unsigned long)pciReadLong(tag, offset));
|
||||
}
|
||||
} else if (wr) {
|
||||
if (byte) {
|
||||
pciWriteByte(tag, offset, value & 0xFF);
|
||||
} else if (halfword) {
|
||||
pciWriteWord(tag, offset, value & 0xFFFF);
|
||||
} else {
|
||||
pciWriteLong(tag, offset, value);
|
||||
}
|
||||
}
|
||||
|
||||
xf86DisableIO();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static void
|
||||
usage()
|
||||
{
|
||||
fprintf(stderr, "usage:\tpcitweak -l\n"
|
||||
"\tpcitweak -r ID [-b | -h] offset\n"
|
||||
"\tpcitweak -w ID [-b | -h] offset value\n"
|
||||
"\n"
|
||||
"\t\t-l -- list\n"
|
||||
"\t\t-r -- read\n"
|
||||
"\t\t-w -- write\n"
|
||||
"\t\t-b -- read/write a single byte\n"
|
||||
"\t\t-h -- read/write a single halfword (16 bit)\n"
|
||||
"\t\tID -- PCI ID string in form bus:dev:func "
|
||||
"(all in hex)\n");
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
Bool
|
||||
parsePciBusString(const char *busID, int *bus, int *device, int *func)
|
||||
{
|
||||
/*
|
||||
* The format is assumed to be "bus:device:func", where bus, device
|
||||
* and func are hexadecimal integers. func may be omitted and assumed to
|
||||
* be zero, although it doing this isn't encouraged.
|
||||
*/
|
||||
|
||||
char *p, *s, *end;
|
||||
|
||||
s = strdup(busID);
|
||||
p = strtok(s, ":");
|
||||
if (p == NULL || *p == 0)
|
||||
return FALSE;
|
||||
*bus = strtoul(p, &end, 16);
|
||||
if (*end != '\0')
|
||||
return FALSE;
|
||||
p = strtok(NULL, ":");
|
||||
if (p == NULL || *p == 0)
|
||||
return FALSE;
|
||||
*device = strtoul(p, &end, 16);
|
||||
if (*end != '\0')
|
||||
return FALSE;
|
||||
*func = 0;
|
||||
p = strtok(NULL, ":");
|
||||
if (p == NULL || *p == 0)
|
||||
return TRUE;
|
||||
*func = strtoul(p, &end, 16);
|
||||
if (*end != '\0')
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#include "xf86getpagesize.c"
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
.\" $XFree86: xc/programs/Xserver/hw/xfree86/etc/pcitweak.man,v 3.3 2001/01/27 18:20:56 dawes Exp $
|
||||
.TH PCITWEAK 1 __vendorversion__
|
||||
.SH NAME
|
||||
pcitweak - read/write PCI config space
|
||||
.SH SYNOPSIS
|
||||
.B pcitweak
|
||||
.B \-l
|
||||
.br
|
||||
.B pcitweak
|
||||
.B \-r
|
||||
.I PCI-ID
|
||||
.RB [ \-b | \-h ]
|
||||
.I offset
|
||||
.br
|
||||
.B pcitweak
|
||||
.B \-w
|
||||
.I PCI-ID
|
||||
.RB [ \-b | \-h ]
|
||||
.I offset
|
||||
.I value
|
||||
.SH DESCRIPTION
|
||||
.I Pcitweak
|
||||
is a utility that can be used to examine or change registers in the PCI
|
||||
configuration space. On most platforms
|
||||
.I pcitweak
|
||||
can only be run by the root user.
|
||||
.SH OPTIONS
|
||||
.TP 8
|
||||
.B \-l
|
||||
Probe the PCI buses and print a line for each detected device. Each line
|
||||
contains the bus location (bus:device:function), chip vendor/device, card
|
||||
(subsystem) vendor/card, revision, class and header type. All values
|
||||
printed are in hexadecimal.
|
||||
.TP 8
|
||||
.BI "\-r " PCI-ID
|
||||
Read the PCI configuration space register at
|
||||
.I offset
|
||||
for the PCI device at bus location
|
||||
.IR PCI-ID .
|
||||
.I PCI-ID
|
||||
should be given in the form bus:device:function, with each value in
|
||||
hexadecimal. By default, a 32-bit register is read.
|
||||
.TP 8
|
||||
.BI "\-w " PCI-ID
|
||||
Write
|
||||
.I value
|
||||
to the PCI configuration space register at
|
||||
.I offset
|
||||
for the PCI device at bus location
|
||||
.IR PCI-ID .
|
||||
.I PCI-ID
|
||||
should be given in the form bus:device:function, with each value in
|
||||
hexadecimal. By default, a 32-bit register is written.
|
||||
.TP 8
|
||||
.B \-b
|
||||
Read or write an 8-bit value (byte).
|
||||
.TP 8
|
||||
.B \-h
|
||||
Read or write a 16-bit value (halfword).
|
||||
.SH "SEE ALSO"
|
||||
scanpci(1)
|
||||
.SH AUTHORS
|
||||
David Dawes
|
||||
.RI ( dawes@xfree86.org ).
|
2
hw/xfree86/utils/scanpci/.gitignore
vendored
2
hw/xfree86/utils/scanpci/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
scanpci.1
|
||||
scanpci.1x
|
|
@ -1,62 +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.
|
||||
#
|
||||
|
||||
bin_PROGRAMS = scanpci
|
||||
|
||||
XFREE86_SRCDIR = $(top_srcdir)/hw/xfree86
|
||||
SCANPCI_SRCDIR = $(XFREE86_SRCDIR)/scanpci
|
||||
DUMMYLIB_SRCDIR = $(XFREE86_SRCDIR)/dummylib
|
||||
|
||||
INCLUDES = $(XORG_INCS) -I$(SCANPCI_SRCDIR) -I$(DUMMYLIB_SRCDIR)
|
||||
|
||||
scanpci_CFLAGS = $(XORG_CFLAGS)
|
||||
scanpci_LDADD = \
|
||||
../../scanpci/libscanpci.la \
|
||||
../../os-support/libxorgos.la \
|
||||
../../dummylib/libdummy-nonserver.a \
|
||||
${SYS_LIBS}
|
||||
|
||||
scanpci_SOURCES = \
|
||||
scanpci.c
|
||||
|
||||
appmandir = $(APP_MAN_DIR)
|
||||
|
||||
appman_PRE = scanpci.man
|
||||
appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
|
||||
|
||||
include $(top_srcdir)/cpprules.in
|
||||
|
||||
EXTRA_DIST = scanpci.man.pre
|
||||
BUILT_SOURCES = $(appman_PRE)
|
||||
CLEANFILES = $(appman_PRE) $(appman_DATA)
|
||||
|
||||
SUFFIXES += .$(APP_MAN_SUFFIX) .man
|
||||
|
||||
.man.$(APP_MAN_SUFFIX):
|
||||
-rm -f $@
|
||||
$(LN_S) $< $@
|
|
@ -1,780 +0,0 @@
|
|||
/*
|
||||
* Copyright 2000 by Egbert Eich
|
||||
* Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
|
||||
* Copyright 2002 by David Dawes
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the names of the above listed copyright holder(s)
|
||||
* not be used in advertising or publicity pertaining to distribution of
|
||||
* the software without specific, written prior permission. The above listed
|
||||
* copyright holder(s) make(s) no representations about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*
|
||||
* THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
|
||||
* TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
|
||||
* LIABLE FOR 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.
|
||||
*
|
||||
*/
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.c,v 3.91tsi Exp $ */
|
||||
|
||||
#include <X11/X.h>
|
||||
#include "os.h"
|
||||
#include "xf86.h"
|
||||
#include "xf86Priv.h"
|
||||
#include "xf86_OSproc.h"
|
||||
#include "xf86Pci.h"
|
||||
#include "xf86PciInfo.h"
|
||||
#include "xf86ScanPci.h"
|
||||
#include "dummylib.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef __linux__
|
||||
/* to get getopt on Linux */
|
||||
#ifndef __USE_POSIX2
|
||||
#define __USE_POSIX2
|
||||
#endif
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
|
||||
#if defined(ISC) || defined(Lynx)
|
||||
extern char *optarg;
|
||||
extern int optind, opterr;
|
||||
#endif
|
||||
|
||||
pciVideoPtr *xf86PciVideoInfo = NULL;
|
||||
|
||||
static void usage(void);
|
||||
static void identify_card(pciConfigPtr pcr, int verbose);
|
||||
static void print_default_class(pciConfigPtr pcr);
|
||||
static void print_bridge_pci_class(pciConfigPtr pcr);
|
||||
static void print_mach64(pciConfigPtr pcr);
|
||||
static void print_i128(pciConfigPtr pcr);
|
||||
static void print_dc21050(pciConfigPtr pcr);
|
||||
static void print_simba(pciConfigPtr pcr);
|
||||
static void print_460gx_sac(pciConfigPtr pcr);
|
||||
static void print_460gx_pxb(pciConfigPtr pcr);
|
||||
static void print_460gx_gxb(pciConfigPtr pcr);
|
||||
|
||||
#define MAX_DEV_PER_VENDOR 40
|
||||
|
||||
typedef struct {
|
||||
unsigned int Vendor;
|
||||
struct {
|
||||
int DeviceID;
|
||||
void(*func)(pciConfigPtr);
|
||||
} Device[MAX_DEV_PER_VENDOR];
|
||||
} pciVendorDevFuncInfo;
|
||||
|
||||
static pciVendorDevFuncInfo vendorDeviceFuncInfo[] = {
|
||||
{ PCI_VENDOR_ATI, {
|
||||
{ PCI_CHIP_MACH64CT, print_mach64 },
|
||||
{ PCI_CHIP_MACH64CX, print_mach64 },
|
||||
{ PCI_CHIP_MACH64ET, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GB, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GD, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GI, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GL, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GM, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GN, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GO, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GP, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GQ, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GR, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GS, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GT, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GU, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GV, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GW, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GX, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GY, print_mach64 },
|
||||
{ PCI_CHIP_MACH64GZ, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LB, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LD, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LG, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LI, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LM, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LN, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LP, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LQ, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LR, print_mach64 },
|
||||
{ PCI_CHIP_MACH64LS, print_mach64 },
|
||||
{ PCI_CHIP_MACH64VT, print_mach64 },
|
||||
{ PCI_CHIP_MACH64VU, print_mach64 },
|
||||
{ PCI_CHIP_MACH64VV, print_mach64 },
|
||||
{ 0x0000, NULL } } },
|
||||
{ PCI_VENDOR_DIGITAL, {
|
||||
{ PCI_CHIP_DC21050, print_dc21050},
|
||||
{ 0x0000, NULL } } },
|
||||
{ PCI_VENDOR_NUMNINE, {
|
||||
{ PCI_CHIP_I128, print_i128 },
|
||||
{ PCI_CHIP_I128_2, print_i128 },
|
||||
{ PCI_CHIP_I128_T2R, print_i128 },
|
||||
{ PCI_CHIP_I128_T2R4, print_i128 },
|
||||
{ 0x0000, NULL } } },
|
||||
{ PCI_VENDOR_SUN, {
|
||||
{ PCI_CHIP_SIMBA, print_simba },
|
||||
{ 0x0000, NULL } } },
|
||||
{ PCI_VENDOR_INTEL, {
|
||||
{ PCI_CHIP_460GX_SAC, print_460gx_sac },
|
||||
{ PCI_CHIP_460GX_PXB, print_460gx_pxb },
|
||||
{ PCI_CHIP_460GX_GXB_1, print_460gx_gxb },
|
||||
{ PCI_CHIP_460GX_WXB, print_460gx_pxb }, /* Uncertain */
|
||||
{ 0x0000, NULL } } },
|
||||
{ 0x0000, {
|
||||
{ 0x0000, NULL } } }
|
||||
};
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
printf("Usage: scanpci [-v12OfV]\n");
|
||||
printf(" -v print config space\n");
|
||||
printf(" -1 config type 1\n");
|
||||
printf(" -2 config type 2\n");
|
||||
printf(" -O use OS config support\n");
|
||||
printf(" -f force config type\n");
|
||||
printf(" -V set message verbosity level\n");
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
pciConfigPtr *pcrpp = NULL;
|
||||
int Verbose = 0;
|
||||
int i = 0;
|
||||
int force = 0;
|
||||
int c;
|
||||
|
||||
xf86Info.pciFlags = PCIProbe1;
|
||||
|
||||
while ((c = getopt(argc, argv, "?v12OfV:")) != -1)
|
||||
switch(c) {
|
||||
case 'v':
|
||||
Verbose = 1;
|
||||
break;
|
||||
case '1':
|
||||
xf86Info.pciFlags = PCIProbe1;
|
||||
break;
|
||||
case '2':
|
||||
xf86Info.pciFlags = PCIProbe2;
|
||||
break;
|
||||
case 'O':
|
||||
xf86Info.pciFlags = PCIOsConfig;
|
||||
break;
|
||||
case 'f':
|
||||
force = 1;
|
||||
break;
|
||||
case 'V':
|
||||
xf86Verbose = atoi(optarg);
|
||||
break;
|
||||
case '?':
|
||||
default:
|
||||
usage();
|
||||
exit (1);
|
||||
break;
|
||||
}
|
||||
|
||||
if (force)
|
||||
switch (xf86Info.pciFlags) {
|
||||
case PCIProbe1:
|
||||
xf86Info.pciFlags = PCIForceConfig1;
|
||||
break;
|
||||
case PCIProbe2:
|
||||
xf86Info.pciFlags = PCIForceConfig2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
pcrpp = xf86scanpci(0);
|
||||
|
||||
if (!pcrpp) {
|
||||
printf("No PCI devices found\n");
|
||||
xf86DisableIO();
|
||||
exit (1);
|
||||
}
|
||||
|
||||
while (pcrpp[i])
|
||||
identify_card(pcrpp[i++],Verbose);
|
||||
|
||||
xf86DisableIO();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static void
|
||||
identify_card(pciConfigPtr pcr, int verbose)
|
||||
{
|
||||
int i, j;
|
||||
int foundit = 0;
|
||||
int foundvendor = 0;
|
||||
const char *vname = NULL, *dname = NULL, *svname = NULL, *sname = NULL;
|
||||
|
||||
pciVendorDevFuncInfo *vdf = vendorDeviceFuncInfo;
|
||||
|
||||
if (!ScanPciSetupPciIds()) {
|
||||
fprintf(stderr, "xf86SetupPciIds() failed\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("\npci bus 0x%04x cardnum 0x%02x function 0x%02x:"
|
||||
" vendor 0x%04x device 0x%04x\n",
|
||||
pcr->busnum, pcr->devnum, pcr->funcnum,
|
||||
pcr->pci_vendor, pcr->pci_device);
|
||||
|
||||
ScanPciFindPciNamesByDevice(pcr->pci_vendor, pcr->pci_device,
|
||||
pcr->pci_subsys_vendor, pcr->pci_subsys_card,
|
||||
&vname, &dname, &svname, &sname);
|
||||
|
||||
if (vname) {
|
||||
printf(" %s ", vname);
|
||||
if (dname) {
|
||||
printf("%s", dname);
|
||||
foundit = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundit)
|
||||
printf(" Device unknown\n");
|
||||
else {
|
||||
printf("\n");
|
||||
if (verbose) {
|
||||
for (i = 0; vdf[i].Vendor; i++) {
|
||||
if (vdf[i].Vendor == pcr->pci_vendor) {
|
||||
for (j = 0; vdf[i].Device[j].DeviceID; j++) {
|
||||
if (vdf[i].Device[j].DeviceID == pcr->pci_device) {
|
||||
(*vdf[i].Device[j].func)(pcr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (verbose && !(pcr->pci_header_type & 0x7f) &&
|
||||
(pcr->pci_subsys_vendor != 0 || pcr->pci_subsys_card != 0) &&
|
||||
((pcr->pci_subsys_vendor != NOVENDOR)
|
||||
|| (pcr->pci_subsys_card != NOSUBSYS)) &&
|
||||
(pcr->pci_vendor != pcr->pci_subsys_vendor ||
|
||||
pcr->pci_device != pcr->pci_subsys_card)) {
|
||||
foundit = 0;
|
||||
foundvendor = 0;
|
||||
printf(" CardVendor 0x%04x card 0x%04x",
|
||||
pcr->pci_subsys_vendor, pcr->pci_subsys_card);
|
||||
if (svname) {
|
||||
printf(" (%s", svname);
|
||||
foundvendor = 1;
|
||||
if (sname) {
|
||||
printf(" %s)", sname);
|
||||
foundit = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundit) {
|
||||
if (!foundvendor)
|
||||
printf(" (");
|
||||
else
|
||||
printf(", ");
|
||||
printf("Card unknown)");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class, pcr->pci_prog_if,
|
||||
pcr->pci_rev_id);
|
||||
if ((pcr->pci_base_class == PCI_CLASS_BRIDGE) &&
|
||||
(pcr->pci_sub_class == PCI_SUBCLASS_BRIDGE_PCI))
|
||||
print_bridge_pci_class(pcr);
|
||||
else
|
||||
print_default_class(pcr);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_default_class(pciConfigPtr pcr)
|
||||
{
|
||||
printf(" BIST 0x%02x HEADER 0x%02x LATENCY 0x%02x CACHE 0x%02x\n",
|
||||
pcr->pci_bist, pcr->pci_header_type, pcr->pci_latency_timer,
|
||||
pcr->pci_cache_line_size);
|
||||
if (pcr->pci_base0) {
|
||||
if ((pcr->pci_base0 & 0x7) == 0x4) {
|
||||
printf(" BASE0 0x%08x%08x addr 0x%08x%08x MEM%s 64BIT\n",
|
||||
(int)pcr->pci_base1, (int)pcr->pci_base0,
|
||||
(int)pcr->pci_base1,
|
||||
(int)(pcr->pci_base0 &
|
||||
(pcr->pci_base0 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base0 & 0x8) ? " PREFETCHABLE" :"");
|
||||
} else {
|
||||
printf(" BASE0 0x%08x addr 0x%08x %s%s\n",
|
||||
(int)pcr->pci_base0,
|
||||
(int)(pcr->pci_base0 &
|
||||
(pcr->pci_base0 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base0 & 0x1) ? "I/O" : "MEM",
|
||||
((pcr->pci_base0 & 0x9) == 0x8) ? " PREFETCHABLE" :"");
|
||||
}
|
||||
}
|
||||
if ((pcr->pci_base1) && ((pcr->pci_base0 & 0x7) != 0x4)) {
|
||||
if ((pcr->pci_base1 & 0x7) == 0x4) {
|
||||
printf(" BASE1 0x%08x%08x addr 0x%08x%08x MEM%s 64BIT\n",
|
||||
(int)pcr->pci_base2, (int)pcr->pci_base1,
|
||||
(int)pcr->pci_base2,
|
||||
(int)(pcr->pci_base1 &
|
||||
(pcr->pci_base1 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base1 & 0x8) ? " PREFETCHABLE" :"");
|
||||
} else {
|
||||
printf(" BASE1 0x%08x addr 0x%08x %s%s\n",
|
||||
(int)pcr->pci_base1,
|
||||
(int)(pcr->pci_base1 &
|
||||
(pcr->pci_base1 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base1 & 0x1) ? "I/O" : "MEM",
|
||||
((pcr->pci_base1 & 0x9) == 0x8) ? " PREFETCHABLE" :"");
|
||||
}
|
||||
}
|
||||
if ((pcr->pci_base2) && ((pcr->pci_base1 & 0x7) != 0x4)) {
|
||||
if ((pcr->pci_base2 & 0x7) == 0x4) {
|
||||
printf(" BASE2 0x%08x%08x addr 0x%08x%08x MEM%s 64BIT\n",
|
||||
(int)pcr->pci_base3, (int)pcr->pci_base2,
|
||||
(int)pcr->pci_base3,
|
||||
(int)(pcr->pci_base2 &
|
||||
(pcr->pci_base2 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base2 & 0x8) ? " PREFETCHABLE" :"");
|
||||
} else {
|
||||
printf(" BASE2 0x%08x addr 0x%08x %s%s\n",
|
||||
(int)pcr->pci_base2,
|
||||
(int)(pcr->pci_base2 &
|
||||
(pcr->pci_base2 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base2 & 0x1) ? "I/O" : "MEM",
|
||||
((pcr->pci_base2 & 0x9) == 0x8) ? " PREFETCHABLE" :"");
|
||||
}
|
||||
}
|
||||
if ((pcr->pci_base3) && ((pcr->pci_base2 & 0x7) != 0x4)) {
|
||||
if ((pcr->pci_base3 & 0x7) == 0x4) {
|
||||
printf(" BASE3 0x%08x%08x addr 0x%08x%08x MEM%s 64BIT\n",
|
||||
(int)pcr->pci_base4, (int)pcr->pci_base3,
|
||||
(int)pcr->pci_base4,
|
||||
(int)(pcr->pci_base3 &
|
||||
(pcr->pci_base3 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base3 & 0x8) ? " PREFETCHABLE" :"");
|
||||
} else {
|
||||
printf(" BASE3 0x%08x addr 0x%08x %s%s\n",
|
||||
(int)pcr->pci_base3,
|
||||
(int)(pcr->pci_base3 &
|
||||
(pcr->pci_base3 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base3 & 0x1) ? "I/O" : "MEM",
|
||||
((pcr->pci_base3 & 0x9) == 0x8) ? " PREFETCHABLE" :"");
|
||||
}
|
||||
}
|
||||
if ((pcr->pci_base4) && ((pcr->pci_base3 & 0x7) != 0x4)) {
|
||||
if ((pcr->pci_base4 & 0x7) == 0x4) {
|
||||
printf(" BASE4 0x%08x%08x addr 0x%08x%08x MEM%s 64BIT\n",
|
||||
(int)pcr->pci_base5, (int)pcr->pci_base4,
|
||||
(int)pcr->pci_base5,
|
||||
(int)(pcr->pci_base4 &
|
||||
(pcr->pci_base4 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base4 & 0x8) ? " PREFETCHABLE" :"");
|
||||
} else {
|
||||
printf(" BASE4 0x%08x addr 0x%08x %s%s\n",
|
||||
(int)pcr->pci_base4,
|
||||
(int)(pcr->pci_base4 &
|
||||
(pcr->pci_base4 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base4 & 0x1) ? "I/O" : "MEM",
|
||||
((pcr->pci_base4 & 0x9) == 0x8) ? " PREFETCHABLE" :"");
|
||||
}
|
||||
}
|
||||
if ((pcr->pci_base5) && ((pcr->pci_base4 & 0x7) != 0x4)) {
|
||||
printf(" BASE5 0x%08x addr 0x%08x %s%s%s\n",
|
||||
(int)pcr->pci_base5,
|
||||
(int)(pcr->pci_base5 &
|
||||
(pcr->pci_base5 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)),
|
||||
(pcr->pci_base5 & 0x1) ? "I/O" : "MEM",
|
||||
((pcr->pci_base5 & 0x9) == 0x8) ? " PREFETCHABLE" :"",
|
||||
((pcr->pci_base5 & 0x7) == 0x4) ? " 64BIT" : "");
|
||||
}
|
||||
if (pcr->pci_baserom)
|
||||
printf(" BASEROM 0x%08x addr 0x%08x %sdecode-enabled\n",
|
||||
(int)pcr->pci_baserom, (int)(pcr->pci_baserom & 0xFFFF8000),
|
||||
pcr->pci_baserom & 0x1 ? "" : "not-");
|
||||
if (pcr->pci_max_min_ipin_iline)
|
||||
printf(" MAX_LAT 0x%02x MIN_GNT 0x%02x"
|
||||
" INT_PIN 0x%02x INT_LINE 0x%02x\n",
|
||||
pcr->pci_max_lat, pcr->pci_min_gnt,
|
||||
pcr->pci_int_pin, pcr->pci_int_line);
|
||||
if (pcr->pci_user_config)
|
||||
printf(" BYTE_0 0x%02x BYTE_1 0x%02x"
|
||||
" BYTE_2 0x%02x BYTE_3 0x%02x\n",
|
||||
(int)pcr->pci_user_config_0, (int)pcr->pci_user_config_1,
|
||||
(int)pcr->pci_user_config_2, (int)pcr->pci_user_config_3);
|
||||
}
|
||||
|
||||
#define PCI_B_FAST_B_B 0x80
|
||||
#define PCI_B_SB_RESET 0x40
|
||||
#define PCI_B_M_ABORT 0x20
|
||||
#define PCI_B_VGA_EN 0x08
|
||||
#define PCI_B_ISA_EN 0x04
|
||||
#define PCI_B_SERR_EN 0x02
|
||||
#define PCI_B_P_ERR 0x01
|
||||
|
||||
static void
|
||||
print_bridge_pci_class(pciConfigPtr pcr)
|
||||
{
|
||||
printf(" HEADER 0x%02x LATENCY 0x%02x\n",
|
||||
pcr->pci_header_type, pcr->pci_latency_timer);
|
||||
printf(" PRIBUS 0x%02x SECBUS 0x%02x SUBBUS 0x%02x\n",
|
||||
pcr->pci_primary_bus_number, pcr->pci_secondary_bus_number,
|
||||
pcr->pci_subordinate_bus_number);
|
||||
printf(" SECLT 0x%02x SECSTATUS 0x%04x\n",
|
||||
pcr->pci_secondary_latency_timer, pcr->pci_secondary_status);
|
||||
|
||||
if (pcr->pci_io_base || pcr->pci_io_limit ||
|
||||
pcr->pci_upper_io_base || pcr->pci_upper_io_limit) {
|
||||
if (((pcr->pci_io_base & 0x0f) == 0x01) ||
|
||||
((pcr->pci_io_limit & 0x0f) == 0x01)) {
|
||||
printf(" IOBASE 0x%04x%04x IOLIM 0x%04x%04x\n",
|
||||
pcr->pci_upper_io_base, (pcr->pci_io_base & 0x00f0) << 8,
|
||||
pcr->pci_upper_io_limit, (pcr->pci_io_limit << 8) | 0x0fff);
|
||||
} else {
|
||||
printf(" IOBASE 0x%04x IOLIM 0x%04x\n",
|
||||
(pcr->pci_io_base & 0x00f0) << 8,
|
||||
(pcr->pci_io_limit << 8) | 0x0fff);
|
||||
}
|
||||
}
|
||||
|
||||
if (pcr->pci_mem_base || pcr->pci_mem_limit)
|
||||
printf(" NOPREFETCH_MEMBASE 0x%08x MEMLIM 0x%08x\n",
|
||||
(pcr->pci_mem_base & 0x00fff0) << 16,
|
||||
(pcr->pci_mem_limit << 16) | 0x0fffff);
|
||||
|
||||
if (pcr->pci_prefetch_mem_base || pcr->pci_prefetch_mem_limit ||
|
||||
pcr->pci_prefetch_upper_mem_base ||
|
||||
pcr->pci_prefetch_upper_mem_limit) {
|
||||
if (((pcr->pci_prefetch_mem_base & 0x0f) == 0x01) ||
|
||||
((pcr->pci_prefetch_mem_limit & 0x0f) == 0x01)) {
|
||||
printf(" PREFETCH_MEMBASE 0x%08x%08x MEMLIM 0x%08x%08x\n",
|
||||
(int)pcr->pci_prefetch_upper_mem_base,
|
||||
(pcr->pci_prefetch_mem_base & 0x00fff0) << 16,
|
||||
(int)pcr->pci_prefetch_upper_mem_limit,
|
||||
(pcr->pci_prefetch_mem_limit << 16) | 0x0fffff);
|
||||
} else {
|
||||
printf(" PREFETCH_MEMBASE 0x%08x MEMLIM 0x%08x\n",
|
||||
(pcr->pci_prefetch_mem_base & 0x00fff0) << 16,
|
||||
(pcr->pci_prefetch_mem_limit << 16) | 0x0fffff);
|
||||
}
|
||||
}
|
||||
|
||||
printf(" %sFAST_B2B %sSEC_BUS_RST %sM_ABRT %sVGA_EN %sISA_EN"
|
||||
" %sSERR_EN %sPERR_EN\n",
|
||||
(pcr->pci_bridge_control & PCI_B_FAST_B_B) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_SB_RESET) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_M_ABORT) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_VGA_EN) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_ISA_EN) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_SERR_EN) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_P_ERR) ? "" : "NO_");
|
||||
}
|
||||
|
||||
static void
|
||||
print_mach64(pciConfigPtr pcr)
|
||||
{
|
||||
CARD32 sparse_io = 0;
|
||||
|
||||
printf(" CardVendor 0x%04x card 0x%04x\n",
|
||||
pcr->pci_subsys_vendor, pcr->pci_subsys_card);
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class,
|
||||
pcr->pci_prog_if, pcr->pci_rev_id);
|
||||
printf(" BIST 0x%02x HEADER 0x%02x LATENCY 0x%02x CACHE 0x%02x\n",
|
||||
pcr->pci_bist, pcr->pci_header_type, pcr->pci_latency_timer,
|
||||
pcr->pci_cache_line_size);
|
||||
if (pcr->pci_base0)
|
||||
printf(" APBASE 0x%08x addr 0x%08x\n",
|
||||
(int)pcr->pci_base0, (int)(pcr->pci_base0 &
|
||||
(pcr->pci_base0 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)));
|
||||
if (pcr->pci_base1)
|
||||
printf(" BLOCKIO 0x%08x addr 0x%08x\n",
|
||||
(int)pcr->pci_base1, (int)(pcr->pci_base1 &
|
||||
(pcr->pci_base1 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)));
|
||||
if (pcr->pci_base2)
|
||||
printf(" REGBASE 0x%08x addr 0x%08x\n",
|
||||
(int)pcr->pci_base2, (int)(pcr->pci_base2 &
|
||||
(pcr->pci_base2 & 0x1 ? 0xFFFFFFFC : 0xFFFFFFF0)));
|
||||
if (pcr->pci_baserom)
|
||||
printf(" BASEROM 0x%08x addr 0x%08x %sdecode-enabled\n",
|
||||
(int)pcr->pci_baserom, (int)(pcr->pci_baserom & 0xFFFF8000),
|
||||
pcr->pci_baserom & 0x1 ? "" : "not-");
|
||||
if (pcr->pci_max_min_ipin_iline)
|
||||
printf(" MAX_LAT 0x%02x MIN_GNT 0x%02x"
|
||||
" INT_PIN 0x%02x INT_LINE 0x%02x\n",
|
||||
pcr->pci_max_lat, pcr->pci_min_gnt,
|
||||
pcr->pci_int_pin, pcr->pci_int_line);
|
||||
switch (pcr->pci_user_config_0 & 0x03) {
|
||||
case 0:
|
||||
sparse_io = 0x2ec;
|
||||
break;
|
||||
case 1:
|
||||
sparse_io = 0x1cc;
|
||||
break;
|
||||
case 2:
|
||||
sparse_io = 0x1c8;
|
||||
break;
|
||||
}
|
||||
printf(" SPARSEIO 0x%03x %s IO enabled %sable 0x46E8\n",
|
||||
(int)sparse_io, pcr->pci_user_config_0 & 0x04 ? "Block" : "Sparse",
|
||||
pcr->pci_user_config_0 & 0x08 ? "Dis" : "En");
|
||||
}
|
||||
|
||||
static void
|
||||
print_i128(pciConfigPtr pcr)
|
||||
{
|
||||
printf(" CardVendor 0x%04x card 0x%04x\n",
|
||||
pcr->pci_subsys_vendor, pcr->pci_subsys_card);
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class, pcr->pci_prog_if,
|
||||
pcr->pci_rev_id);
|
||||
printf(" BIST 0x%02x HEADER 0x%02x LATENCY 0x%02x CACHE 0x%02x\n",
|
||||
pcr->pci_bist, pcr->pci_header_type, pcr->pci_latency_timer,
|
||||
pcr->pci_cache_line_size);
|
||||
printf(" MW0_AD 0x%08x addr 0x%08x %spre-fetchable\n",
|
||||
(int)pcr->pci_base0, (int)(pcr->pci_base0 & 0xFFC00000),
|
||||
pcr->pci_base0 & 0x8 ? "" : "not-");
|
||||
printf(" MW1_AD 0x%08x addr 0x%08x %spre-fetchable\n",
|
||||
(int)pcr->pci_base1, (int)(pcr->pci_base1 & 0xFFC00000),
|
||||
pcr->pci_base1 & 0x8 ? "" : "not-");
|
||||
printf(" XYW_AD(A) 0x%08x addr 0x%08x\n",
|
||||
(int)pcr->pci_base2, (int)(pcr->pci_base2 & 0xFFC00000));
|
||||
printf(" XYW_AD(B) 0x%08x addr 0x%08x\n",
|
||||
(int)pcr->pci_base3, (int)(pcr->pci_base3 & 0xFFC00000));
|
||||
printf(" RBASE_G 0x%08x addr 0x%08x\n",
|
||||
(int)pcr->pci_base4, (int)(pcr->pci_base4 & 0xFFFF0000));
|
||||
printf(" IO 0x%08x addr 0x%08x\n",
|
||||
(int)pcr->pci_base5, (int)(pcr->pci_base5 & 0xFFFFFF00));
|
||||
printf(" RBASE_E 0x%08x addr 0x%08x %sdecode-enabled\n",
|
||||
(int)pcr->pci_baserom, (int)(pcr->pci_baserom & 0xFFFF8000),
|
||||
pcr->pci_baserom & 0x1 ? "" : "not-");
|
||||
if (pcr->pci_max_min_ipin_iline)
|
||||
printf(" MAX_LAT 0x%02x MIN_GNT 0x%02x"
|
||||
" INT_PIN 0x%02x INT_LINE 0x%02x\n",
|
||||
pcr->pci_max_lat, pcr->pci_min_gnt,
|
||||
pcr->pci_int_pin, pcr->pci_int_line);
|
||||
}
|
||||
|
||||
static void
|
||||
print_dc21050(pciConfigPtr pcr)
|
||||
{
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class, pcr->pci_prog_if,
|
||||
pcr->pci_rev_id);
|
||||
printf(" BIST 0x%02x HEADER 0x%02x LATENCY 0x%02x CACHE 0x%02x\n",
|
||||
pcr->pci_bist, pcr->pci_header_type, pcr->pci_latency_timer,
|
||||
pcr->pci_cache_line_size);
|
||||
printf(" PRIBUS 0x%02x SECBUS 0x%02x SUBBUS 0x%02x SECLT 0x%02x\n",
|
||||
pcr->pci_primary_bus_number, pcr->pci_secondary_bus_number,
|
||||
pcr->pci_subordinate_bus_number, pcr->pci_secondary_latency_timer);
|
||||
printf(" IOBASE 0x%02x IOLIM 0x%02x SECSTATUS 0x%04x\n",
|
||||
pcr->pci_io_base << 8, (pcr->pci_io_limit << 8) | 0xfff,
|
||||
pcr->pci_secondary_status);
|
||||
printf(" NOPREFETCH_MEMBASE 0x%08x MEMLIM 0x%08x\n",
|
||||
pcr->pci_mem_base << 16, (pcr->pci_mem_limit << 16) | 0xfffff);
|
||||
printf(" PREFETCH_MEMBASE 0x%08x MEMLIM 0x%08x\n",
|
||||
pcr->pci_prefetch_mem_base << 16,
|
||||
(pcr->pci_prefetch_mem_limit << 16) | 0xfffff);
|
||||
printf(" RBASE_E 0x%08x addr 0x%08x %sdecode-enabled\n",
|
||||
(int)pcr->pci_baserom, (int)(pcr->pci_baserom & 0xFFFF8000),
|
||||
pcr->pci_baserom & 0x1 ? "" : "not-");
|
||||
if (pcr->pci_max_min_ipin_iline)
|
||||
printf(" MAX_LAT 0x%02x MIN_GNT 0x%02x"
|
||||
" INT_PIN 0x%02x INT_LINE 0x%02x\n",
|
||||
pcr->pci_max_lat, pcr->pci_min_gnt,
|
||||
pcr->pci_int_pin, pcr->pci_int_line);
|
||||
}
|
||||
|
||||
static void
|
||||
print_simba(pciConfigPtr pcr)
|
||||
{
|
||||
int i;
|
||||
CARD8 io, mem;
|
||||
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class, pcr->pci_prog_if,
|
||||
pcr->pci_rev_id);
|
||||
printf(" HEADER 0x%02x LATENCY 0x%02x CACHE 0x%02x\n",
|
||||
pcr->pci_header_type, pcr->pci_latency_timer,
|
||||
pcr->pci_cache_line_size);
|
||||
printf(" PRIBUS 0x%02x SECBUS 0x%02x SUBBUS 0x%02x SECLT 0x%02x\n",
|
||||
pcr->pci_primary_bus_number, pcr->pci_secondary_bus_number,
|
||||
pcr->pci_subordinate_bus_number, pcr->pci_secondary_latency_timer);
|
||||
printf(" SECSTATUS 0x%04x\n",
|
||||
pcr->pci_secondary_status);
|
||||
printf(" %sFAST_B2B %sSEC_BUS_RST %sM_ABRT %sVGA_EN %sISA_EN"
|
||||
" %sSERR_EN %sPERR_EN\n",
|
||||
(pcr->pci_bridge_control & PCI_B_FAST_B_B) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_SB_RESET) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_M_ABORT) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_VGA_EN) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_ISA_EN) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_SERR_EN) ? "" : "NO_",
|
||||
(pcr->pci_bridge_control & PCI_B_P_ERR) ? "" : "NO_");
|
||||
printf(" TICK 0x%08lx SECCNTL 0x%02x\n", (long)
|
||||
pciReadLong(pcr->tag, 0x00b0), pciReadByte(pcr->tag, 0x00dd));
|
||||
printf(" MASTER RETRIES: PRIMARY 0x%02x, SECONDARY 0x%02x\n",
|
||||
pciReadByte(pcr->tag, 0x00c0), pciReadByte(pcr->tag, 0x00dc));
|
||||
printf(" TARGET RETRIES: PIO 0x%02x, DMA 0x%02x\n",
|
||||
pciReadByte(pcr->tag, 0x00d8), pciReadByte(pcr->tag, 0x00da));
|
||||
printf(" TARGET LATENCY: PIO 0x%02x, DMA 0x%02x\n",
|
||||
pciReadByte(pcr->tag, 0x00d9), pciReadByte(pcr->tag, 0x00db));
|
||||
printf(" DMA AFSR 0x%08lx%08lx AFAR 0x%08lx%08lx\n",
|
||||
(long)pciReadLong(pcr->tag, 0x00cc),
|
||||
(long)pciReadLong(pcr->tag, 0x00c8),
|
||||
(long)pciReadLong(pcr->tag, 0x00d4),
|
||||
(long)pciReadLong(pcr->tag, 0x00d0));
|
||||
printf(" PIO AFSR 0x%08lx%08lx AFAR 0x%08lx%08lx\n",
|
||||
(long)pciReadLong(pcr->tag, 0x00ec),
|
||||
(long)pciReadLong(pcr->tag, 0x00e8),
|
||||
(long)pciReadLong(pcr->tag, 0x00f4),
|
||||
(long)pciReadLong(pcr->tag, 0x00f0));
|
||||
printf(" PCI CNTL 0x%08lx%08lx DIAG 0x%08lx%08lx\n",
|
||||
(long)pciReadLong(pcr->tag, 0x00e4),
|
||||
(long)pciReadLong(pcr->tag, 0x00e0),
|
||||
(long)pciReadLong(pcr->tag, 0x00fc),
|
||||
(long)pciReadLong(pcr->tag, 0x00f8));
|
||||
printf(" MAPS: I/O 0x%02x, MEM 0x%02x\n",
|
||||
(io = pciReadByte(pcr->tag, 0x00de)),
|
||||
(mem = pciReadByte(pcr->tag, 0x00df)));
|
||||
for (i = 0; i < 8; i++)
|
||||
if (io & (1 << i))
|
||||
printf(" BUS I/O 0x%06x-0x%06x\n", i << 21, ((i + 1) << 21) - 1);
|
||||
for (i = 0; i < 8; i++)
|
||||
if (mem & (1 << i))
|
||||
printf(" BUS MEM 0x%08x-0x%08x\n", i << 29, ((i + 1) << 29) - 1);
|
||||
}
|
||||
|
||||
static int cbn_460gx = -1;
|
||||
|
||||
static void
|
||||
print_460gx_sac(pciConfigPtr pcr)
|
||||
{
|
||||
CARD32 tmp;
|
||||
|
||||
/* Print generalities */
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class, pcr->pci_prog_if,
|
||||
pcr->pci_rev_id);
|
||||
|
||||
tmp = pcr->pci_user_config;
|
||||
pcr->pci_user_config = 0;
|
||||
print_default_class(pcr);
|
||||
pcr->pci_user_config = tmp;
|
||||
|
||||
/* Only print what XFree86 might be interested in */
|
||||
if (pcr->busnum == 0) {
|
||||
if ((pcr->devnum != 0x10) || (pcr->funcnum != 0))
|
||||
return;
|
||||
|
||||
/* Get Chipset Bus Number */
|
||||
cbn_460gx = (unsigned int)pciReadByte(pcr->tag, 0x0040);
|
||||
printf(" CBN 0x%02x CBUSES 0x%02x\n",
|
||||
cbn_460gx, pciReadByte(pcr->tag, 0x0044));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ((pcr->busnum != cbn_460gx) || (pcr->funcnum != 0))
|
||||
return;
|
||||
|
||||
switch (pcr->devnum) {
|
||||
case 0:
|
||||
printf(" F16NUM 0x%02x F16CPL 0x%02x DEVNPRES 0x%08lx\n",
|
||||
pciReadByte(pcr->tag, 0x0060), pciReadByte(pcr->tag, 0x0078),
|
||||
(long)pciReadLong(pcr->tag, 0x0070));
|
||||
|
||||
return;
|
||||
|
||||
case 0x10:
|
||||
printf(" TOM 0x%04x IORD 0x%04x\n",
|
||||
pciReadWord(pcr->tag, 0x0050), pciReadWord(pcr->tag, 0x008E));
|
||||
/* Fall through */
|
||||
|
||||
case 0x11: case 0x12: case 0x13:
|
||||
case 0x14: case 0x15: case 0x16: case 0x17:
|
||||
printf(" BUSNO 0x%02x SUBNO 0x%02x\n",
|
||||
pciReadByte(pcr->tag, 0x0048), pciReadByte(pcr->tag, 0x0049));
|
||||
printf(" VGASE 0x%02x PCIS 0x%02x IOR 0x%02x\n",
|
||||
pciReadByte(pcr->tag, 0x0080), pciReadByte(pcr->tag, 0x0084),
|
||||
pciReadByte(pcr->tag, 0x008C));
|
||||
/* Fall through */
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_460gx_pxb(pciConfigPtr pcr)
|
||||
{
|
||||
CARD32 tmp;
|
||||
|
||||
/* Print generalities */
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class, pcr->pci_prog_if,
|
||||
pcr->pci_rev_id);
|
||||
|
||||
tmp = pcr->pci_user_config;
|
||||
pcr->pci_user_config = 0;
|
||||
print_default_class(pcr);
|
||||
pcr->pci_user_config = tmp;
|
||||
|
||||
/* Only print what XFree86 might be interested in */
|
||||
printf(" ERRCMD 0x%02x GAPEN 0x%02x\n",
|
||||
pciReadByte(pcr->tag, 0x0046), pciReadByte(pcr->tag, 0x0060));
|
||||
}
|
||||
|
||||
static void
|
||||
print_460gx_gxb(pciConfigPtr pcr)
|
||||
{
|
||||
CARD32 tmp;
|
||||
|
||||
/* Print generalities */
|
||||
printf(" STATUS 0x%04x COMMAND 0x%04x\n",
|
||||
pcr->pci_status, pcr->pci_command);
|
||||
printf(" CLASS 0x%02x 0x%02x 0x%02x REVISION 0x%02x\n",
|
||||
pcr->pci_base_class, pcr->pci_sub_class, pcr->pci_prog_if,
|
||||
pcr->pci_rev_id);
|
||||
|
||||
tmp = pcr->pci_user_config;
|
||||
pcr->pci_user_config = 0;
|
||||
print_default_class(pcr);
|
||||
pcr->pci_user_config = tmp;
|
||||
|
||||
/* Only print what XFree86 might be interested in */
|
||||
printf(" BAPBASE 0x%08lx%08lx AGPSIZ 0x%02x VGAGE 0x%02x\n",
|
||||
(long)pciReadLong(pcr->tag, 0x009C),
|
||||
(long)pciReadLong(pcr->tag, 0x0098),
|
||||
pciReadByte(pcr->tag, 0x00A2), pciReadByte(pcr->tag, 0x0060));
|
||||
}
|
||||
|
||||
#include "xf86getpagesize.c"
|
|
@ -1,42 +0,0 @@
|
|||
.\" $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.man,v 3.2 2000/12/11 20:18:45 dawes Exp $
|
||||
.TH SCANPCI 1 __vendorversion__
|
||||
.SH NAME
|
||||
scanpci - scan/probe PCI buses
|
||||
.SH SYNOPSIS
|
||||
.B scanpci
|
||||
.RB [ \-v12OfV ]
|
||||
.SH DESCRIPTION
|
||||
.I Scanpci
|
||||
is a utility that can be used to scan PCI buses and report information
|
||||
about the configuration space settings for each PCI device.
|
||||
On most platforms,
|
||||
.I scanpci
|
||||
can only be run by the root user.
|
||||
.SH OPTIONS
|
||||
.TP 8
|
||||
.B \-v
|
||||
Print the configuration space information for each device in a verbose
|
||||
format. Without this option, only a brief description is printed for
|
||||
each device.
|
||||
.TP 8
|
||||
.B \-1
|
||||
Use PCI config type 1.
|
||||
.TP 8
|
||||
.B \-2
|
||||
Use PCI config type 2.
|
||||
.TP 8
|
||||
.B \-f
|
||||
Used in conjunction with the above two options, this forces the specified
|
||||
configuration type to be used for config space access.
|
||||
.TP 8
|
||||
.B \-O
|
||||
Use the OS's PCI config space access mechanism to access the PCI config
|
||||
space (when available).
|
||||
.TP 8
|
||||
.BI "\-V " n
|
||||
Set the verbosity level to
|
||||
.I n
|
||||
for the internal PCI scanner. This is primarily for debugging use.
|
||||
.SH "SEE ALSO"
|
||||
pcitweak(1)
|
||||
.SH AUTHORS
|
Loading…
Reference in New Issue
Block a user